summaryrefslogtreecommitdiffstats
path: root/win-x86/crypto/cpu-x86-asm.asm
diff options
context:
space:
mode:
Diffstat (limited to 'win-x86/crypto/cpu-x86-asm.asm')
-rw-r--r--win-x86/crypto/cpu-x86-asm.asm303
1 files changed, 0 insertions, 303 deletions
diff --git a/win-x86/crypto/cpu-x86-asm.asm b/win-x86/crypto/cpu-x86-asm.asm
deleted file mode 100644
index 4317a73..0000000
--- a/win-x86/crypto/cpu-x86-asm.asm
+++ /dev/null
@@ -1,303 +0,0 @@
-%ifidn __OUTPUT_FORMAT__,obj
-section code use32 class=code align=64
-%elifidn __OUTPUT_FORMAT__,win32
-%ifdef __YASM_VERSION_ID__
-%if __YASM_VERSION_ID__ < 01010000h
-%error yasm version 1.1.0 or later needed.
-%endif
-; Yasm automatically includes .00 and complains about redefining it.
-; https://www.tortall.net/projects/yasm/manual/html/objfmt-win32-safeseh.html
-%else
-$@feat.00 equ 1
-%endif
-section .text code align=64
-%else
-section .text code
-%endif
-global _OPENSSL_ia32_cpuid
-align 16
-_OPENSSL_ia32_cpuid:
-L$_OPENSSL_ia32_cpuid_begin:
- push ebp
- push ebx
- push esi
- push edi
- xor edx,edx
- pushfd
- pop eax
- mov ecx,eax
- xor eax,2097152
- push eax
- popfd
- pushfd
- pop eax
- xor ecx,eax
- xor eax,eax
- bt ecx,21
- jnc NEAR L$000nocpuid
- mov esi,DWORD [20+esp]
- mov DWORD [8+esi],eax
- cpuid
- mov edi,eax
- xor eax,eax
- cmp ebx,1970169159
- setne al
- mov ebp,eax
- cmp edx,1231384169
- setne al
- or ebp,eax
- cmp ecx,1818588270
- setne al
- or ebp,eax
- jz NEAR L$001intel
- cmp ebx,1752462657
- setne al
- mov esi,eax
- cmp edx,1769238117
- setne al
- or esi,eax
- cmp ecx,1145913699
- setne al
- or esi,eax
- jnz NEAR L$001intel
- mov eax,2147483648
- cpuid
- cmp eax,2147483649
- jb NEAR L$001intel
- mov esi,eax
- mov eax,2147483649
- cpuid
- or ebp,ecx
- and ebp,2049
- cmp esi,2147483656
- jb NEAR L$001intel
- mov eax,2147483656
- cpuid
- movzx esi,cl
- inc esi
- mov eax,1
- xor ecx,ecx
- cpuid
- bt edx,28
- jnc NEAR L$002generic
- shr ebx,16
- and ebx,255
- cmp ebx,esi
- ja NEAR L$002generic
- and edx,4026531839
- jmp NEAR L$002generic
-L$001intel:
- cmp edi,7
- jb NEAR L$003cacheinfo
- mov esi,DWORD [20+esp]
- mov eax,7
- xor ecx,ecx
- cpuid
- mov DWORD [8+esi],ebx
-L$003cacheinfo:
- cmp edi,4
- mov edi,-1
- jb NEAR L$004nocacheinfo
- mov eax,4
- mov ecx,0
- cpuid
- mov edi,eax
- shr edi,14
- and edi,4095
-L$004nocacheinfo:
- mov eax,1
- xor ecx,ecx
- cpuid
- and edx,3220176895
- cmp ebp,0
- jne NEAR L$005notintel
- or edx,1073741824
-L$005notintel:
- bt edx,28
- jnc NEAR L$002generic
- and edx,4026531839
- cmp edi,0
- je NEAR L$002generic
- or edx,268435456
- shr ebx,16
- cmp bl,1
- ja NEAR L$002generic
- and edx,4026531839
-L$002generic:
- and ebp,2048
- and ecx,4294965247
- mov esi,edx
- or ebp,ecx
- bt ecx,27
- jnc NEAR L$006clear_avx
- xor ecx,ecx
-db 15,1,208
- and eax,6
- cmp eax,6
- je NEAR L$007done
- cmp eax,2
- je NEAR L$006clear_avx
-L$008clear_xmm:
- and ebp,4261412861
- and esi,4278190079
-L$006clear_avx:
- and ebp,4026525695
- mov edi,DWORD [20+esp]
- and DWORD [8+edi],4294967263
-L$007done:
- mov eax,esi
- mov edx,ebp
-L$000nocpuid:
- pop edi
- pop esi
- pop ebx
- pop ebp
- ret
-;extern _OPENSSL_ia32cap_P
-global _OPENSSL_rdtsc
-align 16
-_OPENSSL_rdtsc:
-L$_OPENSSL_rdtsc_begin:
- xor eax,eax
- xor edx,edx
- lea ecx,[_OPENSSL_ia32cap_P]
- bt DWORD [ecx],4
- jnc NEAR L$009notsc
- rdtsc
-L$009notsc:
- ret
-global _OPENSSL_instrument_halt
-align 16
-_OPENSSL_instrument_halt:
-L$_OPENSSL_instrument_halt_begin:
- lea ecx,[_OPENSSL_ia32cap_P]
- bt DWORD [ecx],4
- jnc NEAR L$010nohalt
-dd 2421723150
- and eax,3
- jnz NEAR L$010nohalt
- pushfd
- pop eax
- bt eax,9
- jnc NEAR L$010nohalt
- rdtsc
- push edx
- push eax
- hlt
- rdtsc
- sub eax,DWORD [esp]
- sbb edx,DWORD [4+esp]
- add esp,8
- ret
-L$010nohalt:
- xor eax,eax
- xor edx,edx
- ret
-global _OPENSSL_far_spin
-align 16
-_OPENSSL_far_spin:
-L$_OPENSSL_far_spin_begin:
- pushfd
- pop eax
- bt eax,9
- jnc NEAR L$011nospin
- mov eax,DWORD [4+esp]
- mov ecx,DWORD [8+esp]
-dd 2430111262
- xor eax,eax
- mov edx,DWORD [ecx]
- jmp NEAR L$012spin
-align 16
-L$012spin:
- inc eax
- cmp edx,DWORD [ecx]
- je NEAR L$012spin
-dd 529567888
- ret
-L$011nospin:
- xor eax,eax
- xor edx,edx
- ret
-global _OPENSSL_wipe_cpu
-align 16
-_OPENSSL_wipe_cpu:
-L$_OPENSSL_wipe_cpu_begin:
- xor eax,eax
- xor edx,edx
- lea ecx,[_OPENSSL_ia32cap_P]
- mov ecx,DWORD [ecx]
- bt DWORD [ecx],1
- jnc NEAR L$013no_x87
- and ecx,83886080
- cmp ecx,83886080
- jne NEAR L$014no_sse2
- pxor xmm0,xmm0
- pxor xmm1,xmm1
- pxor xmm2,xmm2
- pxor xmm3,xmm3
- pxor xmm4,xmm4
- pxor xmm5,xmm5
- pxor xmm6,xmm6
- pxor xmm7,xmm7
-L$014no_sse2:
-dd 4007259865,4007259865,4007259865,4007259865,2430851995
-L$013no_x87:
- lea eax,[4+esp]
- ret
-global _OPENSSL_atomic_add
-align 16
-_OPENSSL_atomic_add:
-L$_OPENSSL_atomic_add_begin:
- mov edx,DWORD [4+esp]
- mov ecx,DWORD [8+esp]
- push ebx
- nop
- mov eax,DWORD [edx]
-L$015spin:
- lea ebx,[ecx*1+eax]
- nop
-dd 447811568
- jne NEAR L$015spin
- mov eax,ebx
- pop ebx
- ret
-global _OPENSSL_indirect_call
-align 16
-_OPENSSL_indirect_call:
-L$_OPENSSL_indirect_call_begin:
- push ebp
- mov ebp,esp
- sub esp,28
- mov ecx,DWORD [12+ebp]
- mov DWORD [esp],ecx
- mov edx,DWORD [16+ebp]
- mov DWORD [4+esp],edx
- mov eax,DWORD [20+ebp]
- mov DWORD [8+esp],eax
- mov eax,DWORD [24+ebp]
- mov DWORD [12+esp],eax
- mov eax,DWORD [28+ebp]
- mov DWORD [16+esp],eax
- mov eax,DWORD [32+ebp]
- mov DWORD [20+esp],eax
- mov eax,DWORD [36+ebp]
- mov DWORD [24+esp],eax
- call DWORD [8+ebp]
- mov esp,ebp
- pop ebp
- ret
-global _OPENSSL_ia32_rdrand
-align 16
-_OPENSSL_ia32_rdrand:
-L$_OPENSSL_ia32_rdrand_begin:
- mov ecx,8
-L$016loop:
-db 15,199,240
- jc NEAR L$017break
- loop L$016loop
-L$017break:
- cmp eax,0
- cmove eax,ecx
- ret
-segment .bss
-common _OPENSSL_ia32cap_P 16