~mdw
/
catacomb
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
symm/rijndael-x86ish-aesni.S: Fix conflict in 32-bit register allocation.
[catacomb]
/
symm
/
rijndael-x86ish-aesni.S
diff --git
a/symm/rijndael-x86ish-aesni.S
b/symm/rijndael-x86ish-aesni.S
index
3dcdfc5
..
c22d23a
100644
(file)
--- a/
symm/rijndael-x86ish-aesni.S
+++ b/
symm/rijndael-x86ish-aesni.S
@@
-34,14
+34,6
@@
.globl F(rijndael_rcon)
///--------------------------------------------------------------------------
.globl F(rijndael_rcon)
///--------------------------------------------------------------------------
-/// Local utilities.
-
-// Magic constants for shuffling.
-#define ROTL 0x93
-#define ROT2 0x4e
-#define ROTR 0x39
-
-///--------------------------------------------------------------------------
/// Main code.
.arch .aes
/// Main code.
.arch .aes
@@
-165,7
+157,10
@@
FUNC(rijndael_setup_x86ish_aesni)
// We'll need the index registers, which belong to the caller in this
// ABI.
push rsi
// We'll need the index registers, which belong to the caller in this
// ABI.
push rsi
+ .seh_pushreg rsi
push rdi
push rdi
+ .seh_pushreg rdi
+ .seh_endprologue
// Move arguments to more useful places.
mov SI, r8 // key material
// Move arguments to more useful places.
mov SI, r8 // key material
@@
-229,16
+224,16
@@
FUNC(rijndael_setup_x86ish_aesni)
// Fourth word of the cycle, and seven or eight words of key. Do a
// byte substitution.
movd xmm0, eax
// Fourth word of the cycle, and seven or eight words of key. Do a
// byte substitution.
movd xmm0, eax
- pshufd xmm0, xmm0,
ROTL
+ pshufd xmm0, xmm0,
SHUF(2, 1, 0, 3)
aeskeygenassist xmm1, xmm0, 0
movd eax, xmm1
jmp 2f
// First word of the cycle. This is the complicated piece.
1: movd xmm0, eax
aeskeygenassist xmm1, xmm0, 0
movd eax, xmm1
jmp 2f
// First word of the cycle. This is the complicated piece.
1: movd xmm0, eax
- pshufd xmm0, xmm0,
ROTR
+ pshufd xmm0, xmm0,
SHUF(0, 3, 2, 1)
aeskeygenassist xmm1, xmm0, 0
aeskeygenassist xmm1, xmm0, 0
- pshufd xmm1, xmm1,
ROTL
+ pshufd xmm1, xmm1,
SHUF(2, 1, 0, 3)
movd eax, xmm1
xor al, [RCON]
inc RCON
movd eax, xmm1
xor al, [RCON]
inc RCON
@@
-395,10
+390,10
@@
ENDFUNC
// Arguments come in on the stack, and need to be collected. We
// don't have a shortage of registers.
// Arguments come in on the stack, and need to be collected. We
// don't have a shortage of registers.
-# define K e
c
x
+# define K e
a
x
# define SRC edx
# define DST edx
# define SRC edx
# define DST edx
-# define NR e
a
x
+# define NR e
c
x
mov K, [esp + 4]
mov SRC, [esp + 8]
mov K, [esp + 4]
mov SRC, [esp + 8]
@@
-420,6
+415,7
@@
ENDFUNC
# define SRC rdx
# define DST r8
# define NR eax
# define SRC rdx
# define DST r8
# define NR eax
+ .seh_endprologue
#endif
// Find the magic endianness-swapping table.
#endif
// Find the magic endianness-swapping table.