[section .text]
[extern Threads_Exit]
+[extern glThreadListLock]
+[extern SHORTREL]
[global GetRIP]
GetRIP:
; [rsp+0x08]: Function
; [rsp+0x10]: Argument
+ mov rdi, glThreadListLock
+ call SHORTREL
+
mov rdi, [rsp+0x10]
mov rax, [rsp+0x8]
add rsp, 0x10 ; Reclaim stack space (thread/fcn)
- xchg bx, bx
+ ;xchg bx, bx
call rax
; Quit thread with RAX as the return code
PUSH_GPR
; Save RSP
mov [rdi], rsp
+ ; Call MM_Clone (with bNoUserCopy flag)
+ mov rdi, rdx
call MM_Clone
; Save CR3
mov rsi, [rsp+0x30] ; Saved version of RSI
fxrstor [rdi]
ret
+[section .usertext]
+
+[global User_Signal_Kill]
+User_Signal_Kill:
+ xor rax, rax
+ mov bx, di
+ mov bh, 0x02
+ int 0xAC
+ jmp $
+
+
; vim: ft=nasm