From e31b1509ebb518548780aa2544459337854af48e Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Wed, 16 Aug 2017 21:17:26 -0700 Subject: 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. --- signal.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) (limited to 'signal.h') diff --git a/signal.h b/signal.h index 435ce6f6..ec56b9e7 100644 --- a/signal.h +++ b/signal.h @@ -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 -- cgit v1.2.3