]> git.ipfire.org Git - thirdparty/nettle.git/commitdiff
Updated x86_64 assembler for W64 support.
authorMartin Storsjö <martin@martin.st>
Fri, 25 Nov 2011 14:51:13 +0000 (15:51 +0100)
committerNiels Möller <nisse@lysator.liu.se>
Fri, 25 Nov 2011 14:51:13 +0000 (15:51 +0100)
Rev: nettle/ChangeLog:1.242
Rev: nettle/x86_64/aes-decrypt-internal.asm:1.4
Rev: nettle/x86_64/aes-encrypt-internal.asm:1.11
Rev: nettle/x86_64/camellia-crypt-internal.asm:1.3
Rev: nettle/x86_64/memxor.asm:1.4
Rev: nettle/x86_64/serpent-decrypt.asm:1.4
Rev: nettle/x86_64/serpent-encrypt.asm:1.6
Rev: nettle/x86_64/sha1-compress.asm:1.3

ChangeLog
x86_64/aes-decrypt-internal.asm
x86_64/aes-encrypt-internal.asm
x86_64/camellia-crypt-internal.asm
x86_64/memxor.asm
x86_64/serpent-decrypt.asm
x86_64/serpent-encrypt.asm
x86_64/sha1-compress.asm

index 191c94df7eb2c52d5d1510d4ce339f98865f5b33..d0f7cd361777423d5afd243a315e6fc2686706f7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,7 @@
        From Martin Storsjö:
        * x86_64/machine.m4 (W64_ENTRY, W64_EXIT): New macros for
        supporting W64 ABI.
+       * x86_64: Updated all assembly files to use them.
 
        * configure.ac (W64_ABI): New variable, set when compiling for
        W64 ABI (64-bit M$ windows).
index 8f0df73714d594a723ec97909c6e9b452521cedd..2c94d0f6815d55915012bea975d3bef881398d70 100644 (file)
@@ -55,6 +55,7 @@ define(<TMP>,<%rbp>)
        .text
        ALIGN(4)
 PROLOGUE(_nettle_aes_decrypt)
+       W64_ENTRY(5, 0)
        test    PARAM_LENGTH, PARAM_LENGTH
        jz      .Lend
 
@@ -129,5 +130,6 @@ PROLOGUE(_nettle_aes_decrypt)
        pop     %rbp
        pop     %rbx
 .Lend:
+       W64_EXIT(5, 0)
        ret
 EPILOGUE(_nettle_aes_decrypt)
index c23feb6218db8591a4a803734fcaafda0a654e3e..dd516c8ccbacd6a71be1e3b02592178ec4059bf0 100644 (file)
@@ -55,6 +55,7 @@ define(<TMP>,<%rbp>)
        .text
        ALIGN(4)
 PROLOGUE(_nettle_aes_encrypt)
+       W64_ENTRY(5, 0)
        test    PARAM_LENGTH, PARAM_LENGTH
        jz      .Lend
 
@@ -129,5 +130,6 @@ PROLOGUE(_nettle_aes_encrypt)
        pop     %rbp
        pop     %rbx
 .Lend:
+       W64_EXIT(5, 0)
        ret
 EPILOGUE(_nettle_aes_encrypt)
index e940342ba33ec9b7562e00e8d1e4afcf33765f3c..b7bd93f375369515815594ed86873c4e24a3dba5 100644 (file)
@@ -125,6 +125,7 @@ C   xorl    XREG(TMP), XREG($1)
        ALIGN(4)
 PROLOGUE(_nettle_camellia_crypt)
 
+       W64_ENTRY(5, 0)
        test    LENGTH, LENGTH
        jz      .Lend
 
@@ -182,5 +183,6 @@ PROLOGUE(_nettle_camellia_crypt)
        pop     %rbp
        pop     %rbx
 .Lend:
+       W64_EXIT(5, 0)
        ret
 EPILOGUE(_nettle_camellia_crypt)
index 7a5a23b688708103d730dba3c5cd78e4bcd5b6ca..117ae70eb5f3d92f4d5983307aecc03beae85529 100644 (file)
@@ -40,6 +40,7 @@ define(<USE_SSE2>, <no>)
        ALIGN(4)
 
 PROLOGUE(memxor)
+       W64_ENTRY(3, 0)
        mov     %rdx, %r10
        mov     %rdi, %rdx
        jmp     .Lmemxor3_entry
@@ -50,6 +51,7 @@ EPILOGUE(memxor)
        ALIGN(4)
        
 PROLOGUE(memxor3)
+       W64_ENTRY(4, 0)
        C %cl needed for shift count, so move away N
        mov     %rcx, N
 .Lmemxor3_entry:
@@ -200,6 +202,8 @@ C   jz      .Ldone
        xor     (BP, N), TMP
        mov     TMP, (DST, N)
 
+       C ENTRY might have been 3 args, too, but it doesn't matter for the exit
+       W64_EXIT(4, 0)
        ret
 
 .Lfinal:
@@ -214,6 +218,8 @@ C   jz      .Ldone
        jnc     .Lfinal_loop
 
 .Ldone:
+       C ENTRY might have been 3 args, too, but it doesn't matter for the exit
+       W64_EXIT(4, 0)
        ret
 
 ifelse(USE_SSE2, yes, <
@@ -247,6 +253,8 @@ ifelse(USE_SSE2, yes, <
        movdqu  (BP), %xmm1
        pxor    %xmm0, %xmm1
        movdqa  %xmm1, (DST)
+       C ENTRY might have been 3 args, too, but it doesn't matter for the exit
+       W64_EXIT(4, 0)
        ret
 >)     
        
index b2bca664cb00a26ab7d7a1a1b42429675b0bd729..5055d71569aefed59099a19df094cc22d50358ba 100644 (file)
@@ -525,6 +525,7 @@ define(<WLTI>, <
        ALIGN(4)
 PROLOGUE(nettle_serpent_decrypt)
         C save all registers that need to be saved
+       W64_ENTRY(4, 13)
        push    %rbx
        push    %rbp
        push    %r12
@@ -697,4 +698,5 @@ PROLOGUE(nettle_serpent_decrypt)
        pop     %r12
        pop     %rbp
        pop     %rbx
+       W64_EXIT(4, 13)
        ret
index fe60f7c16b59c43faaf939a48ffb30e9333df714..5751b30ed321f772234291c23546f0764af4a44e 100644 (file)
@@ -552,6 +552,7 @@ define(<WLT>, <
        ALIGN(4)
 PROLOGUE(nettle_serpent_encrypt)
         C save all registers that need to be saved
+       W64_ENTRY(4, 13)
        push    %rbx
        push    %rbp
        push    %r12
@@ -732,4 +733,5 @@ C parallell.
        pop     %r12
        pop     %rbp
        pop     %rbx
+       W64_EXIT(4, 13)
        ret
index a912ce0a54dee9b2812474b36aaf96cf61327445..1abbb69811f72cb6104089bf259c8fc773212158 100644 (file)
@@ -126,6 +126,7 @@ C adding, and then rotating back.
        ALIGN(4)
 PROLOGUE(_nettle_sha1_compress)
        C save all registers that need to be saved
+       W64_ENTRY(2, 0)
        
        sub     $68, %rsp       C  %rsp = W
 
@@ -250,5 +251,6 @@ PROLOGUE(_nettle_sha1_compress)
        addl    SE, 16(STATE)
 
        add     $68, %rsp
+       W64_EXIT(2, 0)
        ret
 EPILOGUE(_nettle_sha1_compress)