Luna/libs/libc/src/setjmp.asm

36 lines
601 B
NASM
Raw Normal View History

2022-10-17 19:22:18 +00:00
global _setjmp
global setjmp
_setjmp:
setjmp:
mov rsi, 0
mov [rdi], rbx
mov [rdi+8], r12
mov [rdi+16], r13
mov [rdi+24], r14
mov [rdi+32], r15
mov [rdi+40], rbp
mov [rdi+48], rsp
mov rax, [rsp]
mov [rdi+56], rax
xor rax, rax
ret
global _longjmp
global longjmp
_longjmp:
longjmp:
mov rax, rsi
cmp rax, 0
jne .nonzero
mov rax, 1
.nonzero:
mov rbx, [rdi]
mov r12, [rdi+8]
mov r13, [rdi+16]
mov r14, [rdi+24]
mov r15, [rdi+32]
mov rbp, [rdi+40]
mov rsp, [rdi+48]
mov rcx, [rdi+56]
mov [rsp], rcx
ret