shithub: tlsclient

ref: bfe9da47cfa2f51ebef78c59332b5ba2deba306d
dir: /third_party/boringssl/linux-x86_64/crypto/test/trampoline-x86_64.S/

View raw version
// This file is generated from a similarly-named Perl script in the BoringSSL
// source tree. Do not edit by hand.

#if defined(__has_feature)
#if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM)
#define OPENSSL_NO_ASM
#endif
#endif

#if defined(__x86_64__) && !defined(OPENSSL_NO_ASM)
#if defined(BORINGSSL_PREFIX)
#include <boringssl_prefix_symbols_asm.h>
#endif
.text	








.type	abi_test_trampoline, @function
.globl	abi_test_trampoline
.hidden abi_test_trampoline
.align	16
abi_test_trampoline:
.Labi_test_trampoline_seh_begin:
.cfi_startproc	









	subq	$120,%rsp
.cfi_adjust_cfa_offset	120
.Labi_test_trampoline_seh_prolog_alloc:
	movq	%r8,48(%rsp)
	movq	%rbx,64(%rsp)
.cfi_offset	rbx, -64
.Labi_test_trampoline_seh_prolog_rbx:
	movq	%rbp,72(%rsp)
.cfi_offset	rbp, -56
.Labi_test_trampoline_seh_prolog_rbp:
	movq	%r12,80(%rsp)
.cfi_offset	r12, -48
.Labi_test_trampoline_seh_prolog_r12:
	movq	%r13,88(%rsp)
.cfi_offset	r13, -40
.Labi_test_trampoline_seh_prolog_r13:
	movq	%r14,96(%rsp)
.cfi_offset	r14, -32
.Labi_test_trampoline_seh_prolog_r14:
	movq	%r15,104(%rsp)
.cfi_offset	r15, -24
.Labi_test_trampoline_seh_prolog_r15:
.Labi_test_trampoline_seh_prolog_end:
	movq	0(%rsi),%rbx
	movq	8(%rsi),%rbp
	movq	16(%rsi),%r12
	movq	24(%rsi),%r13
	movq	32(%rsi),%r14
	movq	40(%rsi),%r15

	movq	%rdi,32(%rsp)
	movq	%rsi,40(%rsp)




	movq	%rdx,%r10
	movq	%rcx,%r11
	decq	%r11
	js	.Largs_done
	movq	(%r10),%rdi
	addq	$8,%r10
	decq	%r11
	js	.Largs_done
	movq	(%r10),%rsi
	addq	$8,%r10
	decq	%r11
	js	.Largs_done
	movq	(%r10),%rdx
	addq	$8,%r10
	decq	%r11
	js	.Largs_done
	movq	(%r10),%rcx
	addq	$8,%r10
	decq	%r11
	js	.Largs_done
	movq	(%r10),%r8
	addq	$8,%r10
	decq	%r11
	js	.Largs_done
	movq	(%r10),%r9
	addq	$8,%r10
	leaq	0(%rsp),%rax
.Largs_loop:
	decq	%r11
	js	.Largs_done






	movq	%r11,56(%rsp)
	movq	(%r10),%r11
	movq	%r11,(%rax)
	movq	56(%rsp),%r11

	addq	$8,%r10
	addq	$8,%rax
	jmp	.Largs_loop

.Largs_done:
	movq	32(%rsp),%rax
	movq	48(%rsp),%r10
	testq	%r10,%r10
	jz	.Lno_unwind


	pushfq
	orq	$0x100,0(%rsp)
	popfq



	nop
.globl	abi_test_unwind_start
.hidden abi_test_unwind_start
abi_test_unwind_start:

	call	*%rax
.globl	abi_test_unwind_return
.hidden abi_test_unwind_return
abi_test_unwind_return:




	pushfq
	andq	$-0x101,0(%rsp)
	popfq
.globl	abi_test_unwind_stop
.hidden abi_test_unwind_stop
abi_test_unwind_stop:

	jmp	.Lcall_done

.Lno_unwind:
	call	*%rax

.Lcall_done:

	movq	40(%rsp),%rsi
	movq	%rbx,0(%rsi)
	movq	%rbp,8(%rsi)
	movq	%r12,16(%rsi)
	movq	%r13,24(%rsi)
	movq	%r14,32(%rsi)
	movq	%r15,40(%rsi)
	movq	64(%rsp),%rbx
.cfi_restore	rbx
	movq	72(%rsp),%rbp
.cfi_restore	rbp
	movq	80(%rsp),%r12
