diff options
author | Szabolcs Nagy <nsz@port70.net> | 2015-03-10 21:18:41 +0000 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2015-03-11 20:12:35 -0400 |
commit | 01ef3dd9c5fa7a56aa370f244dd08e05c73010f5 (patch) | |
tree | 8fe90d994a43124ff309d3af4c185e28b2b1d6ff /src/setjmp/aarch64 | |
parent | f4e4632abfa8297db1485e132bb15b9ef6c32a1b (diff) | |
download | musl-01ef3dd9c5fa7a56aa370f244dd08e05c73010f5.tar.gz |
add aarch64 port
This adds complete aarch64 target support including bigendian subarch.
Some of the long double math functions are known to be broken otherwise
interfaces should be fully functional, but at this point consider this
port experimental.
Initial work on this port was done by Sireesh Tripurari and Kevin Bortis.
Diffstat (limited to 'src/setjmp/aarch64')
-rw-r--r-- | src/setjmp/aarch64/longjmp.s | 24 | ||||
-rw-r--r-- | src/setjmp/aarch64/setjmp.s | 24 |
2 files changed, 48 insertions, 0 deletions
diff --git a/src/setjmp/aarch64/longjmp.s b/src/setjmp/aarch64/longjmp.s new file mode 100644 index 00000000..7c4655fa --- /dev/null +++ b/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 diff --git a/src/setjmp/aarch64/setjmp.s b/src/setjmp/aarch64/setjmp.s new file mode 100644 index 00000000..f49288aa --- /dev/null +++ b/src/setjmp/aarch64/setjmp.s @@ -0,0 +1,24 @@ +.global __setjmp +.global _setjmp +.global setjmp +.type __setjmp,@function +.type _setjmp,@function +.type setjmp,@function +__setjmp: +_setjmp: +setjmp: + // IHI0055B_aapcs64.pdf 5.1.1, 5.1.2 callee saved registers + stp x19, x20, [x0,#0] + stp x21, x22, [x0,#16] + stp x23, x24, [x0,#32] + stp x25, x26, [x0,#48] + stp x27, x28, [x0,#64] + stp x29, x30, [x0,#80] + mov x2, sp + str x2, [x0,#104] + stp d8, d9, [x0,#112] + stp d10, d11, [x0,#128] + stp d12, d13, [x0,#144] + stp d14, d15, [x0,#160] + mov x0, #0 + ret |