diff --git a/x86/sha1-compress.asm b/x86/sha1-compress.asm
index 5fbd7a06ac04dc6ba96cd6de28743aaeb018fb6b..2856098d8e1189ab45d120196d84e9951eba91f2 100644
--- a/x86/sha1-compress.asm
+++ b/x86/sha1-compress.asm
@@ -34,16 +34,18 @@ define(<K3>, <<$>0x8F1BBCDC>)		C  Rounds 40-59
 define(<K4>, <<$>0xCA62C1D6>)		C  Rounds 60-79
 C expand(i) is the expansion function
 C
-C   W[i] = W[i - 16] ^ W[i - 14] ^ W[i - 8] ^ W[i - 3]
+C   W[i] = (W[i - 16] ^ W[i - 14] ^ W[i - 8] ^ W[i - 3]) <<< 1
 C
 C where W[i] is stored in DATA[i & 15].
 C
-C Result is stored back in W[i], and also left in TMP, the only register that is used.
+C Result is stored back in W[i], and also left in TMP, the only
+C register that is used.
 define(<EXPAND>, <
 	movl	eval(4 *        ($1 & 15)) (DATA), TMP
 	xorl	eval(4 * (($1 +  2) & 15)) (DATA), TMP
 	xorl	eval(4 * (($1 +  8) & 15)) (DATA), TMP
 	xorl	eval(4 * (($1 + 13) & 15)) (DATA), TMP
+	roll	<$>1, TMP
 	movl	TMP, eval(4 * ($1 & 15)) (DATA)	
 >)dnl
 define(<NOEXPAND>, <eval(4 * ($1 & 15)) (DATA)>)dnl