37 lines
665 B
ArmAsm
37 lines
665 B
ArmAsm
|
.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
|