Files
Custom-Operating-System/libs/libc/setjmp/x86_64/setjmp.S

35 lines
539 B
ArmAsm
Raw Normal View History

2025-02-12 09:54:05 -05:00
[bits 64]
global setjmp
setjmp:
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
longjmp:
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 rax, rsi
test rax, rax
jnz success
mov rax, 1
success:
jmp rcx