diff options
author | dcherednik <dcherednik@ydb.tech> | 2022-10-26 16:40:35 +0300 |
---|---|---|
committer | dcherednik <dcherednik@ydb.tech> | 2022-10-26 16:40:35 +0300 |
commit | b981cca279190176740c3bf5c5b4fd03be51b599 (patch) | |
tree | f5ec6210fdce0e976cbbe4dc8ae78bb6509adf49 /util/system/context_aarch64.S | |
parent | 6dc0de995652f7eeecdbdb88dc98b00bb0653a2f (diff) | |
download | ydb-b981cca279190176740c3bf5c5b4fd03be51b599.tar.gz |
Enable linux-arm platform.
Diffstat (limited to 'util/system/context_aarch64.S')
-rw-r--r-- | util/system/context_aarch64.S | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/util/system/context_aarch64.S b/util/system/context_aarch64.S new file mode 100644 index 0000000000..0b2ef4e4a6 --- /dev/null +++ b/util/system/context_aarch64.S @@ -0,0 +1,52 @@ +.p2align 2 +#if !(defined __darwin__) && !(defined __arm64__) +.global __mysetjmp +.type __mysetjmp,@function +__mysetjmp: +#else +.global ___mysetjmp +___mysetjmp: +#endif + // 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 + +.p2align 2 +#if !(defined __darwin__) && !(defined __arm64__) +.global __mylongjmp +.type __mylongjump,@function +__mylongjmp: +#else +.global ___mylongjmp +___mylongjmp: +#endif + // 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 |