]> git.saurik.com Git - apple/security.git/blobdiff - Security/libsecurity_cryptkit/lib/giantPort_PPC_Gnu.h
Security-57031.1.35.tar.gz
[apple/security.git] / Security / libsecurity_cryptkit / lib / giantPort_PPC_Gnu.h
diff --git a/Security/libsecurity_cryptkit/lib/giantPort_PPC_Gnu.h b/Security/libsecurity_cryptkit/lib/giantPort_PPC_Gnu.h
new file mode 100644 (file)
index 0000000..3676da9
--- /dev/null
@@ -0,0 +1,83 @@
+/*
+ * giantPort_PPC_Gnu.h - giant definitions, PPC/GNU version.
+ */
+
+#ifndef        _CK_NSGIANT_PORT_PPC_GNU_H_
+#define _CK_NSGIANT_PORT_PPC_GNU_H_
+
+#include "feeDebug.h"
+#include "platform.h"
+#include "giantIntegers.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* define this true to disable this module and use generic C versions instead */
+#define PPC_GIANT_PORT_INLINE  0
+
+#if    PPC_GIANT_PORT_INLINE
+
+#include "giantPort_Generic.h"
+
+#else  // PPC_GIANT_PORT_INLINE
+
+/*
+ * Multiple-precision arithmetic routines/macros implemented in 
+ * giantPort_PPC_Gnu.s
+ */
+
+/*
+ * Add two digits, return sum. Carry bit returned as an out parameter.
+ */
+extern giantDigit giantAddDigits(
+       giantDigit dig1,
+       giantDigit dig2,
+       giantDigit *carry);                     /* RETURNED, 0 or 1 */
+
+/*
+ * Add a single digit value to a double digit accumulator in place.
+ * Carry out of the MSD of the accumulator is not handled.
+ */
+void giantAddDouble(
+       giantDigit *accLow,                     /* IN/OUT */
+       giantDigit *accHigh,                    /* IN/OUT */
+       giantDigit val);
+
+
+/*
+ * Subtract a - b, return difference. Borrow bit returned as an out parameter.
+ */
+giantDigit giantSubDigits(
+       giantDigit a,
+       giantDigit b,
+       giantDigit *borrow);                    /* RETURNED, 0 or 1 */
+
+
+/*
+ * Multiply two digits, return two digits.
+ */
+void giantMulDigits(
+       giantDigit      dig1,
+       giantDigit      dig2,
+       giantDigit      *lowProduct,            /* RETURNED, low digit */
+       giantDigit      *hiProduct);            /* RETURNED, high digit */
+
+/*
+ * Multiply a vector of giantDigits, candVector, by a single giantDigit,
+ * plierDigit, adding results into prodVector. Returns m.s. digit from
+ * final multiply; only candLength digits of *prodVector will be written.
+ */
+giantDigit VectorMultiply(
+       giantDigit plierDigit,
+       giantDigit *candVector,
+       unsigned candLength,
+       giantDigit *prodVector);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* !PPC_GIANT_PORT_INLINE */
+
+#endif /*_CK_NSGIANT_PORT_PPC_GNU_H_*/