diff options
-rw-r--r-- | ChangeLog | 5 | ||||
-rw-r--r-- | sparc32/aes-decrypt-internal.asm | 32 | ||||
-rw-r--r-- | sparc32/aes-encrypt-internal.asm | 32 | ||||
-rw-r--r-- | sparc64/aes-decrypt-internal.asm | 34 | ||||
-rw-r--r-- | sparc64/aes-encrypt-internal.asm | 36 |
5 files changed, 76 insertions, 63 deletions
@@ -1,5 +1,10 @@ 2013-05-21 Niels Möller <nisse@lysator.liu.se> + * sparc32/aes-encrypt-internal.asm: Adapted to new interface. + * sparc32/aes-decrypt-internal.asm: Likewise. + * sparc64/aes-encrypt-internal.asm: Likewise. + * sparc64/aes-decrypt-internal.asm: Likewise. + * x86/aes-encrypt-internal.asm: Adapted to new interface. * x86/aes-decrypt-internal.asm: Likewise. diff --git a/sparc32/aes-decrypt-internal.asm b/sparc32/aes-decrypt-internal.asm index cbcf43c5..eac60ed5 100644 --- a/sparc32/aes-decrypt-internal.asm +++ b/sparc32/aes-decrypt-internal.asm @@ -1,6 +1,6 @@ C nettle, low-level cryptographics library C -C Copyright (C) 2002, 2005 Niels Möller +C Copyright (C) 2002, 2005, 2013 Niels Möller C C The nettle library is free software; you can redistribute it and/or modify C it under the terms of the GNU Lesser General Public License as published by @@ -20,11 +20,12 @@ C MA 02111-1301, USA. include_src(<sparc32/aes.m4>) C Arguments -define(<CTX>, <%i0>) -define(<T>, <%i1>) -define(<LENGTH>,<%i2>) -define(<DST>, <%i3>) -define(<SRC>, <%i4>) +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 @@ -40,7 +41,7 @@ define(<X3>, <%l7>) C %o0-%03 are used for loop invariants T0-T3 define(<KEY>, <%o4>) -define(<ROUND>, <%o5>) +define(<COUNT>, <%o5>) C %g1, %g2, %g3 are TMP1, TMP2 and TMP3 @@ -53,7 +54,7 @@ define(<FRAME_SIZE>, 104) .file "aes-decrypt-internal.asm" - C _aes_decrypt(struct aes_context *ctx, + C _aes_decrypt(unsigned rounds, const uint32_t *keys, C const struct aes_table *T, C size_t length, uint8_t *dst, C uint8_t *src) @@ -74,22 +75,23 @@ PROLOGUE(_nettle_aes_decrypt) add T, AES_TABLE2, T2 add T, AES_TABLE3, T3 + C Must be even, and includes the final round + srl ROUNDS, 1, ROUNDS + C Last two rounds handled specially + sub ROUNDS, 1, ROUNDS + .Lblock_loop: C Read src, and add initial subkey - add CTX, AES_KEYS, KEY + mov KEYS, KEY AES_LOAD(0, SRC, KEY, W0) AES_LOAD(1, SRC, KEY, W1) AES_LOAD(2, SRC, KEY, W2) AES_LOAD(3, SRC, KEY, W3) - C Must be even, and includes the final round - ld [AES_NROUNDS + CTX], ROUND + mov ROUNDS, COUNT add SRC, 16, SRC add KEY, 16, KEY - srl ROUND, 1, ROUND - C Last two rounds handled specially - sub ROUND, 1, ROUND .Lround_loop: C The AES_ROUND macro uses T0,... T3 C Transform W -> X @@ -104,7 +106,7 @@ PROLOGUE(_nettle_aes_decrypt) AES_ROUND(6, X2, X1, X0, X3, KEY, W2) AES_ROUND(7, X3, X2, X1, X0, KEY, W3) - subcc ROUND, 1, ROUND + subcc COUNT, 1, COUNT bne .Lround_loop add KEY, 32, KEY diff --git a/sparc32/aes-encrypt-internal.asm b/sparc32/aes-encrypt-internal.asm index 490886fa..fe99fa6c 100644 --- a/sparc32/aes-encrypt-internal.asm +++ b/sparc32/aes-encrypt-internal.asm @@ -1,6 +1,6 @@ C nettle, low-level cryptographics library C -C Copyright (C) 2002, 2005 Niels Möller +C Copyright (C) 2002, 2005, 2013 Niels Möller C C The nettle library is free software; you can redistribute it and/or modify C it under the terms of the GNU Lesser General Public License as published by @@ -20,11 +20,12 @@ C MA 02111-1301, USA. include_src(<sparc32/aes.m4>) C Arguments -define(<CTX>, <%i0>) -define(<T>, <%i1>) -define(<LENGTH>,<%i2>) -define(<DST>, <%i3>) -define(<SRC>, <%i4>) +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 @@ -40,7 +41,7 @@ define(<X3>, <%l7>) C %o0-%03 are used for loop invariants T0-T3 define(<KEY>, <%o4>) -define(<ROUND>, <%o5>) +define(<COUNT>, <%o5>) C %g1, %g2, %g3 are TMP1, TMP2 and TMP3 @@ -58,7 +59,7 @@ define(<FRAME_SIZE>, 104) .file "aes-encrypt-internal.asm" - C _aes_encrypt(struct aes_context *ctx, + C _aes_encrypt(unsigned rounds, const uint32_t *keys, C const struct aes_table *T, C size_t length, uint8_t *dst, C uint8_t *src) @@ -79,22 +80,23 @@ PROLOGUE(_nettle_aes_encrypt) add T, AES_TABLE2, T2 add T, AES_TABLE3, T3 + C Must be even, and includes the final round + srl ROUNDS, 1, ROUNDS + C Last two rounds handled specially + sub ROUNDS, 1, ROUNDS + .Lblock_loop: C Read src, and add initial subkey - add CTX, AES_KEYS, KEY + mov KEYS, KEY AES_LOAD(0, SRC, KEY, W0) AES_LOAD(1, SRC, KEY, W1) AES_LOAD(2, SRC, KEY, W2) AES_LOAD(3, SRC, KEY, W3) - C Must be even, and includes the final round - ld [AES_NROUNDS + CTX], ROUND + mov ROUNDS, COUNT add SRC, 16, SRC add KEY, 16, KEY - srl ROUND, 1, ROUND - C Last two rounds handled specially - sub ROUND, 1, ROUND .Lround_loop: C The AES_ROUND macro uses T0,... T3 C Transform W -> X @@ -109,7 +111,7 @@ PROLOGUE(_nettle_aes_encrypt) AES_ROUND(6, X2, X3, X0, X1, KEY, W2) AES_ROUND(7, X3, X0, X1, X2, KEY, W3) - subcc ROUND, 1, ROUND + subcc COUNT, 1, COUNT bne .Lround_loop add KEY, 32, KEY diff --git a/sparc64/aes-decrypt-internal.asm b/sparc64/aes-decrypt-internal.asm index 4f70c32c..c5269c67 100644 --- a/sparc64/aes-decrypt-internal.asm +++ b/sparc64/aes-decrypt-internal.asm @@ -1,6 +1,6 @@ C nettle, low-level cryptographics library C -C Copyright (C) 2002, 2005 Niels Möller +C Copyright (C) 2002, 2005, 2013 Niels Möller C C The nettle library is free software; you can redistribute it and/or modify C it under the terms of the GNU Lesser General Public License as published by @@ -23,14 +23,15 @@ C doesn't matter, since we don't access any data on the stack). C Use the same AES macros as on sparc32. -include_src(sparc32/aes.m4) +include_src(<sparc32/aes.m4>) C Arguments -define(<CTX>, <%i0>) -define(<T>, <%i1>) -define(<LENGTH>,<%i2>) -define(<DST>, <%i3>) -define(<SRC>, <%i4>) +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 @@ -46,7 +47,7 @@ define(<X3>, <%l7>) C %o0-%03 are used for loop invariants T0-T3 define(<KEY>, <%o4>) -define(<ROUND>, <%o5>) +define(<COUNT>, <%o5>) C %g1, %g2, %g3 are TMP1, TMP2 and TMP3 @@ -59,7 +60,7 @@ define(<FRAME_SIZE>, 192) .file "aes-decrypt-internal.asm" - C _aes_decrypt(struct aes_context *ctx, + C _aes_decrypt(unsigned rounds, const uint32_t *keys, C const struct aes_table *T, C size_t length, uint8_t *dst, C uint8_t *src) @@ -80,22 +81,23 @@ PROLOGUE(_nettle_aes_decrypt) add T, AES_TABLE2, T2 add T, AES_TABLE3, T3 + C Must be even, and includes the final round + srl ROUNDS, 1, ROUNDS + C Last two rounds handled specially + sub ROUNDS, 1, ROUNDS + .Lblock_loop: C Read src, and add initial subkey - add CTX, AES_KEYS, KEY + mov KEYS, KEY AES_LOAD(0, SRC, KEY, W0) AES_LOAD(1, SRC, KEY, W1) AES_LOAD(2, SRC, KEY, W2) AES_LOAD(3, SRC, KEY, W3) - C Must be even, and includes the final round - ld [AES_NROUNDS + CTX], ROUND + mov ROUNDS, COUNT add SRC, 16, SRC add KEY, 16, KEY - srl ROUND, 1, ROUND - C Last two rounds handled specially - sub ROUND, 1, ROUND .Lround_loop: C The AES_ROUND macro uses T0,... T3 C Transform W -> X @@ -110,7 +112,7 @@ PROLOGUE(_nettle_aes_decrypt) AES_ROUND(6, X2, X1, X0, X3, KEY, W2) AES_ROUND(7, X3, X2, X1, X0, KEY, W3) - subcc ROUND, 1, ROUND + subcc COUNT, 1, COUNT bne .Lround_loop add KEY, 32, KEY diff --git a/sparc64/aes-encrypt-internal.asm b/sparc64/aes-encrypt-internal.asm index f2415755..7d163160 100644 --- a/sparc64/aes-encrypt-internal.asm +++ b/sparc64/aes-encrypt-internal.asm @@ -1,6 +1,6 @@ C nettle, low-level cryptographics library C -C Copyright (C) 2002, 2005 Niels Möller +C Copyright (C) 2002, 2005, 2013 Niels Möller C C The nettle library is free software; you can redistribute it and/or modify C it under the terms of the GNU Lesser General Public License as published by @@ -23,14 +23,15 @@ C doesn't matter, since we don't access any data on the stack). C Use the same AES macros as on sparc32. -include_src(sparc32/aes.m4) +include_src(<sparc32/aes.m4>) C Arguments -define(<CTX>, <%i0>) -define(<T>, <%i1>) -define(<LENGTH>,<%i2>) -define(<DST>, <%i3>) -define(<SRC>, <%i4>) +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 @@ -46,10 +47,10 @@ define(<X3>, <%l7>) C %o0-%03 are used for loop invariants T0-T3 define(<KEY>, <%o4>) -define(<ROUND>, <%o5>) +define(<COUNT>, <%o5>) C %g1, %g2, %g3 are TMP1, TMP2 and TMP3 - + C The sparc64 stack frame looks like C C %fp - 8: OS-dependent link field @@ -59,7 +60,7 @@ define(<FRAME_SIZE>, 192) .file "aes-encrypt-internal.asm" - C _aes_encrypt(struct aes_context *ctx, + C _aes_encrypt(unsigned rounds, const uint32_t *keys, C const struct aes_table *T, C size_t length, uint8_t *dst, C uint8_t *src) @@ -80,22 +81,23 @@ PROLOGUE(_nettle_aes_encrypt) add T, AES_TABLE2, T2 add T, AES_TABLE3, T3 + C Must be even, and includes the final round + srl ROUNDS, 1, ROUNDS + C Last two rounds handled specially + sub ROUNDS, 1, ROUNDS + .Lblock_loop: C Read src, and add initial subkey - add CTX, AES_KEYS, KEY + mov KEYS, KEY AES_LOAD(0, SRC, KEY, W0) AES_LOAD(1, SRC, KEY, W1) AES_LOAD(2, SRC, KEY, W2) AES_LOAD(3, SRC, KEY, W3) - C Must be even, and includes the final round - ld [AES_NROUNDS + CTX], ROUND + mov ROUNDS, COUNT add SRC, 16, SRC add KEY, 16, KEY - srl ROUND, 1, ROUND - C Last two rounds handled specially - sub ROUND, 1, ROUND .Lround_loop: C The AES_ROUND macro uses T0,... T3 C Transform W -> X @@ -110,7 +112,7 @@ PROLOGUE(_nettle_aes_encrypt) AES_ROUND(6, X2, X3, X0, X1, KEY, W2) AES_ROUND(7, X3, X0, X1, X2, KEY, W3) - subcc ROUND, 1, ROUND + subcc COUNT, 1, COUNT bne .Lround_loop add KEY, 32, KEY |