.cfi_restore	r12
	movq	88(%rsp),%r13
.cfi_restore	r13
	movq	96(%rsp),%r14
.cfi_restore	r14
	movq	104(%rsp),%r15
.cfi_restore	r15
	addq	$120,%rsp
.cfi_adjust_cfa_offset	-120


	.byte	0xf3,0xc3
.cfi_endproc	
.Labi_test_trampoline_seh_end:
.size	abi_test_trampoline,.-abi_test_trampoline
.type	abi_test_clobber_rax, @function
.globl	abi_test_clobber_rax
.hidden abi_test_clobber_rax
.align	16
abi_test_clobber_rax:
	xorq	%rax,%rax
	.byte	0xf3,0xc3
.size	abi_test_clobber_rax,.-abi_test_clobber_rax
.type	abi_test_clobber_rbx, @function
.globl	abi_test_clobber_rbx
.hidden abi_test_clobber_rbx
.align	16
abi_test_clobber_rbx:
	xorq	%rbx,%rbx
	.byte	0xf3,0xc3
.size	abi_test_clobber_rbx,.-abi_test_clobber_rbx
.type	abi_test_clobber_rcx, @function
.globl	abi_test_clobber_rcx
.hidden abi_test_clobber_rcx
.align	16
abi_test_clobber_rcx:
	xorq	%rcx,%rcx
	.byte	0xf3,0xc3
.size	abi_test_clobber_rcx,.-abi_test_clobber_rcx
.type	abi_test_clobber_rdx, @function
.globl	abi_test_clobber_rdx
.hidden abi_test_clobber_rdx
.align	16
abi_test_clobber_rdx:
	xorq	%rdx,%rdx
	.byte	0xf3,0xc3
.size	abi_test_clobber_rdx,.-abi_test_clobber_rdx
.type	abi_test_clobber_rdi, @function
.globl	abi_test_clobber_rdi
.hidden abi_test_clobber_rdi
.align	16
abi_test_clobber_rdi:
	xorq	%rdi,%rdi
	.byte	0xf3,0xc3
.size	abi_test_clobber_rdi,.-abi_test_clobber_rdi
.type	abi_test_clobber_rsi, @function
.globl	abi_test_clobber_rsi
.hidden abi_test_clobber_rsi
.align	16
abi_test_clobber_rsi:
	xorq	%rsi,%rsi
	.byte	0xf3,0xc3
.size	abi_test_clobber_rsi,.-abi_test_clobber_rsi
.type	abi_test_clobber_rbp, @function
.globl	abi_test_clobber_rbp
.hidden abi_test_clobber_rbp
.align	16
abi_test_clobber_rbp:
	xorq	%rbp,%rbp
	.byte	0xf3,0xc3
.size	abi_test_clobber_rbp,.-abi_test_clobber_rbp
.type	abi_test_clobber_r8, @function
.globl	abi_test_clobber_r8
.hidden abi_test_clobber_r8
.align	16
abi_test_clobber_r8:
	xorq	%r8,%r8
	.byte	0xf3,0xc3
.size	abi_test_clobber_r8,.-abi_test_clobber_r8
.type	abi_test_clobber_r9, @function
.globl	abi_test_clobber_r9
.hidden abi_test_clobber_r9
.align	16
abi_test_clobber_r9:
	xorq	%r9,%r9
	.byte	0xf3,0xc3
.size	abi_test_clobber_r9,.-abi_test_clobber_r9
.type	abi_test_clobber_r10, @function
.globl	abi_test_clobber_r10
.hidden abi_test_clobber_r10
.align	16
abi_test_clobber_r10:
	xorq	%r10,%r10
	.byte	0xf3,0xc3
.size	abi_test_clobber_r10,.-abi_test_clobber_r10
.type	abi_test_clobber_r11, @function
.globl	abi_test_clobber_r11
.hidden abi_test_clobber_r11
.align	16
abi_test_clobber_r11:
	xorq	%r11,%r11
	.byte	0xf3,0xc3
.size	abi_test_clobber_r11,.-abi_test_clobber_r11
.type	abi_test_clobber_r12, @function
.globl	abi_test_clobber_r12
.hidden abi_test_clobber_r12
.align	16
abi_test_clobber_r12:
	xorq	%r12,%r12
	.byte	0xf3,0xc3
.size	abi_test_clobber_r12,.-abi_test_clobber_r12
.type	abi_test_clobber_r13, @function
.globl	abi_test_clobber_r13
.hidden abi_test_clobber_r13
.align	16
abi_test_clobber_r13:
	xorq	%r13,%r13
	.byte	0xf3,0xc3
