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