From: Nikos Mavrogiannopoulos Date: Sun, 23 Oct 2011 21:05:51 +0000 (+0200) Subject: No need to check for padlock nano in 32-bit systems, so simplify things. X-Git-Tag: gnutls_3_0_5~28 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=347ddb46c0b3affc1f696ad0477a3c5fae83472e;p=thirdparty%2Fgnutls.git No need to check for padlock nano in 32-bit systems, so simplify things. --- diff --git a/lib/accelerated/x86/Makefile.am b/lib/accelerated/x86/Makefile.am index 906532731e..8d4bf3b719 100644 --- a/lib/accelerated/x86/Makefile.am +++ b/lib/accelerated/x86/Makefile.am @@ -43,5 +43,5 @@ AM_CFLAGS += -DASM_X86_64 -DASM_X86 libx86_la_SOURCES += asm/appro-aes-x86-64.s asm/appro-aes-gcm-x86-64.s aes-gcm-x86.c asm/padlock-x86-64.s asm/cpuid-x86-64.s asm/padlock-common.s else AM_CFLAGS += -DASM_X86_32 -DASM_X86 -libx86_la_SOURCES += asm/appro-aes-x86.s asm/padlock-x86.s asm/cpuid-x86.s asm/padlock-common.s +libx86_la_SOURCES += asm/appro-aes-x86.s asm/padlock-x86.s asm/cpuid-x86.s endif diff --git a/lib/accelerated/x86/aes-padlock.h b/lib/accelerated/x86/aes-padlock.h index 608f5d12d7..fd5d9922ac 100644 --- a/lib/accelerated/x86/aes-padlock.h +++ b/lib/accelerated/x86/aes-padlock.h @@ -38,7 +38,11 @@ int padlock_aes_cipher_setkey(void *_ctx, const void *userkey, size_t keysize); /* asm */ unsigned int padlock_capability(void); +#ifdef ASM_X86_64 unsigned int is_padlock_nano(void); +#else +# define is_padlock_nano() 0 +#endif void padlock_reload_key(void); int padlock_ecb_encrypt(void *out, const void *inp, struct padlock_cipher_data *ctx, size_t len); diff --git a/lib/accelerated/x86/asm/padlock-common.s b/lib/accelerated/x86/asm/padlock-common.s index f61eb27c5c..4f92dc238a 100644 --- a/lib/accelerated/x86/asm/padlock-common.s +++ b/lib/accelerated/x86/asm/padlock-common.s @@ -25,20 +25,26 @@ .type is_padlock_nano,@function .align 16 is_padlock_nano: - pusha - xorl %eax,%eax + pushq %rbp + movq %rsp, %rbp + pushq %rbx + xorq %rax,%rax cpuid - movl $1,%eax + movq $1,%rax cpuid - or $0x000f,%eax - cmp $0x06ff,%eax + or $0x000f,%rax + cmp $0x06ff,%rax jne .Lno_nano - popa - mov $1,%eax + popq %rbx + mov $1,%rax + popq %rbx + leave ret .Lno_nano: - popa - xorl %eax,%eax + popq %rbx + xorq %rax,%rax + popq %rbx + leave ret .size is_padlock_nano,.-is_padlock_nano