Index: fusl/src/setjmp/aarch64/longjmp.s |
diff --git a/fusl/src/setjmp/aarch64/longjmp.s b/fusl/src/setjmp/aarch64/longjmp.s |
new file mode 100644 |
index 0000000000000000000000000000000000000000..7c4655fa968c874fb79962f35e0d32cc79edc226 |
--- /dev/null |
+++ b/fusl/src/setjmp/aarch64/longjmp.s |
@@ -0,0 +1,24 @@ |
+.global _longjmp |
+.global longjmp |
+.type _longjmp,%function |
+.type longjmp,%function |
+_longjmp: |
+longjmp: |
+ // IHI0055B_aapcs64.pdf 5.1.1, 5.1.2 callee saved registers |
+ ldp x19, x20, [x0,#0] |
+ ldp x21, x22, [x0,#16] |
+ ldp x23, x24, [x0,#32] |
+ ldp x25, x26, [x0,#48] |
+ ldp x27, x28, [x0,#64] |
+ ldp x29, x30, [x0,#80] |
+ ldr x2, [x0,#104] |
+ mov sp, x2 |
+ ldp d8 , d9, [x0,#112] |
+ ldp d10, d11, [x0,#128] |
+ ldp d12, d13, [x0,#144] |
+ ldp d14, d15, [x0,#160] |
+ |
+ mov x0, x1 |
+ cbnz x1, 1f |
+ mov x0, #1 |
+1: br x30 |