From: Niels Möller Date: Sat, 13 Sep 2008 20:16:46 +0000 (+0200) Subject: Fixes to get through assembler. X-Git-Tag: nettle_2.0_release_20090608~61 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0da001a868b6c30ff37ce4a03ebb7441a08380c8;p=thirdparty%2Fnettle.git Fixes to get through assembler. Rev: nettle/x86_64/aes-encrypt-internal.asm:1.4 Rev: nettle/x86_64/aes.m4:1.3 --- diff --git a/x86_64/aes-encrypt-internal.asm b/x86_64/aes-encrypt-internal.asm index d4d0ecd1..19630ca9 100644 --- a/x86_64/aes-encrypt-internal.asm +++ b/x86_64/aes-encrypt-internal.asm @@ -18,9 +18,7 @@ C along with the nettle library; see the file COPYING.LIB. If not, write to C the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, C MA 02111-1307, USA. -C Use same macros as for plain x86. FIXME: AES_SUBST_BYTE uses -C hardcoded registers. -include_src() +include_src() C Register usage: @@ -47,9 +45,9 @@ define(, <%r15d>) C Put the outer loop counter on the stack, and reuse the LENGTH C register as a temporary. -define(, <(%esp)>) -define(,<%edx>) -define(,<%rdx>) +define(, <(%rsp)>) +define(,<%rdx>) + .file "aes-encrypt-internal.asm" C _aes_encrypt(struct aes_context *ctx, @@ -76,41 +74,41 @@ PROLOGUE(_nettle_aes_encrypt) shrl $4, LENGTH movl LENGTH, FRAME_COUNT .Lblock_loop: - movl CTX,KEY + mov CTX,KEY AES_LOAD(SA, SB, SC, SD, SRC, KEY) - addl $16, SRC C Increment src pointer + add $16, SRC C Increment src pointer C get number of rounds to do from ctx struct movl AES_NROUNDS (CTX), COUNT shrl $1, COUNT subl $1, COUNT - addl $16,KEY C point to next key + add $16,KEY C point to next key ALIGN(4) .Lround_loop: - AES_ROUND(TABLE, SA,SB,SC,SD, TA, TMPPTR) + AES_ROUND(TABLE, SA,SB,SC,SD, TA, TMP) xorl (KEY), TA - AES_ROUND(TABLE, SB,SC,SD,SA, TB, TMPPTR) + AES_ROUND(TABLE, SB,SC,SD,SA, TB, TMP) xorl 4(KEY),TB - AES_ROUND(TABLE, SC,SD,SA,SB, TC, TMPPTR) + AES_ROUND(TABLE, SC,SD,SA,SB, TC, TMP) xorl 8(KEY),TC - AES_ROUND(TABLE, SD,SA,SB,SC, TD, TMPPTR) + AES_ROUND(TABLE, SD,SA,SB,SC, TD, TMP) xorl 12(KEY),TD - AES_ROUND(TABLE, TA,TB,TC,TD, SA, TMPPTR) + AES_ROUND(TABLE, TA,TB,TC,TD, SA, TMP) xorl 16(KEY), SA - AES_ROUND(TABLE, TB,TC,TD,TA, SB, TMPPTR) + AES_ROUND(TABLE, TB,TC,TD,TA, SB, TMP) xorl 20(KEY),SB - AES_ROUND(TABLE, TC,TD,TA,TB, SC, TMPPTR) + AES_ROUND(TABLE, TC,TD,TA,TB, SC, TMP) xorl 24(KEY),SC - AES_ROUND(TABLE, TD,TA,TB,TC, SD, TMPPTR) + AES_ROUND(TABLE, TD,TA,TB,TC, SD, TMP) xorl 28(KEY),SD addl $32,KEY C point to next key @@ -127,7 +125,7 @@ PROLOGUE(_nettle_aes_encrypt) C S-box substitution mov $3, COUNT .Lsubst: - AES_SUBST_BYTE(TA,TB,TC,TD, TABLE, TMPPTR) + AES_SUBST_BYTE(TA,TB,TC,TD, TABLE, TMP) decl COUNT jnz .Lsubst @@ -135,7 +133,7 @@ PROLOGUE(_nettle_aes_encrypt) C Add last subkey, and store encrypted data AES_STORE(TA,TB,TC,TD, KEY, DST) - addl $16, DST + add $16, DST decl FRAME_COUNT jnz .Lblock_loop diff --git a/x86_64/aes.m4 b/x86_64/aes.m4 index f9a85de5..8edf6aa6 100644 --- a/x86_64/aes.m4 +++ b/x86_64/aes.m4 @@ -70,34 +70,34 @@ define(, < dnl AES_ROUND(table,a,b,c,d,out,ptr) dnl Computes one word of the AES round. Leaves result in $6. define(, < - movzbl LREG($2), $7 + movzb LREG($2), $7 movl AES_TABLE0 ($1, $7, 4),$6 movl $3, XREG($7) - shrl <$>8,$7 - andl <$>0xff,$7 + shr <$>8,$7 + and <$>0xff,$7 xorl AES_TABLE1 ($1, $7, 4),$6 movl $4,XREG($7) - shrl <$>16,$7 - andl <$>0xff,$7 + shr <$>16,$7 + and <$>0xff,$7 xorl AES_TABLE2 ($1, $7, 4),$6 movl $5,XREG($7) xorl AES_TABLE3 ($1, $7, 4),$6>)dnl -dnl AES_FINAL_ROUND(a, b, c, d, table out, tmp) +dnl AES_FINAL_ROUND(a, b, c, d, table, out, tmp) dnl Computes one word of the final round. Leaves result in %edi. dnl Note that we have to quote $ in constants. define(, < - movzb LREG($1),$6 - movzbl ($5, $6), $6 - movl $2,$7 - andl <$>0x0000ff00,$7 - orl $7, $6 - movl $3,$7 - andl <$>0x00ff0000,$7 - orl $7, $6 - movl $4,$7 - andl <$>0xff000000,$7 - orl $7, $6 + movzb LREG($1),$7 + movzbl ($5, $7), $6 + movl $2,XREG($7) + andl <$>0x0000ff00,XREG($7) + orl XREG($7), $6 + movl $3,XREG($7) + andl <$>0x00ff0000,XREG($7) + orl XREG($7), $6 + movl $4,XREG($7) + andl <$>0xff000000,XREG($7) + orl XREG($7), $6 roll <$>8, $6>)dnl dnl AES_SUBST_BYTE(A, B, C, D, table, tmp) @@ -110,14 +110,14 @@ define(, < movb ($5, $6),LREG($1) roll <$>8,$1 - movzbl LREG($2),$6 + movzb LREG($2),$6 movb ($5, $6),LREG($2) roll <$>8,$2 - movzbl LREG($3),$6 + movzb LREG($3),$6 movb ($5, $6),LREG($3) roll <$>8,$3 - movzbl LREG($4),$6 + movzb LREG($4),$6 movb ($5, $6),LREG($4) roll <$>8,$4>)dnl