diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2017-08-16 21:17:26 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2017-08-16 21:17:26 -0700 |
commit | e31b1509ebb518548780aa2544459337854af48e (patch) | |
tree | b30ef7d8bb1db97ba8ad7bad4299b349c87f2756 /signal.h | |
parent | c77cd7d90f4a1549dacbf4b5e34827df2d6e4f03 (diff) | |
download | txr-e31b1509ebb518548780aa2544459337854af48e.tar.gz txr-e31b1509ebb518548780aa2544459337854af48e.tar.bz2 txr-e31b1509ebb518548780aa2544459337854af48e.zip |
Port to aarch64 (ARM 8).
Continuations don't work yet.
* gc.c (STACK_TOP_EXTRA_WORDS): New macro.
(mark): On aarch64, we must include four words above
the stack top. Some live root pointers sometimes
hide there which are not in any of the callee-saved register
that end up in the machine context via jmp_save.
* jmp.S (jmp_save, jmp_restore): Implement for aarch64.
Diffstat (limited to 'signal.h')
-rw-r--r-- | signal.h | 30 |
1 files changed, 30 insertions, 0 deletions
@@ -127,6 +127,36 @@ struct jmp { unsigned long r31; }; +#elif __aarch64__ + +struct jmp { + unsigned long x19; + unsigned long x20; + unsigned long x21; + unsigned long x22; + unsigned long x23; + unsigned long x24; + unsigned long x25; + unsigned long x26; + unsigned long x27; + unsigned long x28; + unsigned long x29; + unsigned long x30; + unsigned long d8; + unsigned long d9; + unsigned long d10; + unsigned long d11; + unsigned long d12; + unsigned long d13; + unsigned long d14; + unsigned long d15; + unsigned long x16; +}; + +/* Jump buffer contains: + x19-x28, x29(fp), x30(lr), (x31)sp, d8-d15. Other registers are not + saved. */ + #else #error port me! #endif |