aboutsummaryrefslogtreecommitdiff
path: root/ecdsa_fpga_microcode.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ecdsa_fpga_microcode.cpp')
-rw-r--r--ecdsa_fpga_microcode.cpp49
1 files changed, 24 insertions, 25 deletions
diff --git a/ecdsa_fpga_microcode.cpp b/ecdsa_fpga_microcode.cpp
index f02dc8a..2171ac2 100644
--- a/ecdsa_fpga_microcode.cpp
+++ b/ecdsa_fpga_microcode.cpp
@@ -59,10 +59,8 @@ FPGA_BUFFER BUF_HI[ECDSA_UOP_OPERAND_COUNT];
//------------------------------------------------------------------------------
// Global Flags
//------------------------------------------------------------------------------
-bool uop_flagz_sz;
-bool uop_flagz_rz;
-bool uop_flagz_e;
-bool uop_flagz_f;
+bool uop_flagz_r0z;
+bool uop_flagz_r1z;
//------------------------------------------------------------------------------
@@ -96,17 +94,11 @@ void uop_cmpz(UOP_BANK src, int s_op)
switch (s_op)
{
- case CYCLE_SZ:
- uop_flagz_sz = flagz;
+ case CYCLE_R0Z:
+ uop_flagz_r0z = flagz;
break;
- case CYCLE_RZ:
- uop_flagz_rz = flagz;
- break;
- case CYCLE_E:
- uop_flagz_e = flagz;
- break;
- case CYCLE_F:
- uop_flagz_f = flagz;
+ case CYCLE_R1Z:
+ uop_flagz_r1z = flagz;
break;
}
}
@@ -141,6 +133,13 @@ void uop_calc(UOP_MATH math,
if (math == ADD) fpga_modular_add(s_ptr1, s_ptr2, d_ptr);
if (math == SUB) fpga_modular_sub(s_ptr1, s_ptr2, d_ptr);
if (math == MUL) fpga_modular_mul(s_ptr1, s_ptr2, d_ptr);
+
+#ifdef DUMP_UOP_OUTPUTS
+ if (math == ADD) dump_uop_output("ADD", d_ptr);
+ if (math == SUB) dump_uop_output("SUB", d_ptr);
+ if (math == MUL) dump_uop_output("MUL", d_ptr);
+#endif
+
}
@@ -201,16 +200,16 @@ void fpga_modular_inv23_p256_microcode()
// first obtain intermediate helper quantities (X#)
// mirror X1 to HI bank (don't waste time copying to X1, just use RZ)
- uop_move(BANK_LO, CYCLE_RZ, BANK_HI, CYCLE_RZ);
+ uop_move(BANK_LO, CYCLE_R0Z, BANK_HI, CYCLE_R0Z);
// compute X2 and mirror to the other bank
- uop_calc(MUL, BANK_LO, CYCLE_RZ, CYCLE_RZ, BANK_HI, INVERT_R1);
- uop_calc(MUL, BANK_HI, CYCLE_RZ, INVERT_R1, BANK_LO, INVERT_X2);
+ uop_calc(MUL, BANK_LO, CYCLE_R0Z, CYCLE_R0Z, BANK_HI, INVERT_R1);
+ uop_calc(MUL, BANK_HI, CYCLE_R0Z, INVERT_R1, BANK_LO, INVERT_X2);
uop_move(BANK_LO, INVERT_X2, BANK_HI, INVERT_X2);
// compute X3 and mirror to the other bank
uop_calc(MUL, BANK_LO, INVERT_X2, INVERT_X2, BANK_HI, INVERT_R1);
- uop_calc(MUL, BANK_HI, INVERT_R1, CYCLE_RZ, BANK_LO, INVERT_X3);
+ uop_calc(MUL, BANK_HI, INVERT_R1, CYCLE_R0Z, BANK_LO, INVERT_X3);
uop_move(BANK_LO, INVERT_X3, BANK_HI, INVERT_X3);
// compute X6 (stored in the lower bank)
@@ -257,7 +256,7 @@ void fpga_modular_inv23_p256_microcode()
uop_calc_if_odd (MUL, BANK_LO, INVERT_R2, INVERT_R2, BANK_HI, INVERT_R1);
uop_repeat();
- uop_calc(MUL, BANK_LO, INVERT_R2, CYCLE_RZ, BANK_HI, INVERT_R1);
+ uop_calc(MUL, BANK_LO, INVERT_R2, CYCLE_R0Z, BANK_HI, INVERT_R1);
uop_cycle(128);
uop_calc_if_even(MUL, BANK_HI, INVERT_R1, INVERT_R1, BANK_LO, INVERT_R2);
@@ -287,7 +286,7 @@ void fpga_modular_inv23_p256_microcode()
// A3 ends up in the upper bank by itself
uop_calc(MUL, BANK_HI, INVERT_A2, INVERT_A2, BANK_LO, INVERT_R1);
- uop_calc(MUL, BANK_LO, INVERT_R1, CYCLE_RZ, BANK_HI, INVERT_A3);
+ uop_calc(MUL, BANK_LO, INVERT_R1, CYCLE_R0Z, BANK_HI, INVERT_A3);
/* END_MICROCODE */
}
@@ -322,16 +321,16 @@ void fpga_modular_inv23_p384_microcode()
// first obtain intermediate helper quantities (X#)
// mirror X1 to HI bank (don't waste time copying to X1, just use RZ)
- uop_move(BANK_LO, CYCLE_RZ, BANK_HI, CYCLE_RZ);
+ uop_move(BANK_LO, CYCLE_R0Z, BANK_HI, CYCLE_R0Z);
// compute X2 and mirror to the other bank
- uop_calc(MUL, BANK_LO, CYCLE_RZ, CYCLE_RZ, BANK_HI, INVERT_R1);
- uop_calc(MUL, BANK_HI, CYCLE_RZ, INVERT_R1, BANK_LO, INVERT_X2);
+ uop_calc(MUL, BANK_LO, CYCLE_R0Z, CYCLE_R0Z, BANK_HI, INVERT_R1);
+ uop_calc(MUL, BANK_HI, CYCLE_R0Z, INVERT_R1, BANK_LO, INVERT_X2);
uop_move(BANK_LO, INVERT_X2, BANK_HI, INVERT_X2);
// compute X3 and mirror to the other bank
uop_calc(MUL, BANK_LO, INVERT_X2, INVERT_X2, BANK_HI, INVERT_R1);
- uop_calc(MUL, BANK_HI, INVERT_R1, CYCLE_RZ, BANK_LO, INVERT_X3);
+ uop_calc(MUL, BANK_HI, INVERT_R1, CYCLE_R0Z, BANK_LO, INVERT_X3);
uop_move(BANK_LO, INVERT_X3, BANK_HI, INVERT_X3);
// compute X6 (stored in the lower bank)
@@ -421,7 +420,7 @@ void fpga_modular_inv23_p384_microcode()
// A3 ends up in the upper bank by itself
uop_calc(MUL, BANK_HI, INVERT_A2, INVERT_A2, BANK_LO, INVERT_R1);
- uop_calc(MUL, BANK_LO, INVERT_R1, CYCLE_RZ, BANK_HI, INVERT_A3);
+ uop_calc(MUL, BANK_LO, INVERT_R1, CYCLE_R0Z, BANK_HI, INVERT_A3);
/* END_MICROCODE */
}