]> git.ipfire.org Git - thirdparty/nettle.git/commitdiff
Adapted sparc32 and sparc64 aes assembly to new interface.
authorNiels Möller <nisse@lysator.liu.se>
Tue, 21 May 2013 20:04:21 +0000 (22:04 +0200)
committerNiels Möller <nisse@lysator.liu.se>
Tue, 21 May 2013 20:04:21 +0000 (22:04 +0200)
ChangeLog
sparc32/aes-decrypt-internal.asm
sparc32/aes-encrypt-internal.asm
sparc64/aes-decrypt-internal.asm
sparc64/aes-encrypt-internal.asm

index ef0b06b3916238af5f4e9750c82798ddd45fc587..7d3a3454708698dadc37f121ec08ff57069afaf4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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.
 
index cbcf43c56e4f03d5d1526a25ce20f4393f8e3e8a..eac60ed56c5b387fbfddb53bf2fe138899e0a0d6 100644 (file)
@@ -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
 
index 490886fa029678b15f77e7686e8b87e9d624da85..fe99fa6cf3c2a19b500d5c79fc7a83127cd776e8 100644 (file)
@@ -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
 
index 4f70c32c95fb19f39da9267464af34691094bee5..c5269c6762d8c580c4f2ea9d29c8a705155da9d1 100644 (file)
@@ -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
 
index f24157555720da6c6fccec3bc8fc746e8515c74e..7d1631600867c2080aa14ca36e27a4755b5b6417 100644 (file)
@@ -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