Blame src/process/nt64/tt_fork_v1_x86_64.asm

4f3fac
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
4f3fac
;;  ntapi: Native API core library                      ;;
4f3fac
;;  Copyright (C) 2013,2014,2015  Z. Gilboa             ;;
4f3fac
;;  Released under GPLv2 and GPLv3; see COPYING.NTAPI.  ;;
4f3fac
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
dd89bb
dd89bb
TITLE tt_fork_x86_64
dd89bb
dd89bb
.data
dd89bb
__tt_fork_impl_v1 PROTO C
dd89bb
dd89bb
.code
dd89bb
__tt_fork_v1 PROC
dd89bb
	push	rbp
dd89bb
	push	rcx
dd89bb
	push	rdx
dd89bb
	push	rbx
dd89bb
	push	rsi
dd89bb
	push	rdi
dd89bb
	push	r8
dd89bb
	push	r9
dd89bb
	push	r10
dd89bb
	push	r11
dd89bb
	push	r12
dd89bb
	push	r13
dd89bb
	push	r14
dd89bb
	push	r15
dd89bb
dd89bb
	sub rsp, 40h
dd89bb
dd89bb
	mov  rdx, rsp
dd89bb
	and  rdx, 15
dd89bb
	test rdx, rdx
dd89bb
	jne	__tt_fork_impl_adj_call
dd89bb
dd89bb
	mov	rcx, rsp
dd89bb
	call __tt_fork_impl_v1
dd89bb
dd89bb
	add rsp, 40h
dd89bb
dd89bb
	pop	r15
dd89bb
	pop	r14
dd89bb
	pop	r13
dd89bb
	pop	r12
dd89bb
	pop	r11
dd89bb
	pop	r10
dd89bb
	pop	r9
dd89bb
	pop	r8
dd89bb
	pop	rdi
dd89bb
	pop	rsi
dd89bb
	pop	rbx
dd89bb
	pop	rdx
dd89bb
	pop	rcx
dd89bb
	pop	rbp
dd89bb
	ret
dd89bb
__tt_fork_v1 ENDP
dd89bb
dd89bb
__tt_fork_impl_adj_call PROC
dd89bb
	push rdi
dd89bb
dd89bb
	mov	rcx, rsp
dd89bb
	mov	rdx, 1
dd89bb
	call __tt_fork_impl_v1
dd89bb
dd89bb
	pop	rdi
dd89bb
dd89bb
	add rsp, 40h
dd89bb
dd89bb
	pop	r15
dd89bb
	pop	r14
dd89bb
	pop	r13
dd89bb
	pop	r12
dd89bb
	pop	r11
dd89bb
	pop	r10
dd89bb
	pop	r9
dd89bb
	pop	r8
dd89bb
	pop	rdi
dd89bb
	pop	rsi
dd89bb
	pop	rbx
dd89bb
	pop	rdx
dd89bb
	pop	rcx
dd89bb
	pop	rbp
dd89bb
	ret
dd89bb
__tt_fork_impl_adj_call ENDP
dd89bb
dd89bb
dd89bb
__tt_fork_child_entry_point PROC
dd89bb
	xor	rax, rax
dd89bb
	mov	rsp, rcx
dd89bb
dd89bb
	add rsp, 40h
dd89bb
dd89bb
	pop	r15
dd89bb
	pop	r14
dd89bb
	pop	r13
dd89bb
	pop	r12
dd89bb
	pop	r11
dd89bb
	pop	r10
dd89bb
	pop	r9
dd89bb
	pop	r8
dd89bb
	pop	rdi
dd89bb
	pop	rsi
dd89bb
	pop	rbx
dd89bb
	pop	rdx
dd89bb
	pop	rcx
dd89bb
	pop	rbp
dd89bb
	ret
dd89bb
__tt_fork_child_entry_point ENDP
dd89bb
dd89bb
dd89bb
__tt_fork_child_entry_point_adj PROC
dd89bb
	xor	rax, rax
dd89bb
	mov	rsp, rcx
dd89bb
dd89bb
	pop	rdi
dd89bb
dd89bb
	add rsp, 40h
dd89bb
dd89bb
	pop	r15
dd89bb
	pop	r14
dd89bb
	pop	r13
dd89bb
	pop	r12
dd89bb
	pop	r11
dd89bb
	pop	r10
dd89bb
	pop	r9
dd89bb
	pop	r8
dd89bb
	pop	rdi
dd89bb
	pop	rsi
dd89bb
	pop	rbx
dd89bb
	pop	rdx
dd89bb
	pop	rcx
dd89bb
	pop	rbp
dd89bb
	ret
dd89bb
__tt_fork_child_entry_point_adj ENDP
dd89bb
dd89bb
END