diff --git a/x86/aes.m4 b/x86/aes.m4 index 5059a3ef185c8133b81ff82cc919a7a28b65962f..ad311a7db8baf5464371411408bce1e55146a880 100644 --- a/x86/aes.m4 +++ b/x86/aes.m4 @@ -59,22 +59,22 @@ define(<AES_ROUND>, < shrl <$>24,$7 xorl AES_TABLE3 ($1, $7, 4),$6>)dnl -dnl AES_FINAL_ROUND(a, b, c, d, out, tmp) -dnl Computes one word of the final round. Leaves result in %edi. +dnl AES_FINAL_ROUND(a, b, c, d, table, out, tmp) +dnl Computes one word of the final round. dnl Note that we have to quote $ in constants. define(<AES_FINAL_ROUND>, < - C FIXME: Perform substitution on least significant byte here, - C to save work later. - movzbl LREG($1),$5 - movl $2,$6 - andl <$>0x0000ff00,$6 - orl $6, $5 - movl $3,$6 - andl <$>0x00ff0000,$6 - orl $6, $5 - movl $4,$6 - andl <$>0xff000000,$6 - orl $6, $5>)dnl + movzbl 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 + roll <$>8, $6>)dnl dnl AES_SUBST_BYTE(A, B, C, D, table, ptr) dnl Substitutes the least significant byte of