4 %include "arch/x86_64/include/common.inc.asm"
15 [global NewTaskHeader]
42 ; Quit thread with RAX as the return code
51 [extern MM_DumpTables]
52 [global Proc_CloneInt]
59 mov rsi, [rsp+0x30] ; Saved version of RSI
67 ; mov rsi, 0x800000000000
81 ; Return RSI as the RSP value
91 mov rsp, [rsp-0x60] ; Restore RSP from the saved value
92 mov [rsp], rax ; Restore return address
98 ; rsi = Old RSP save loc
100 ; rcx = Old RIP save loc
105 ; Save state RIP and RSP
106 lea rax, [rel .restore]
110 ; Change CR3 if requested
115 ; Make sure the stack is valid before jumping
124 ; Restore point for saved state
127 xor eax, eax ; Return zero
130 [global Proc_InitialiseSSE]
133 or ax, (1 << 9)|(1 << 10) ; Set OSFXSR and OSXMMEXCPT
136 and ax, ~(1 << 2) ; Clear EM
137 or rax, (1 << 1) ; Set MP
140 [global Proc_DisableSSE]
143 or ax, 1 << 3 ; Set TS
146 [global Proc_EnableSSE]
149 and ax, ~(1 << 3) ; Clear TS
153 [global Proc_SaveSSE]
157 [global Proc_RestoreSSE]