X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb/blobdiff_plain/1a517bb3785891ff6940c73af7c5a136d0250ebf..08bbf9abbe9c665cc27cb6d8e3792b60731c1195:/symm/rijndael-arm-crypto.S diff --git a/symm/rijndael-arm-crypto.S b/symm/rijndael-arm-crypto.S index 4d7312d4..8a5484c8 100644 --- a/symm/rijndael-arm-crypto.S +++ b/symm/rijndael-arm-crypto.S @@ -70,7 +70,7 @@ FUNC(rijndael_setup_arm_crypto) // r2 = pointer to key material // r3 = key size in words - stmfd sp!, {r4-r9, r14} + pushreg r4-r9, r14 // The initial round key material is taken directly from the input // key, so copy it over. Unfortunately, the key material is not @@ -104,7 +104,7 @@ FUNC(rijndael_setup_arm_crypto) mla r2, r1, r7, r1 // total key size in words leaextq r5, rijndael_rcon // round constants sub r8, r2, r3 // minus what we've copied already - veor q1, q1 // all-zero register for the key + vmov.i32 q1, #0 // all-zero register for the key add r8, r9, r8, lsl #2 // limit of the key buffer mov r12, #0 // position in current cycle @@ -128,7 +128,6 @@ FUNC(rijndael_setup_arm_crypto) // First word of the cycle. Byte substitution, rotation, and round // constant. 1: ldrb r14, [r5], #1 // next round constant - ldr r6, [r9, -r3, lsl #2] vdup.32 q0, r4 aese.8 q0, q1 // effectively, just SubBytes vmov.32 r4, d0[0] @@ -209,7 +208,7 @@ FUNC(rijndael_setup_arm_crypto) bl endswap_block // All done. -9: ldmfd sp!, {r4-r9, pc} +9: popreg r4-r9, pc ENDFUNC