]> git.ipfire.org Git - thirdparty/nettle.git/commitdiff
(EXPAND): Use % 16 instead of & 15 to
authorNiels Möller <nisse@lysator.liu.se>
Wed, 5 Oct 2005 10:40:45 +0000 (12:40 +0200)
committerNiels Möller <nisse@lysator.liu.se>
Wed, 5 Oct 2005 10:40:45 +0000 (12:40 +0200)
compute offsets mod 16, since m4 on FreeBSD 49.RELEASE and NetBSD
doesn't implement & correctly in eval.

Rev: src/nettle/x86/sha1-compress.asm:1.10

x86/sha1-compress.asm

index a6b02aa6fd7e7b5ac7368fc7ef42b1afdd75670b..cbab41221622d39ff218bad9c7044aa082018fa6 100644 (file)
@@ -50,17 +50,17 @@ C expand(i) is the expansion function
 C
 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 where W[i] is stored in DATA[i mod 16].
 C
 C Result is stored back in W[i], and also left in TMP, the only
 C register that is used.
 define(<EXPAND>, <
-       movl    OFFSET(eval($1 & 15)) (DATA), TMP
-       xorl    OFFSET(eval(($1 +  2) & 15)) (DATA), TMP
-       xorl    OFFSET(eval(($1 +  8) & 15)) (DATA), TMP
-       xorl    OFFSET(eval(($1 + 13) & 15)) (DATA), TMP
+       movl    OFFSET(eval($1 % 16)) (DATA), TMP
+       xorl    OFFSET(eval(($1 +  2) % 16)) (DATA), TMP
+       xorl    OFFSET(eval(($1 +  8) % 16)) (DATA), TMP
+       xorl    OFFSET(eval(($1 + 13) % 16)) (DATA), TMP
        roll    <$>1, TMP
-       movl    TMP, OFFSET(eval($1 & 15)) (DATA)>)dnl
+       movl    TMP, OFFSET(eval($1 % 16)) (DATA)>)dnl
 define(<NOEXPAND>, <OFFSET($1) (DATA)>)dnl
 
 C The f functions,