Update sparc files (32 and 64).
C sparc32/aes-decrypt-internal.asm
-ifelse(<
+ifelse(`
Copyright (C) 2002, 2005, 2013 Niels Möller
This file is part of GNU Nettle.
You should have received copies of the GNU General Public License and
the GNU Lesser General Public License along with this program. If
not, see http://www.gnu.org/licenses/.
->)
+')
-include_src(<sparc32/aes.m4>)
+include_src(`sparc32/aes.m4')
C Arguments
-define(<ROUNDS>,<%i0>)
-define(<KEYS>, <%i1>)
-define(<T>, <%i2>)
-define(<LENGTH>,<%i3>)
-define(<DST>, <%i4>)
-define(<SRC>, <%i5>)
+define(`ROUNDS',`%i0')
+define(`KEYS', `%i1')
+define(`T', `%i2')
+define(`LENGTH',`%i3')
+define(`DST', `%i4')
+define(`SRC', `%i5')
C AES state, two copies for unrolling
-define(<W0>, <%l0>)
-define(<W1>, <%l1>)
-define(<W2>, <%l2>)
-define(<W3>, <%l3>)
+define(`W0', `%l0')
+define(`W1', `%l1')
+define(`W2', `%l2')
+define(`W3', `%l3')
-define(<X0>, <%l4>)
-define(<X1>, <%l5>)
-define(<X2>, <%l6>)
-define(<X3>, <%l7>)
+define(`X0', `%l4')
+define(`X1', `%l5')
+define(`X2', `%l6')
+define(`X3', `%l7')
C %o0-%03 are used for loop invariants T0-T3
-define(<KEY>, <%o4>)
-define(<COUNT>, <%o5>)
+define(`KEY', `%o4')
+define(`COUNT', `%o5')
C %g1, %g2, %g3 are TMP1, TMP2 and TMP3
C %fp - 4: OS-dependent link field
C %fp - 8: OS-dependent link field
C %fp - 104: OS register save area.
-define(<FRAME_SIZE>, 104)
+define(`FRAME_SIZE', 104)
.file "aes-decrypt-internal.asm"
C sparc32/aes-encrypt-internal.asm
-ifelse(<
+ifelse(`
Copyright (C) 2002, 2005, 2013 Niels Möller
This file is part of GNU Nettle.
You should have received copies of the GNU General Public License and
the GNU Lesser General Public License along with this program. If
not, see http://www.gnu.org/licenses/.
->)
+')
-include_src(<sparc32/aes.m4>)
+include_src(`sparc32/aes.m4')
C Arguments
-define(<ROUNDS>,<%i0>)
-define(<KEYS>, <%i1>)
-define(<T>, <%i2>)
-define(<LENGTH>,<%i3>)
-define(<DST>, <%i4>)
-define(<SRC>, <%i5>)
+define(`ROUNDS',`%i0')
+define(`KEYS', `%i1')
+define(`T', `%i2')
+define(`LENGTH',`%i3')
+define(`DST', `%i4')
+define(`SRC', `%i5')
C AES state, two copies for unrolling
-define(<W0>, <%l0>)
-define(<W1>, <%l1>)
-define(<W2>, <%l2>)
-define(<W3>, <%l3>)
+define(`W0', `%l0')
+define(`W1', `%l1')
+define(`W2', `%l2')
+define(`W3', `%l3')
-define(<X0>, <%l4>)
-define(<X1>, <%l5>)
-define(<X2>, <%l6>)
-define(<X3>, <%l7>)
+define(`X0', `%l4')
+define(`X1', `%l5')
+define(`X2', `%l6')
+define(`X3', `%l7')
C %o0-%03 are used for loop invariants T0-T3
-define(<KEY>, <%o4>)
-define(<COUNT>, <%o5>)
+define(`KEY', `%o4')
+define(`COUNT', `%o5')
C %g1, %g2, %g3 are TMP1, TMP2 and TMP3
C %fp - 4: OS-dependent link field
C %fp - 8: OS-dependent link field
C %fp - 104: OS register save area
-define(<FRAME_SIZE>, 104)
+define(`FRAME_SIZE', 104)
.file "aes-encrypt-internal.asm"
C Used as temporaries by the AES macros
-define(<TMP1>, <%g1>)
-define(<TMP2>, <%g2>)
-define(<TMP3>, <%g3>)
+define(`TMP1', `%g1')
+define(`TMP2', `%g2')
+define(`TMP3', `%g3')
C Loop invariants used by AES_ROUND
-define(<T0>, <%o0>)
-define(<T1>, <%o1>)
-define(<T2>, <%o2>)
-define(<T3>, <%o3>)
+define(`T0', `%o0')
+define(`T1', `%o1')
+define(`T2', `%o2')
+define(`T3', `%o3')
C AES_LOAD(i, src, key, res)
-define(<AES_LOAD>, <
+define(`AES_LOAD', `
ldub [$2 + 4*$1], $4
ldub [$2 + 4*$1 + 1], TMP1
ldub [$2 + 4*$1 + 2], TMP2
C Get subkey
ld [$3 + 4*$1], TMP2
or $4, TMP1, $4
- xor $4, TMP2, $4>)dnl
+ xor $4, TMP2, $4')dnl
C AES_ROUND(i, a, b, c, d, key, res)
C Computes one word of the AES round
C FIXME: Could use registers pointing directly to the four tables
C FIXME: Needs better instruction scheduling, and perhaps more temporaries
C Alternatively, we can use a single table and some rotations
-define(<AES_ROUND>, <
+define(`AES_ROUND', `
and $2, 0xff, TMP1 C 0
srl $3, 6, TMP2 C 1
sll TMP1, 2, TMP1 C 0
ld [T3 + TMP2], TMP2 C 3
xor $7, TMP1, $7 C 4 E4
xor $7, TMP2, $7 C 3 E3
->)dnl
+')dnl
C AES_FINAL_ROUND(i, T, a, b, c, d, key, dst)
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>, <
+define(`AES_FINAL_ROUND', `
C Load subkey
ld [$7 + 4*$1], TMP3
stb TMP1, [$8 + 4*$1 + 2] C 2 E2
xor TMP3, TMP2, TMP2 C 3
stb TMP2, [$8 + 4*$1 + 3] C 3 E3
->)
+')
C sparc32/arcfour-crypt.asm
-ifelse(<
+ifelse(`
Copyright (C) 2002, 2005 Niels Möller
This file is part of GNU Nettle.
You should have received copies of the GNU General Public License and
the GNU Lesser General Public License along with this program. If
not, see http://www.gnu.org/licenses/.
->)
+')
C Define to YES, to enable the complex code to special case SRC
C and DST with compatible alignment.
-define(<WITH_ALIGN>, <YES>)
+define(`WITH_ALIGN', `YES')
C Registers
-define(<CTX>, <%i0>)
-define(<LENGTH>,<%i1>)
-define(<DST>, <%i2>)
-define(<SRC>, <%i3>)
-
-define(<I1>, <%i4>)
-define(<I2>, <%i5>)
-define(<J>, <%g1>)
-define(<SI>, <%g2>)
-define(<SJ>, <%g3>)
-define(<TMP>, <%o0>)
-define(<TMP2>, <%o1>)
-define(<N>, <%o2>)
-define(<DATA>, <%o3>)
+define(`CTX', `%i0')
+define(`LENGTH',`%i1')
+define(`DST', `%i2')
+define(`SRC', `%i3')
+
+define(`I1', `%i4')
+define(`I2', `%i5')
+define(`J', `%g1')
+define(`SI', `%g2')
+define(`SJ', `%g3')
+define(`TMP', `%o0')
+define(`TMP2', `%o1')
+define(`N', `%o2')
+define(`DATA', `%o3')
C Computes the next byte of the key stream. As input, i must
C already point to the index for the current access, the index
C for the next access is stored in ni. The resulting key byte is
C stored in res.
C ARCFOUR_BYTE(i, ni, res)
-define(<ARCFOUR_BYTE>, <
+define(`ARCFOUR_BYTE', `
ldub [CTX + $1], SI
add $1, 1, $2
add J, SI, J
and SI, 0xff, SI
stb SJ, [CTX + $1]
ldub [CTX + SI], $3
->)dnl
+')dnl
C FIXME: Consider using the callers window
-define(<FRAME_SIZE>, 104)
+define(`FRAME_SIZE', 104)
.file "arcfour-crypt.asm"
C sparc64/aes-decrypt-internal.asm
-ifelse(<
+ifelse(`
Copyright (C) 2002, 2005, 2013 Niels Möller
This file is part of GNU Nettle.
You should have received copies of the GNU General Public License and
the GNU Lesser General Public License along with this program. If
not, see http://www.gnu.org/licenses/.
->)
+')
C The only difference between this code and the sparc32 code is the
C frame offsets, and the magic BIAS when accessing the stack (which
C Use the same AES macros as on sparc32.
-include_src(<sparc32/aes.m4>)
+include_src(`sparc32/aes.m4')
C Arguments
-define(<ROUNDS>,<%i0>)
-define(<KEYS>, <%i1>)
-define(<T>, <%i2>)
-define(<LENGTH>,<%i3>)
-define(<DST>, <%i4>)
-define(<SRC>, <%i5>)
+define(`ROUNDS',`%i0')
+define(`KEYS', `%i1')
+define(`T', `%i2')
+define(`LENGTH',`%i3')
+define(`DST', `%i4')
+define(`SRC', `%i5')
C AES state, two copies for unrolling
-define(<W0>, <%l0>)
-define(<W1>, <%l1>)
-define(<W2>, <%l2>)
-define(<W3>, <%l3>)
+define(`W0', `%l0')
+define(`W1', `%l1')
+define(`W2', `%l2')
+define(`W3', `%l3')
-define(<X0>, <%l4>)
-define(<X1>, <%l5>)
-define(<X2>, <%l6>)
-define(<X3>, <%l7>)
+define(`X0', `%l4')
+define(`X1', `%l5')
+define(`X2', `%l6')
+define(`X3', `%l7')
C %o0-%03 are used for loop invariants T0-T3
-define(<KEY>, <%o4>)
-define(<COUNT>, <%o5>)
+define(`KEY', `%o4')
+define(`COUNT', `%o5')
C %g1, %g2, %g3 are TMP1, TMP2 and TMP3
C %fp - 8: OS-dependent link field
C %fp - 16: OS-dependent link field
C %fp - 192: OS register save area (22*8 == 176 bytes)
-define(<FRAME_SIZE>, 192)
+define(`FRAME_SIZE', 192)
.file "aes-decrypt-internal.asm"
C sparc64/aes-encrypt-internal.asm
-ifelse(<
+ifelse(`
Copyright (C) 2002, 2005, 2013 Niels Möller
This file is part of GNU Nettle.
You should have received copies of the GNU General Public License and
the GNU Lesser General Public License along with this program. If
not, see http://www.gnu.org/licenses/.
->)
+')
C The only difference between this code and the sparc32 code is the
C frame offsets, and the magic BIAS when accessing the stack (which
C Use the same AES macros as on sparc32.
-include_src(<sparc32/aes.m4>)
+include_src(`sparc32/aes.m4')
C Arguments
-define(<ROUNDS>,<%i0>)
-define(<KEYS>, <%i1>)
-define(<T>, <%i2>)
-define(<LENGTH>,<%i3>)
-define(<DST>, <%i4>)
-define(<SRC>, <%i5>)
+define(`ROUNDS',`%i0')
+define(`KEYS', `%i1')
+define(`T', `%i2')
+define(`LENGTH',`%i3')
+define(`DST', `%i4')
+define(`SRC', `%i5')
C AES state, two copies for unrolling
-define(<W0>, <%l0>)
-define(<W1>, <%l1>)
-define(<W2>, <%l2>)
-define(<W3>, <%l3>)
+define(`W0', `%l0')
+define(`W1', `%l1')
+define(`W2', `%l2')
+define(`W3', `%l3')
-define(<X0>, <%l4>)
-define(<X1>, <%l5>)
-define(<X2>, <%l6>)
-define(<X3>, <%l7>)
+define(`X0', `%l4')
+define(`X1', `%l5')
+define(`X2', `%l6')
+define(`X3', `%l7')
C %o0-%03 are used for loop invariants T0-T3
-define(<KEY>, <%o4>)
-define(<COUNT>, <%o5>)
+define(`KEY', `%o4')
+define(`COUNT', `%o5')
C %g1, %g2, %g3 are TMP1, TMP2 and TMP3
C %fp - 8: OS-dependent link field
C %fp - 16: OS-dependent link field
C %fp - 192: OS register save area (22*8 == 176 bytes)
-define(<FRAME_SIZE>, 192)
+define(`FRAME_SIZE', 192)
.file "aes-encrypt-internal.asm"
C sparc64/arcfour-crypt.asm
-ifelse(<
+ifelse(`
Copyright (C) 2002, 2005 Niels Möller
This file is part of GNU Nettle.
You should have received copies of the GNU General Public License and
the GNU Lesser General Public License along with this program. If
not, see http://www.gnu.org/licenses/.
->)
+')
C Define to YES, to enable the complex code to special case SRC
C and DST with compatible alignment.
-define(<WITH_ALIGN>, <YES>)
+define(`WITH_ALIGN', `YES')
C Registers
-define(<CTX>, <%i0>)
-define(<LENGTH>,<%i1>)
-define(<DST>, <%i2>)
-define(<SRC>, <%i3>)
-
-define(<I1>, <%i4>)
-define(<I2>, <%i5>)
-define(<J>, <%g1>)
-define(<SI>, <%g2>)
-define(<SJ>, <%g3>)
-define(<TMP>, <%o0>)
-define(<TMP2>, <%o1>)
-define(<N>, <%o2>)
-define(<DATA>, <%o3>)
+define(`CTX', `%i0')
+define(`LENGTH',`%i1')
+define(`DST', `%i2')
+define(`SRC', `%i3')
+
+define(`I1', `%i4')
+define(`I2', `%i5')
+define(`J', `%g1')
+define(`SI', `%g2')
+define(`SJ', `%g3')
+define(`TMP', `%o0')
+define(`TMP2', `%o1')
+define(`N', `%o2')
+define(`DATA', `%o3')
C Computes the next byte of the key stream. As input, i must
C already point to the index for the current access, the index
C for the next access is stored in ni. The resulting key byte is
C stored in res.
C ARCFOUR_BYTE(i, ni, res)
-define(<ARCFOUR_BYTE>, <
+define(`ARCFOUR_BYTE', `
ldub [CTX + $1], SI
add $1, 1, $2
add J, SI, J
and SI, 0xff, SI
stb SJ, [CTX + $1]
ldub [CTX + SI], $3
->)dnl
+')dnl
-define(<FRAME_SIZE>, 192)
+define(`FRAME_SIZE', 192)
.file "arcfour-crypt.asm"
-define(<BIAS>, 2047) C Magic stack bias for the Sparc64 ABI
+define(`BIAS', 2047) C Magic stack bias for the Sparc64 ABI
.register %g2,#scratch
.register %g3,#scratch