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
/* 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);
.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