diff --git a/x86/machine.m4 b/x86/machine.m4
index d145b5b3726c191ce556da86f33f0d5b9f1e524a..552de7a1c9ba4fa716cf7e82d78fa5d8d2532a36 100644
--- a/x86/machine.m4
+++ b/x86/machine.m4
@@ -13,3 +13,20 @@ define(<AES_LAST_ROUND>, <
 	movl	%e<>$4<>x,%ebp
 	andl	<$>0xff000000,%ebp
 	orl	%ebp,%edi>)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.
+dnl Note that x86 allows unaligned accesses.
+dnl Would it be preferable to interleave the loads and stores?
+define(<AES_STORE>, <
+	xorl	($1),%eax
+	xorl	4($1),%ebx
+	xorl	8($1),%ecx
+	xorl	12($1),%edx
+
+	movl	%eax,($2)
+	movl	%ebx,4($2)
+	movl	%ecx,8($2)
+	movl	%edx,12($2)>)dnl
+