diff options
author | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2015-05-03 17:28:40 +0300 |
---|---|---|
committer | Jussi Kivilinna <jussi.kivilinna@iki.fi> | 2015-05-14 13:41:05 +0300 |
commit | e05682093ffb003b589a697428d918d755ac631d (patch) | |
tree | 4f5f130f657ea9631fcdf499e7c45136d620e198 /cipher/blowfish-amd64.S | |
parent | c46b015bedba7ce0db68929bd33a86a54ab3d919 (diff) | |
download | libgcrypt-e05682093ffb003b589a697428d918d755ac631d.tar.gz |
Enable AMD64 Blowfish implementation on WIN64
* cipher/blowfish-amd64.S: Enable when
HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS defined.
(ELF): New macro to mask lines with ELF specific commands.
* cipher/blowfish.c (USE_AMD64_ASM): Enable when
HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS defined.
[HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS] (call_sysv_fn): New.
(do_encrypt, do_encrypt_block, do_decrypt_block)
[HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS]: Call assembly
function through 'call_sysv_fn'.
(blowfish_amd64_ctr_enc, blowfish_amd64_cbc_dec)
(blowfish_amd64_cfb_dec): New wrapper functions for bulk
assembly functions.
..
Signed-off-by: Jussi Kivilinna <jussi.kivilinna@iki.fi>
Diffstat (limited to 'cipher/blowfish-amd64.S')
-rw-r--r-- | cipher/blowfish-amd64.S | 46 |
1 files changed, 27 insertions, 19 deletions
diff --git a/cipher/blowfish-amd64.S b/cipher/blowfish-amd64.S index 87b676f3..21b63fc1 100644 --- a/cipher/blowfish-amd64.S +++ b/cipher/blowfish-amd64.S @@ -20,7 +20,15 @@ #ifdef __x86_64 #include <config.h> -#if defined(USE_BLOWFISH) && defined(HAVE_COMPATIBLE_GCC_AMD64_PLATFORM_AS) +#if defined(USE_BLOWFISH) && \ + (defined(HAVE_COMPATIBLE_GCC_AMD64_PLATFORM_AS) || \ + defined(HAVE_COMPATIBLE_GCC_WIN64_PLATFORM_AS)) + +#ifdef HAVE_COMPATIBLE_GCC_AMD64_PLATFORM_AS +# define ELF(...) __VA_ARGS__ +#else +# define ELF(...) /*_*/ +#endif .text @@ -120,7 +128,7 @@ movq RX0, (RIO); .align 8 -.type __blowfish_enc_blk1,@function; +ELF(.type __blowfish_enc_blk1,@function;) __blowfish_enc_blk1: /* input: @@ -145,11 +153,11 @@ __blowfish_enc_blk1: movq %r11, %rbp; ret; -.size __blowfish_enc_blk1,.-__blowfish_enc_blk1; +ELF(.size __blowfish_enc_blk1,.-__blowfish_enc_blk1;) .align 8 .globl _gcry_blowfish_amd64_do_encrypt -.type _gcry_blowfish_amd64_do_encrypt,@function; +ELF(.type _gcry_blowfish_amd64_do_encrypt,@function;) _gcry_blowfish_amd64_do_encrypt: /* input: @@ -171,11 +179,11 @@ _gcry_blowfish_amd64_do_encrypt: movl RX0d, (RX2); ret; -.size _gcry_blowfish_amd64_do_encrypt,.-_gcry_blowfish_amd64_do_encrypt; +ELF(.size _gcry_blowfish_amd64_do_encrypt,.-_gcry_blowfish_amd64_do_encrypt;) .align 8 .globl _gcry_blowfish_amd64_encrypt_block -.type _gcry_blowfish_amd64_encrypt_block,@function; +ELF(.type _gcry_blowfish_amd64_encrypt_block,@function;) _gcry_blowfish_amd64_encrypt_block: /* input: @@ -195,11 +203,11 @@ _gcry_blowfish_amd64_encrypt_block: write_block(); ret; -.size _gcry_blowfish_amd64_encrypt_block,.-_gcry_blowfish_amd64_encrypt_block; +ELF(.size _gcry_blowfish_amd64_encrypt_block,.-_gcry_blowfish_amd64_encrypt_block;) .align 8 .globl _gcry_blowfish_amd64_decrypt_block -.type _gcry_blowfish_amd64_decrypt_block,@function; +ELF(.type _gcry_blowfish_amd64_decrypt_block,@function;) _gcry_blowfish_amd64_decrypt_block: /* input: @@ -231,7 +239,7 @@ _gcry_blowfish_amd64_decrypt_block: movq %r11, %rbp; ret; -.size _gcry_blowfish_amd64_decrypt_block,.-_gcry_blowfish_amd64_decrypt_block; +ELF(.size _gcry_blowfish_amd64_decrypt_block,.-_gcry_blowfish_amd64_decrypt_block;) /********************************************************************** 4-way blowfish, four blocks parallel @@ -319,7 +327,7 @@ _gcry_blowfish_amd64_decrypt_block: bswapq RX3; .align 8 -.type __blowfish_enc_blk4,@function; +ELF(.type __blowfish_enc_blk4,@function;) __blowfish_enc_blk4: /* input: @@ -343,10 +351,10 @@ __blowfish_enc_blk4: outbswap_block4(); ret; -.size __blowfish_enc_blk4,.-__blowfish_enc_blk4; +ELF(.size __blowfish_enc_blk4,.-__blowfish_enc_blk4;) .align 8 -.type __blowfish_dec_blk4,@function; +ELF(.type __blowfish_dec_blk4,@function;) __blowfish_dec_blk4: /* input: @@ -372,11 +380,11 @@ __blowfish_dec_blk4: outbswap_block4(); ret; -.size __blowfish_dec_blk4,.-__blowfish_dec_blk4; +ELF(.size __blowfish_dec_blk4,.-__blowfish_dec_blk4;) .align 8 .globl _gcry_blowfish_amd64_ctr_enc -.type _gcry_blowfish_amd64_ctr_enc,@function; +ELF(.type _gcry_blowfish_amd64_ctr_enc,@function;) _gcry_blowfish_amd64_ctr_enc: /* input: * %rdi: ctx, CTX @@ -429,11 +437,11 @@ _gcry_blowfish_amd64_ctr_enc: popq %rbp; ret; -.size _gcry_blowfish_amd64_ctr_enc,.-_gcry_blowfish_amd64_ctr_enc; +ELF(.size _gcry_blowfish_amd64_ctr_enc,.-_gcry_blowfish_amd64_ctr_enc;) .align 8 .globl _gcry_blowfish_amd64_cbc_dec -.type _gcry_blowfish_amd64_cbc_dec,@function; +ELF(.type _gcry_blowfish_amd64_cbc_dec,@function;) _gcry_blowfish_amd64_cbc_dec: /* input: * %rdi: ctx, CTX @@ -477,11 +485,11 @@ _gcry_blowfish_amd64_cbc_dec: popq %rbp; ret; -.size _gcry_blowfish_amd64_cbc_dec,.-_gcry_blowfish_amd64_cbc_dec; +ELF(.size _gcry_blowfish_amd64_cbc_dec,.-_gcry_blowfish_amd64_cbc_dec;) .align 8 .globl _gcry_blowfish_amd64_cfb_dec -.type _gcry_blowfish_amd64_cfb_dec,@function; +ELF(.type _gcry_blowfish_amd64_cfb_dec,@function;) _gcry_blowfish_amd64_cfb_dec: /* input: * %rdi: ctx, CTX @@ -527,7 +535,7 @@ _gcry_blowfish_amd64_cfb_dec: popq %rbx; popq %rbp; ret; -.size _gcry_blowfish_amd64_cfb_dec,.-_gcry_blowfish_amd64_cfb_dec; +ELF(.size _gcry_blowfish_amd64_cfb_dec,.-_gcry_blowfish_amd64_cfb_dec;) #endif /*defined(USE_BLOWFISH)*/ #endif /*__x86_64*/ |