Index: third_party/boringssl/linux-x86/crypto/cpu-x86-asm.S |
diff --git a/third_party/boringssl/linux-x86/crypto/cpu-x86-asm.S b/third_party/boringssl/linux-x86/crypto/cpu-x86-asm.S |
index 4ca8586878a668e0a272e5e0484a484de35698c4..bcd3c4cd4c36cabe3f304d047181a16404306813 100644 |
--- a/third_party/boringssl/linux-x86/crypto/cpu-x86-asm.S |
+++ b/third_party/boringssl/linux-x86/crypto/cpu-x86-asm.S |
@@ -153,11 +153,14 @@ OPENSSL_rdtsc: |
.L_OPENSSL_rdtsc_begin: |
xorl %eax,%eax |
xorl %edx,%edx |
- leal OPENSSL_ia32cap_P,%ecx |
+ call .L009PIC_me_up |
+.L009PIC_me_up: |
+ popl %ecx |
+ leal OPENSSL_ia32cap_P-.L009PIC_me_up(%ecx),%ecx |
btl $4,(%ecx) |
- jnc .L009notsc |
+ jnc .L010notsc |
.byte 0x0f,0x31 |
-.L009notsc: |
+.L010notsc: |
ret |
.size OPENSSL_rdtsc,.-.L_OPENSSL_rdtsc_begin |
.globl OPENSSL_instrument_halt |
@@ -165,16 +168,19 @@ OPENSSL_rdtsc: |
.align 16 |
OPENSSL_instrument_halt: |
.L_OPENSSL_instrument_halt_begin: |
- leal OPENSSL_ia32cap_P,%ecx |
+ call .L011PIC_me_up |
+.L011PIC_me_up: |
+ popl %ecx |
+ leal OPENSSL_ia32cap_P-.L011PIC_me_up(%ecx),%ecx |
btl $4,(%ecx) |
- jnc .L010nohalt |
+ jnc .L012nohalt |
.long 2421723150 |
andl $3,%eax |
- jnz .L010nohalt |
+ jnz .L012nohalt |
pushfl |
popl %eax |
btl $9,%eax |
- jnc .L010nohalt |
+ jnc .L012nohalt |
.byte 0x0f,0x31 |
pushl %edx |
pushl %eax |
@@ -184,7 +190,7 @@ OPENSSL_instrument_halt: |
sbbl 4(%esp),%edx |
addl $8,%esp |
ret |
-.L010nohalt: |
+.L012nohalt: |
xorl %eax,%eax |
xorl %edx,%edx |
ret |
@@ -197,21 +203,21 @@ OPENSSL_far_spin: |
pushfl |
popl %eax |
btl $9,%eax |
- jnc .L011nospin |
+ jnc .L013nospin |
movl 4(%esp),%eax |
movl 8(%esp),%ecx |
.long 2430111262 |
xorl %eax,%eax |
movl (%ecx),%edx |
- jmp .L012spin |
+ jmp .L014spin |
.align 16 |
-.L012spin: |
+.L014spin: |
incl %eax |
cmpl (%ecx),%edx |
- je .L012spin |
+ je .L014spin |
.long 529567888 |
ret |
-.L011nospin: |
+.L013nospin: |
xorl %eax,%eax |
xorl %edx,%edx |
ret |
@@ -223,12 +229,15 @@ OPENSSL_wipe_cpu: |
.L_OPENSSL_wipe_cpu_begin: |
xorl %eax,%eax |
xorl %edx,%edx |
- leal OPENSSL_ia32cap_P,%ecx |
+ call .L015PIC_me_up |
+.L015PIC_me_up: |
+ popl %ecx |
+ leal OPENSSL_ia32cap_P-.L015PIC_me_up(%ecx),%ecx |
movl (%ecx),%ecx |
btl $1,(%ecx) |
- jnc .L013no_x87 |
+ jnc .L016no_x87 |
.long 4007259865,4007259865,4007259865,4007259865,2430851995 |
-.L013no_x87: |
+.L016no_x87: |
leal 4(%esp),%eax |
ret |
.size OPENSSL_wipe_cpu,.-.L_OPENSSL_wipe_cpu_begin |
@@ -242,11 +251,11 @@ OPENSSL_atomic_add: |
pushl %ebx |
nop |
movl (%edx),%eax |
-.L014spin: |
+.L017spin: |
leal (%eax,%ecx,1),%ebx |
nop |
.long 447811568 |
- jne .L014spin |
+ jne .L017spin |
movl %ebx,%eax |
popl %ebx |
ret |
@@ -287,32 +296,32 @@ OPENSSL_cleanse: |
movl 8(%esp),%ecx |
xorl %eax,%eax |
cmpl $7,%ecx |
- jae .L015lot |
+ jae .L018lot |
cmpl $0,%ecx |
- je .L016ret |
-.L017little: |
+ je .L019ret |
+.L020little: |
movb %al,(%edx) |
subl $1,%ecx |
leal 1(%edx),%edx |
- jnz .L017little |
-.L016ret: |
+ jnz .L020little |
+.L019ret: |
ret |
.align 16 |
-.L015lot: |
+.L018lot: |
testl $3,%edx |
- jz .L018aligned |
+ jz .L021aligned |
movb %al,(%edx) |
leal -1(%ecx),%ecx |
leal 1(%edx),%edx |
- jmp .L015lot |
-.L018aligned: |
+ jmp .L018lot |
+.L021aligned: |
movl %eax,(%edx) |
leal -4(%ecx),%ecx |
testl $-4,%ecx |
leal 4(%edx),%edx |
- jnz .L018aligned |
+ jnz .L021aligned |
cmpl $0,%ecx |
- jne .L017little |
+ jne .L020little |
ret |
.size OPENSSL_cleanse,.-.L_OPENSSL_cleanse_begin |
.globl OPENSSL_ia32_rdrand |
@@ -321,14 +330,14 @@ OPENSSL_cleanse: |
OPENSSL_ia32_rdrand: |
.L_OPENSSL_ia32_rdrand_begin: |
movl $8,%ecx |
-.L019loop: |
+.L022loop: |
.byte 15,199,240 |
- jc .L020break |
- loop .L019loop |
-.L020break: |
+ jc .L023break |
+ loop .L022loop |
+.L023break: |
cmpl $0,%eax |
cmovel %ecx,%eax |
ret |
.size OPENSSL_ia32_rdrand,.-.L_OPENSSL_ia32_rdrand_begin |
.hidden OPENSSL_ia32cap_P |
-#endif |
+#endif |