X-Git-Url: https://git.distorted.org.uk/~mdw/catacomb/blobdiff_plain/43ea7558955ca453d4687c62d12efcb585124e8a..e13318db101cd40f5b96a76f0810a079714db10d:/symm/rijndael-arm-crypto.S diff --git a/symm/rijndael-arm-crypto.S b/symm/rijndael-arm-crypto.S index 5ca516e3..23f8295b 100644 --- a/symm/rijndael-arm-crypto.S +++ b/symm/rijndael-arm-crypto.S @@ -30,8 +30,8 @@ #include "config.h" #include "asm-common.h" - .globl F(abort) - .globl F(rijndael_rcon) + .extern F(abort) + .extern F(rijndael_rcon) ///-------------------------------------------------------------------------- /// Main code. @@ -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 @@ -209,11 +209,14 @@ FUNC(rijndael_setup_arm_crypto) bl endswap_block // All done. -9: ldmfd sp!, {r4-r9, pc} +9: popreg r4-r9, pc -endswap_block: +ENDFUNC + +INTFUNC(endswap_block) // End-swap R2 words starting at R1. R1 is clobbered; R2 is not. // It's OK to work in 16-byte chunks. + mov r4, r2 0: vldmia r1, {d0, d1} vrev32.8 q0, q0