aboutsummaryrefslogtreecommitdiff
path: root/sw/cryptech.h
diff options
context:
space:
mode:
Diffstat (limited to 'sw/cryptech.h')
-rw-r--r--sw/cryptech.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/sw/cryptech.h b/sw/cryptech.h
index 3b9fa14..13088b1 100644
--- a/sw/cryptech.h
+++ b/sw/cryptech.h
@@ -421,6 +421,37 @@ in order to map it into a 16-bit address space.
#define MODEXP_NAME1 "xp "
#define MODEXP_VERSION "0.51"
+// Experimental ModexpS6 core.
+// XXX AT THE SAME CORE PREFIX - YOU CAN'T HAVE BOTH AT THE SAME TIME
+#define MODEXPS6_ADDR_BASE SEGMENT_OFFSET_MATH + (0x00 * CORE_SIZE)
+#define MODEXPS6_ADDR_NAME0 MODEXPS6_ADDR_BASE + ADDR_NAME0
+#define MODEXPS6_ADDR_NAME1 MODEXPS6_ADDR_BASE + ADDR_NAME1
+#define MODEXPS6_ADDR_VERSION MODEXPS6_ADDR_BASE + ADDR_VERSION
+#define MODEXPS6_ADDR_CTRL MODEXPS6_ADDR_BASE + ADDR_CTRL
+#define MODEXPS6_CTRL_INIT_BIT 1
+#define MODEXPS6_CTRL_NEXT_BIT 2
+#define MODEXPS6_ADDR_STATUS MODEXPS6_ADDR_BASE + ADDR_STATUS
+
+/* 4096-bit operands are stored as 128 words of 32 bits */
+#define MODEXPS6_OPERAND_SIZE 4096/32
+
+#define MODEXPS6_ADDR_REGISTERS MODEXPS6_ADDR_BASE + 0*MODEXPS6_OPERAND_SIZE
+#define MODEXPS6_ADDR_OPERANDS MODEXPS6_ADDR_BASE + 4*MODEXPS6_OPERAND_SIZE
+
+#define MODEXPS6_ADDR_MODE MODEXPS6_ADDR_REGISTERS + 0x10
+#define MODEXPS6_ADDR_MODULUS_WIDTH MODEXPS6_ADDR_REGISTERS + 0x11
+#define MODEXPS6_ADDR_EXPONENT_WIDTH MODEXPS6_ADDR_REGISTERS + 0x12
+
+/* addresses of block memories for operands */
+#define MODEXPS6_ADDR_MODULUS MODEXPS6_ADDR_OPERANDS + 0*MODEXPS6_OPERAND_SIZE
+#define MODEXPS6_ADDR_MESSAGE MODEXPS6_ADDR_OPERANDS + 1*MODEXPS6_OPERAND_SIZE
+#define MODEXPS6_ADDR_EXPONENT MODEXPS6_ADDR_OPERANDS + 2*MODEXPS6_OPERAND_SIZE
+#define MODEXPS6_ADDR_RESULT MODEXPS6_ADDR_OPERANDS + 3*MODEXPS6_OPERAND_SIZE
+
+#define MODEXPS6_NAME0 "mode"
+#define MODEXPS6_NAME1 "xps6"
+#define MODEXPS6_VERSION "0.10"
+
//------------------------------------------------------------------
// Test case public functions