diff --git a/x86/machine.m4 b/x86/machine.m4 index 552de7a1c9ba4fa716cf7e82d78fa5d8d2532a36..dac44cdd7de65b7304c7d2b3600fc67760e38238 100644 --- a/x86/machine.m4 +++ b/x86/machine.m4 @@ -14,6 +14,22 @@ define(<AES_LAST_ROUND>, < andl <$>0xff000000,%ebp orl %ebp,%edi>)dnl +dnl AES_LOAD(key, src) +dnl Loads the next block of data from src, and add the subkey pointed +dnl to by key. +dnl Note that x86 allows unaligned accesses. +dnl Would it be preferable to interleave the loads and stores? +define(<AES_LOAD>, < + movl ($2),%eax + movl 4($2),%ebx + movl 8($2),%ecx + movl 12($2),%edx + + xorl ($1),%eax + xorl 4($1),%ebx + xorl 8($1),%ecx + xorl 12($1),%edx>)dnl + dnl AES_STORE(key, dst) dnl Adds the subkey pointed to by %esi to %eax-%edx, dnl and stores the result in the area pointed to by %edi. @@ -29,4 +45,3 @@ define(<AES_STORE>, < movl %ebx,4($2) movl %ecx,8($2) movl %edx,12($2)>)dnl -