.size	abi_test_clobber_r13,.-abi_test_clobber_r13
.type	abi_test_clobber_r14, @function
.globl	abi_test_clobber_r14
.hidden abi_test_clobber_r14
.align	16
abi_test_clobber_r14:
	xorq	%r14,%r14
	.byte	0xf3,0xc3
.size	abi_test_clobber_r14,.-abi_test_clobber_r14
.type	abi_test_clobber_r15, @function
.globl	abi_test_clobber_r15
.hidden abi_test_clobber_r15
.align	16
abi_test_clobber_r15:
	xorq	%r15,%r15
	.byte	0xf3,0xc3
.size	abi_test_clobber_r15,.-abi_test_clobber_r15
.type	abi_test_clobber_xmm0, @function
.globl	abi_test_clobber_xmm0
.hidden abi_test_clobber_xmm0
.align	16
abi_test_clobber_xmm0:
	pxor	%xmm0,%xmm0
	.byte	0xf3,0xc3
.size	abi_test_clobber_xmm0,.-abi_test_clobber_xmm0
.type	abi_test_clobber_xmm1, @function
.globl	abi_test_clobber_xmm1
.hidden abi_test_clobber_xmm1
.align	16
abi_test_clobber_xmm1:
	pxor	%xmm1,%xmm1
	.byte	0xf3,0xc3
.size	abi_test_clobber_xmm1,.-abi_test_clobber_xmm1
.type	abi_test_clobber_xmm2, @function
.globl	abi_test_clobber_xmm2
.hidden abi_test_clobber_xmm2
.align	16
abi_test_clobber_xmm2:
	pxor	%xmm2,%xmm2
	.byte	0xf3,0xc3
.size	abi_test_clobber_xmm2,.-abi_test_clobber_xmm2
.type	abi_test_clobber_xmm3, @function
.globl	abi_test_clobber_xmm3
.hidden abi_test_clobber_xmm3
.align	16
abi_test_clobber_xmm3:
	pxor	%xmm3,%xmm3
	.byte	0xf3,0xc3
.size	abi_test_clobber_xmm3,.-abi_test_clobber_xmm3
.type	abi_test_clobber_xmm4, @function
.globl	abi_test_clobber_xmm4
.hidden abi_test_clobber_xmm4
.align	16
abi_test_clobber_xmm4:
	pxor	%xmm4,%xmm4
	.byte	0xf3,0xc3
.size	abi_test_clobber_xmm4,.-abi_test_clobber_xmm4
.type	abi_test_clobber_xmm5, @function
.globl	abi_test_clobber_xmm5
.hidden abi_test_clobber_xmm5
.align	16
abi_test_clobber_xmm5:
	pxor	%xmm5,%xmm5
	.byte	0xf3,0xc3
.size	abi_test_clobber_xmm5,.-abi_test_clobber_xmm5
.type	abi_test_clobber_xmm6, @function
.globl	abi_test_clobber_xmm6
.hidden abi_test_clobber_xmm6
.align	16
abi_test_clobber_xmm6:
	pxor	%xmm6,%xmm6
	.byte	0xf3,0xc3
.size	abi_test_clobber_xmm6,.-abi_test_clobber_xmm6
.type	abi_test_clobber_xmm7, @function
.globl	abi_test_clobber_xmm7
.hidden abi_test_clobber_xmm7
.align	16
abi_test_clobber_xmm7:
	pxor	%xmm7,%xmm7
	.byte	0xf3,0xc3
.size	abi_test_clobber_xmm7,.-abi_test_clobber_xmm7
.type	abi_test_clobber_xmm8, @function
.globl	abi_test_clobber_xmm8
.hidden abi_test_clobber_xmm8
.align	16
abi_test_clobber_xmm8:
	pxor	%xmm8,%xmm8
	.byte	0xf3,0xc3
.size	abi_test_clobber_xmm8,.-abi_test_clobber_xmm8
.type	abi_test_clobber_xmm9, @function
.globl	abi_test_clobber_xmm9
.hidden abi_test_clobber_xmm9
.align	16
abi_test_clobber_xmm9:
	pxor	%xmm9,%xmm9
	.byte	0xf3,0xc3
.size	abi_test_clobber_xmm9,.-abi_test_clobber_xmm9
.type	abi_test_clobber_xmm10, @function
.globl	abi_test_clobber_xmm10
.hidden abi_test_clobber_xmm10
.align	16
abi_test_clobber_xmm10:
	pxor	%xmm10,%xmm10
	.byte	0xf3,0xc3
