From eb819e1eb8f604df5c9f263dc5dc09c8da778080 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Niels=20M=C3=B6ller?= <nisse@lysator.liu.se>
Date: Sun, 16 Oct 2005 14:52:59 +0200
Subject: [PATCH] * sparc/machine.m4: Don't use m4 eval, instead rely on the
 assembler's arithmetic.

Rev: src/nettle/sparc/machine.m4:1.12
---
 sparc/machine.m4 | 28 +++++++++++-----------------
 1 file changed, 11 insertions(+), 17 deletions(-)

diff --git a/sparc/machine.m4 b/sparc/machine.m4
index 0817327a..7fc11ef2 100644
--- a/sparc/machine.m4
+++ b/sparc/machine.m4
@@ -1,9 +1,3 @@
-C FIXME: Do we need an OFFSET macro? Or is it fine to use expressions such as [%i1 + 0]
-
-C FIXME: How much can we rely on the assembler to be able to
-C understand arithmetic expressions? Mayby we don't need to use m4
-C eval.
-
 C Used as temporaries by the AES macros
 define(<TMP1>, <%g1>)
 define(<TMP2>, <%g2>)
@@ -17,19 +11,19 @@ define(<T3>,	<%o3>)
 
 C AES_LOAD(i, src, key, res)
 define(<AES_LOAD>, <
-	ldub	[$2 + eval(4*$1)], $4
-	ldub	[$2 + eval(4*$1 + 1)], TMP1
-	ldub	[$2 + eval(4*$1 + 2)], TMP2
+	ldub	[$2 + 4*$1], $4
+	ldub	[$2 + 4*$1 + 1], TMP1
+	ldub	[$2 + 4*$1 + 2], TMP2
 	sll	TMP1, 8, TMP1
 	
 	or	$4, TMP1, $4
-	ldub	[$2 + eval(4*$1+3)], TMP1
+	ldub	[$2 + 4*$1+3], TMP1
 	sll	TMP2, 16, TMP2
 	or	$4, TMP2, $4
 	
 	sll	TMP1, 24, TMP1
 	C	Get subkey
-	ld	[$3 + eval(4*$1)], TMP2
+	ld	[$3 + 4*$1], TMP2
 	or	$4, TMP1, $4
 	xor	$4, TMP2, $4>)dnl
 
@@ -52,7 +46,7 @@ define(<AES_ROUND>, <
 	ld	[T2 + TMP1], TMP1	C  2
 	and	TMP2, 0x3fc, TMP2	C  3
 	xor	$7, TMP1, $7		C  2	E2
-	ld	[$6 + eval(4*$1)], TMP1	C  4
+	ld	[$6 + 4*$1], TMP1	C  4
 	ld	[T3 + TMP2], TMP2	C  3
 	xor	$7, TMP1, $7		C  4	E4
 	xor	$7, TMP2, $7		C  3	E3
@@ -63,7 +57,7 @@ C Compute one word in the final round function. Output is converted to
 C octets and stored at dst. Relies on AES_SBOX being zero.
 define(<AES_FINAL_ROUND>, <
 	C	Load subkey
-	ld	[$7 + eval(4*$1)], TMP3
+	ld	[$7 + 4*$1], TMP3
 
 	and	$3, 0xff, TMP1		C  0
 	srl	$4, 8, TMP2		C  1
@@ -71,20 +65,20 @@ define(<AES_FINAL_ROUND>, <
 	and	TMP2, 0xff, TMP2	C  1
 	xor	TMP3, TMP1, TMP1	C  0
 	ldub	[T + TMP2], TMP2	C  1
-	stb	TMP1, [$8 + eval(4*$1)]	C  0	E0
+	stb	TMP1, [$8 + 4*$1]	C  0	E0
 	srl	$5, 16, TMP1		C  2
 	srl	TMP3, 8, TMP3		C  1
 	and	TMP1, 0xff, TMP1	C  2
 	xor	TMP3, TMP2, TMP2	C  1
 	ldub	[T + TMP1], TMP1	C  2
-	stb	TMP2, [$8 + eval(4*$1 + 1)]	C  1	E1
+	stb	TMP2, [$8 + 4*$1 + 1]	C  1	E1
 	srl	$6, 24, TMP2		C  3
 	srl	TMP3, 8, TMP3		C  2
 	ldub	[T + TMP2], TMP2	C  3
 	xor	TMP3, TMP1, TMP1	C  2
 	srl	TMP3, 8, TMP3		C  3
-	stb	TMP1, [$8 + eval(4*$1 + 2)]	C  2	E2
+	stb	TMP1, [$8 + 4*$1 + 2]	C  2	E2
 	xor	TMP3, TMP2, TMP2	C  3
-	stb	TMP2, [$8 + eval(4*$1 + 3)]	C  3	E3
+	stb	TMP2, [$8 + 4*$1 + 3]	C  3	E3
 >)
 
-- 
GitLab