Blame src/process/nt64/tt_fork_v1_x86_64.asm
|
|
dd89bb |
/********************************************************/
|
|
|
dd89bb |
/* ntapi: Native API core library */
|
|
|
dd89bb |
/* Copyright (C) 2013,2014,2015 Z. Gilboa */
|
|
|
dd89bb |
/* Released under GPLv2 and GPLv3; see COPYING.NTAPI. */
|
|
|
dd89bb |
/********************************************************/
|
|
|
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
|