Luna/libc/src/arch/x86_64/setjmp.S

37 lines
665 B
ArmAsm
Raw Normal View History

.global _setjmp
.global setjmp
_setjmp:
setjmp:
mov $0, %rsi
mov %rbx, (%rdi)
mov %r12, 0x8(%rdi)
mov %r13, 0x10(%rdi)
mov %r14, 0x18(%rdi)
mov %r15, 0x20(%rdi)
mov %rbp, 0x28(%rdi)
mov %rsp, 0x30(%rdi)
mov (%rsp), %rax
mov %rax, 0x38(%rdi)
xor %rax, %rax
ret
.global _longjmp
.global longjmp
_longjmp:
longjmp:
mov %rsi, %rax
cmp $0, %rax
jne .nonzero
mov $1, %rax
.nonzero:
mov (%rdi), %rbx
mov 0x8(%rdi), %r12
mov 0x10(%rdi), %r13
mov 0x18(%rdi), %r14
mov 0x20(%rdi), %r15
mov 0x28(%rdi), %rbp
mov 0x30(%rdi), %rsp
mov 0x38(%rdi), %rcx
mov %rcx, (%rsp)
ret