| ; This file is generated from a similarly-named Perl script in the BoringSSL |
| ; source tree. Do not edit by hand. |
| |
| default rel |
| %define XMMWORD |
| %define YMMWORD |
| %define ZMMWORD |
| |
| %ifdef BORINGSSL_PREFIX |
| %include "boringssl_prefix_symbols_nasm.inc" |
| %endif |
| section .text code align=64 |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| global abi_test_trampoline |
| ALIGN 16 |
| abi_test_trampoline: |
| $L$abi_test_trampoline_seh_begin: |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| sub rsp,344 |
| |
| $L$abi_test_trampoline_seh_prolog_alloc: |
| mov QWORD[112+rsp],rbx |
| |
| $L$abi_test_trampoline_seh_prolog_rbx: |
| mov QWORD[120+rsp],rbp |
| |
| $L$abi_test_trampoline_seh_prolog_rbp: |
| mov QWORD[128+rsp],rdi |
| |
| $L$abi_test_trampoline_seh_prolog_rdi: |
| mov QWORD[136+rsp],rsi |
| |
| $L$abi_test_trampoline_seh_prolog_rsi: |
| mov QWORD[144+rsp],r12 |
| |
| $L$abi_test_trampoline_seh_prolog_r12: |
| mov QWORD[152+rsp],r13 |
| |
| $L$abi_test_trampoline_seh_prolog_r13: |
| mov QWORD[160+rsp],r14 |
| |
| $L$abi_test_trampoline_seh_prolog_r14: |
| mov QWORD[168+rsp],r15 |
| |
| $L$abi_test_trampoline_seh_prolog_r15: |
| movdqa XMMWORD[176+rsp],xmm6 |
| |
| $L$abi_test_trampoline_seh_prolog_xmm6: |
| movdqa XMMWORD[192+rsp],xmm7 |
| |
| $L$abi_test_trampoline_seh_prolog_xmm7: |
| movdqa XMMWORD[208+rsp],xmm8 |
| |
| $L$abi_test_trampoline_seh_prolog_xmm8: |
| movdqa XMMWORD[224+rsp],xmm9 |
| |
| $L$abi_test_trampoline_seh_prolog_xmm9: |
| movdqa XMMWORD[240+rsp],xmm10 |
| |
| $L$abi_test_trampoline_seh_prolog_xmm10: |
| movdqa XMMWORD[256+rsp],xmm11 |
| |
| $L$abi_test_trampoline_seh_prolog_xmm11: |
| movdqa XMMWORD[272+rsp],xmm12 |
| |
| $L$abi_test_trampoline_seh_prolog_xmm12: |
| movdqa XMMWORD[288+rsp],xmm13 |
| |
| $L$abi_test_trampoline_seh_prolog_xmm13: |
| movdqa XMMWORD[304+rsp],xmm14 |
| |
| $L$abi_test_trampoline_seh_prolog_xmm14: |
| movdqa XMMWORD[320+rsp],xmm15 |
| |
| $L$abi_test_trampoline_seh_prolog_xmm15: |
| $L$abi_test_trampoline_seh_prolog_end: |
| mov rbx,QWORD[rdx] |
| mov rbp,QWORD[8+rdx] |
| mov rdi,QWORD[16+rdx] |
| mov rsi,QWORD[24+rdx] |
| mov r12,QWORD[32+rdx] |
| mov r13,QWORD[40+rdx] |
| mov r14,QWORD[48+rdx] |
| mov r15,QWORD[56+rdx] |
| movdqa xmm6,XMMWORD[64+rdx] |
| movdqa xmm7,XMMWORD[80+rdx] |
| movdqa xmm8,XMMWORD[96+rdx] |
| movdqa xmm9,XMMWORD[112+rdx] |
| movdqa xmm10,XMMWORD[128+rdx] |
| movdqa xmm11,XMMWORD[144+rdx] |
| movdqa xmm12,XMMWORD[160+rdx] |
| movdqa xmm13,XMMWORD[176+rdx] |
| movdqa xmm14,XMMWORD[192+rdx] |
| movdqa xmm15,XMMWORD[208+rdx] |
| |
| mov QWORD[88+rsp],rcx |
| mov QWORD[96+rsp],rdx |
| |
| |
| |
| |
| mov r10,r8 |
| mov r11,r9 |
| dec r11 |
| js NEAR $L$args_done |
| mov rcx,QWORD[r10] |
| add r10,8 |
| dec r11 |
| js NEAR $L$args_done |
| mov rdx,QWORD[r10] |
| add r10,8 |
| dec r11 |
| js NEAR $L$args_done |
| mov r8,QWORD[r10] |
| add r10,8 |
| dec r11 |
| js NEAR $L$args_done |
| mov r9,QWORD[r10] |
| add r10,8 |
| lea rax,[32+rsp] |
| $L$args_loop: |
| dec r11 |
| js NEAR $L$args_done |
| |
| |
| |
| |
| |
| |
| mov QWORD[104+rsp],r11 |
| mov r11,QWORD[r10] |
| mov QWORD[rax],r11 |
| mov r11,QWORD[104+rsp] |
| |
| add r10,8 |
| add rax,8 |
| jmp NEAR $L$args_loop |
| |
| $L$args_done: |
| mov rax,QWORD[88+rsp] |
| mov r10,QWORD[384+rsp] |
| test r10,r10 |
| jz NEAR $L$no_unwind |
| |
| |
| pushfq |
| or QWORD[rsp],0x100 |
| popfq |
| |
| |
| |
| nop |
| global abi_test_unwind_start |
| abi_test_unwind_start: |
| |
| call rax |
| global abi_test_unwind_return |
| abi_test_unwind_return: |
| |
| |
| |
| |
| pushfq |
| and QWORD[rsp],-0x101 |
| popfq |
| global abi_test_unwind_stop |
| abi_test_unwind_stop: |
| |
| jmp NEAR $L$call_done |
| |
| $L$no_unwind: |
| call rax |
| |
| $L$call_done: |
| |
| mov rdx,QWORD[96+rsp] |
| mov QWORD[rdx],rbx |
| mov QWORD[8+rdx],rbp |
| mov QWORD[16+rdx],rdi |
| mov QWORD[24+rdx],rsi |
| mov QWORD[32+rdx],r12 |
| mov QWORD[40+rdx],r13 |
| mov QWORD[48+rdx],r14 |
| mov QWORD[56+rdx],r15 |
| movdqa XMMWORD[64+rdx],xmm6 |
| movdqa XMMWORD[80+rdx],xmm7 |
| movdqa XMMWORD[96+rdx],xmm8 |
| movdqa XMMWORD[112+rdx],xmm9 |
| movdqa XMMWORD[128+rdx],xmm10 |
| movdqa XMMWORD[144+rdx],xmm11 |
| movdqa XMMWORD[160+rdx],xmm12 |
| movdqa XMMWORD[176+rdx],xmm13 |
| movdqa XMMWORD[192+rdx],xmm14 |
| movdqa XMMWORD[208+rdx],xmm15 |
| mov rbx,QWORD[112+rsp] |
| |
| mov rbp,QWORD[120+rsp] |
| |
| mov rdi,QWORD[128+rsp] |
| |
| mov rsi,QWORD[136+rsp] |
| |
| mov r12,QWORD[144+rsp] |
| |
| mov r13,QWORD[152+rsp] |
| |
| mov r14,QWORD[160+rsp] |
| |
| mov r15,QWORD[168+rsp] |
| |
| movdqa xmm6,XMMWORD[176+rsp] |
| |
| movdqa xmm7,XMMWORD[192+rsp] |
| |
| movdqa xmm8,XMMWORD[208+rsp] |
| |
| movdqa xmm9,XMMWORD[224+rsp] |
| |
| movdqa xmm10,XMMWORD[240+rsp] |
| |
| movdqa xmm11,XMMWORD[256+rsp] |
| |
| movdqa xmm12,XMMWORD[272+rsp] |
| |
| movdqa xmm13,XMMWORD[288+rsp] |
| |
| movdqa xmm14,XMMWORD[304+rsp] |
| |
| movdqa xmm15,XMMWORD[320+rsp] |
| |
| add rsp,344 |
| |
| |
| |
| DB 0F3h,0C3h ;repret |
| |
| $L$abi_test_trampoline_seh_end: |
| |
| |
| global abi_test_clobber_rax |
| ALIGN 16 |
| abi_test_clobber_rax: |
| xor rax,rax |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_rbx |
| ALIGN 16 |
| abi_test_clobber_rbx: |
| xor rbx,rbx |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_rcx |
| ALIGN 16 |
| abi_test_clobber_rcx: |
| xor rcx,rcx |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_rdx |
| ALIGN 16 |
| abi_test_clobber_rdx: |
| xor rdx,rdx |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_rdi |
| ALIGN 16 |
| abi_test_clobber_rdi: |
| xor rdi,rdi |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_rsi |
| ALIGN 16 |
| abi_test_clobber_rsi: |
| xor rsi,rsi |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_rbp |
| ALIGN 16 |
| abi_test_clobber_rbp: |
| xor rbp,rbp |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_r8 |
| ALIGN 16 |
| abi_test_clobber_r8: |
| xor r8,r8 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_r9 |
| ALIGN 16 |
| abi_test_clobber_r9: |
| xor r9,r9 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_r10 |
| ALIGN 16 |
| abi_test_clobber_r10: |
| xor r10,r10 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_r11 |
| ALIGN 16 |
| abi_test_clobber_r11: |
| xor r11,r11 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_r12 |
| ALIGN 16 |
| abi_test_clobber_r12: |
| xor r12,r12 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_r13 |
| ALIGN 16 |
| abi_test_clobber_r13: |
| xor r13,r13 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_r14 |
| ALIGN 16 |
| abi_test_clobber_r14: |
| xor r14,r14 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_r15 |
| ALIGN 16 |
| abi_test_clobber_r15: |
| xor r15,r15 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_xmm0 |
| ALIGN 16 |
| abi_test_clobber_xmm0: |
| pxor xmm0,xmm0 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_xmm1 |
| ALIGN 16 |
| abi_test_clobber_xmm1: |
| pxor xmm1,xmm1 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_xmm2 |
| ALIGN 16 |
| abi_test_clobber_xmm2: |
| pxor xmm2,xmm2 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_xmm3 |
| ALIGN 16 |
| abi_test_clobber_xmm3: |
| pxor xmm3,xmm3 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_xmm4 |
| ALIGN 16 |
| abi_test_clobber_xmm4: |
| pxor xmm4,xmm4 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_xmm5 |
| ALIGN 16 |
| abi_test_clobber_xmm5: |
| pxor xmm5,xmm5 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_xmm6 |
| ALIGN 16 |
| abi_test_clobber_xmm6: |
| pxor xmm6,xmm6 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_xmm7 |
| ALIGN 16 |
| abi_test_clobber_xmm7: |
| pxor xmm7,xmm7 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_xmm8 |
| ALIGN 16 |
| abi_test_clobber_xmm8: |
| pxor xmm8,xmm8 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_xmm9 |
| ALIGN 16 |
| abi_test_clobber_xmm9: |
| pxor xmm9,xmm9 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_xmm10 |
| ALIGN 16 |
| abi_test_clobber_xmm10: |
| pxor xmm10,xmm10 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_xmm11 |
| ALIGN 16 |
| abi_test_clobber_xmm11: |
| pxor xmm11,xmm11 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_xmm12 |
| ALIGN 16 |
| abi_test_clobber_xmm12: |
| pxor xmm12,xmm12 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_xmm13 |
| ALIGN 16 |
| abi_test_clobber_xmm13: |
| pxor xmm13,xmm13 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_xmm14 |
| ALIGN 16 |
| abi_test_clobber_xmm14: |
| pxor xmm14,xmm14 |
| DB 0F3h,0C3h ;repret |
| |
| |
| global abi_test_clobber_xmm15 |
| ALIGN 16 |
| abi_test_clobber_xmm15: |
| pxor xmm15,xmm15 |
| DB 0F3h,0C3h ;repret |
| |
| |
| |
| |
| |
| global abi_test_bad_unwind_wrong_register |
| ALIGN 16 |
| abi_test_bad_unwind_wrong_register: |
| |
| $L$abi_test_bad_unwind_wrong_register_seh_begin: |
| push r12 |
| |
| $L$abi_test_bad_unwind_wrong_register_seh_push_r13: |
| |
| |
| |
| nop |
| pop r12 |
| |
| DB 0F3h,0C3h ;repret |
| $L$abi_test_bad_unwind_wrong_register_seh_end: |
| |
| |
| |
| |
| |
| |
| |
| global abi_test_bad_unwind_temporary |
| ALIGN 16 |
| abi_test_bad_unwind_temporary: |
| |
| $L$abi_test_bad_unwind_temporary_seh_begin: |
| push r12 |
| |
| $L$abi_test_bad_unwind_temporary_seh_push_r12: |
| |
| mov rax,r12 |
| inc rax |
| mov QWORD[rsp],rax |
| |
| |
| |
| mov QWORD[rsp],r12 |
| |
| |
| pop r12 |
| |
| DB 0F3h,0C3h ;repret |
| $L$abi_test_bad_unwind_temporary_seh_end: |
| |
| |
| |
| |
| |
| |
| |
| global abi_test_get_and_clear_direction_flag |
| abi_test_get_and_clear_direction_flag: |
| pushfq |
| pop rax |
| and rax,0x400 |
| shr rax,10 |
| cld |
| DB 0F3h,0C3h ;repret |
| |
| |
| |
| |
| |
| global abi_test_set_direction_flag |
| abi_test_set_direction_flag: |
| std |
| DB 0F3h,0C3h ;repret |
| |
| |
| |
| |
| |
| |
| global abi_test_bad_unwind_epilog |
| ALIGN 16 |
| abi_test_bad_unwind_epilog: |
| $L$abi_test_bad_unwind_epilog_seh_begin: |
| push r12 |
| $L$abi_test_bad_unwind_epilog_seh_push_r12: |
| |
| nop |
| |
| |
| pop r12 |
| nop |
| DB 0F3h,0C3h ;repret |
| $L$abi_test_bad_unwind_epilog_seh_end: |
| |
| section .pdata rdata align=4 |
| ALIGN 4 |
| |
| DD $L$abi_test_trampoline_seh_begin wrt ..imagebase |
| DD $L$abi_test_trampoline_seh_end wrt ..imagebase |
| DD $L$abi_test_trampoline_seh_info wrt ..imagebase |
| |
| DD $L$abi_test_bad_unwind_wrong_register_seh_begin wrt ..imagebase |
| DD $L$abi_test_bad_unwind_wrong_register_seh_end wrt ..imagebase |
| DD $L$abi_test_bad_unwind_wrong_register_seh_info wrt ..imagebase |
| |
| DD $L$abi_test_bad_unwind_temporary_seh_begin wrt ..imagebase |
| DD $L$abi_test_bad_unwind_temporary_seh_end wrt ..imagebase |
| DD $L$abi_test_bad_unwind_temporary_seh_info wrt ..imagebase |
| |
| DD $L$abi_test_bad_unwind_epilog_seh_begin wrt ..imagebase |
| DD $L$abi_test_bad_unwind_epilog_seh_end wrt ..imagebase |
| DD $L$abi_test_bad_unwind_epilog_seh_info wrt ..imagebase |
| |
| section .xdata rdata align=8 |
| ALIGN 8 |
| $L$abi_test_trampoline_seh_info: |
| |
| DB 1 |
| DB $L$abi_test_trampoline_seh_prolog_end-$L$abi_test_trampoline_seh_begin |
| DB 38 |
| DB 0 |
| DB $L$abi_test_trampoline_seh_prolog_xmm15-$L$abi_test_trampoline_seh_begin |
| DB 248 |
| DW 20 |
| DB $L$abi_test_trampoline_seh_prolog_xmm14-$L$abi_test_trampoline_seh_begin |
| DB 232 |
| DW 19 |
| DB $L$abi_test_trampoline_seh_prolog_xmm13-$L$abi_test_trampoline_seh_begin |
| DB 216 |
| DW 18 |
| DB $L$abi_test_trampoline_seh_prolog_xmm12-$L$abi_test_trampoline_seh_begin |
| DB 200 |
| DW 17 |
| DB $L$abi_test_trampoline_seh_prolog_xmm11-$L$abi_test_trampoline_seh_begin |
| DB 184 |
| DW 16 |
| DB $L$abi_test_trampoline_seh_prolog_xmm10-$L$abi_test_trampoline_seh_begin |
| DB 168 |
| DW 15 |
| DB $L$abi_test_trampoline_seh_prolog_xmm9-$L$abi_test_trampoline_seh_begin |
| DB 152 |
| DW 14 |
| DB $L$abi_test_trampoline_seh_prolog_xmm8-$L$abi_test_trampoline_seh_begin |
| DB 136 |
| DW 13 |
| DB $L$abi_test_trampoline_seh_prolog_xmm7-$L$abi_test_trampoline_seh_begin |
| DB 120 |
| DW 12 |
| DB $L$abi_test_trampoline_seh_prolog_xmm6-$L$abi_test_trampoline_seh_begin |
| DB 104 |
| DW 11 |
| DB $L$abi_test_trampoline_seh_prolog_r15-$L$abi_test_trampoline_seh_begin |
| DB 244 |
| DW 21 |
| DB $L$abi_test_trampoline_seh_prolog_r14-$L$abi_test_trampoline_seh_begin |
| DB 228 |
| DW 20 |
| DB $L$abi_test_trampoline_seh_prolog_r13-$L$abi_test_trampoline_seh_begin |
| DB 212 |
| DW 19 |
| DB $L$abi_test_trampoline_seh_prolog_r12-$L$abi_test_trampoline_seh_begin |
| DB 196 |
| DW 18 |
| DB $L$abi_test_trampoline_seh_prolog_rsi-$L$abi_test_trampoline_seh_begin |
| DB 100 |
| DW 17 |
| DB $L$abi_test_trampoline_seh_prolog_rdi-$L$abi_test_trampoline_seh_begin |
| DB 116 |
| DW 16 |
| DB $L$abi_test_trampoline_seh_prolog_rbp-$L$abi_test_trampoline_seh_begin |
| DB 84 |
| DW 15 |
| DB $L$abi_test_trampoline_seh_prolog_rbx-$L$abi_test_trampoline_seh_begin |
| DB 52 |
| DW 14 |
| DB $L$abi_test_trampoline_seh_prolog_alloc-$L$abi_test_trampoline_seh_begin |
| DB 1 |
| DW 43 |
| |
| |
| ALIGN 8 |
| $L$abi_test_bad_unwind_wrong_register_seh_info: |
| DB 1 |
| DB $L$abi_test_bad_unwind_wrong_register_seh_push_r13-$L$abi_test_bad_unwind_wrong_register_seh_begin |
| DB 1 |
| DB 0 |
| |
| DB $L$abi_test_bad_unwind_wrong_register_seh_push_r13-$L$abi_test_bad_unwind_wrong_register_seh_begin |
| DB 208 |
| |
| ALIGN 8 |
| $L$abi_test_bad_unwind_temporary_seh_info: |
| DB 1 |
| DB $L$abi_test_bad_unwind_temporary_seh_push_r12-$L$abi_test_bad_unwind_temporary_seh_begin |
| DB 1 |
| DB 0 |
| |
| DB $L$abi_test_bad_unwind_temporary_seh_push_r12-$L$abi_test_bad_unwind_temporary_seh_begin |
| DB 192 |
| |
| ALIGN 8 |
| $L$abi_test_bad_unwind_epilog_seh_info: |
| DB 1 |
| DB $L$abi_test_bad_unwind_epilog_seh_push_r12-$L$abi_test_bad_unwind_epilog_seh_begin |
| DB 1 |
| DB 0 |
| |
| DB $L$abi_test_bad_unwind_epilog_seh_push_r12-$L$abi_test_bad_unwind_epilog_seh_begin |
| DB 192 |