.size	abi_test_clobber_xmm10,.-abi_test_clobber_xmm10
.type	abi_test_clobber_xmm11, @function
.globl	abi_test_clobber_xmm11
.hidden abi_test_clobber_xmm11
.align	16
abi_test_clobber_xmm11:
	pxor	%xmm11,%xmm11
	.byte	0xf3,0xc3
.size	abi_test_clobber_xmm11,.-abi_test_clobber_xmm11
.type	abi_test_clobber_xmm12, @function
.globl	abi_test_clobber_xmm12
.hidden abi_test_clobber_xmm12
.align	16
abi_test_clobber_xmm12:
	pxor	%xmm12,%xmm12
	.byte	0xf3,0xc3
.size	abi_test_clobber_xmm12,.-abi_test_clobber_xmm12
.type	abi_test_clobber_xmm13, @function
.globl	abi_test_clobber_xmm13
.hidden abi_test_clobber_xmm13
.align	16
abi_test_clobber_xmm13:
	pxor	%xmm13,%xmm13
	.byte	0xf3,0xc3
.size	abi_test_clobber_xmm13,.-abi_test_clobber_xmm13
.type	abi_test_clobber_xmm14, @function
.globl	abi_test_clobber_xmm14
.hidden abi_test_clobber_xmm14
.align	16
abi_test_clobber_xmm14:
	pxor	%xmm14,%xmm14
	.byte	0xf3,0xc3
.size	abi_test_clobber_xmm14,.-abi_test_clobber_xmm14
.type	abi_test_clobber_xmm15, @function
.globl	abi_test_clobber_xmm15
.hidden abi_test_clobber_xmm15
.align	16
abi_test_clobber_xmm15:
	pxor	%xmm15,%xmm15
	.byte	0xf3,0xc3
.size	abi_test_clobber_xmm15,.-abi_test_clobber_xmm15



.type	abi_test_bad_unwind_wrong_register, @function
.globl	abi_test_bad_unwind_wrong_register
.hidden abi_test_bad_unwind_wrong_register
.align	16
abi_test_bad_unwind_wrong_register:
.cfi_startproc	
.Labi_test_bad_unwind_wrong_register_seh_begin:
	pushq	%r12
.cfi_adjust_cfa_offset	8
.cfi_offset	%r13,-16
.Labi_test_bad_unwind_wrong_register_seh_push_r13:



	nop
	popq	%r12
.cfi_adjust_cfa_offset	-8
.cfi_restore	%r12
	.byte	0xf3,0xc3
.Labi_test_bad_unwind_wrong_register_seh_end:
.cfi_endproc	
.size	abi_test_bad_unwind_wrong_register,.-abi_test_bad_unwind_wrong_register




.type	abi_test_bad_unwind_temporary, @function
.globl	abi_test_bad_unwind_temporary
.hidden abi_test_bad_unwind_temporary
.align	16
abi_test_bad_unwind_temporary:
.cfi_startproc	
.Labi_test_bad_unwind_temporary_seh_begin:
	pushq	%r12
.cfi_adjust_cfa_offset	8
.cfi_offset	%r12,-16
.Labi_test_bad_unwind_temporary_seh_push_r12:

	movq	%r12,%rax
	incq	%rax
	movq	%rax,(%rsp)



	movq	%r12,(%rsp)


	popq	%r12
.cfi_adjust_cfa_offset	-8
.cfi_restore	%r12
	.byte	0xf3,0xc3
.Labi_test_bad_unwind_temporary_seh_end:
.cfi_endproc	
.size	abi_test_bad_unwind_temporary,.-abi_test_bad_unwind_temporary




.type	abi_test_set_direction_flag, @function
.globl	abi_test_get_and_clear_direction_flag
.hidden abi_test_get_and_clear_direction_flag
abi_test_get_and_clear_direction_flag:
	pushfq
	popq	%rax
	andq	$0x400,%rax
	shrq	$10,%rax
	cld
	.byte	0xf3,0xc3
.size	abi_test_get_and_clear_direction_flag,.-abi_test_get_and_clear_direction_flag



.type	abi_test_set_direction_flag, @function
.globl	abi_test_set_direction_flag
.hidden abi_test_set_direction_flag
abi_test_set_direction_flag:
	std
	.byte	0xf3,0xc3
.size	abi_test_set_direction_flag,.-abi_test_set_direction_flag
#endif
.section	.note.GNU-stack,"",@progbits