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

40 lines
822 B
ArmAsm

.global setjmp
setjmp:
stp x19, x20, [x0,#0x0]
stp x21, x22, [x0,#0x10]
stp x23, x24, [x0,#0x20]
stp x25, x26, [x0,#0x30]
stp x27, x28, [x0,#0x40]
stp x29, x4, [x0,#0x50]
mov x2, lr
mov x3, sp
stp x2, x3, [x0,#0x60]
stp d8, d9, [x0,#0x70]
stp d10, d11, [x0,#0x80]
stp d12, d13, [x0,#0x90]
stp d14, d15, [x0,#0xa0]
mov x0, #0
ret
.global longjmp
longjmp:
ldp x19, x20, [x0,#0x0]
ldp x21, x22, [x0,#0x10]
ldp x23, x24, [x0,#0x20]
ldp x25, x26, [x0,#0x30]
ldp x27, x28, [x0,#0x40]
ldp x29, x4, [x0,#0x50]
ldp x2, x3, [x0,#0x60]
ldp d8, d9, [x0,#0x70]
ldp d10, d11, [x0,#0x80]
ldp d12, d13, [x0,#0x90]
ldp d14, d15, [x0,#0xa0]
mov lr, x2
mov sp, x3
mov x0, x1
cmp x0, #0
bne 1f
mov x0, #1
1:
ret