diff options
Diffstat (limited to 'darwin_stop_world.c')
-rw-r--r-- | darwin_stop_world.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/darwin_stop_world.c b/darwin_stop_world.c index aef58c2b..062eb213 100644 --- a/darwin_stop_world.c +++ b/darwin_stop_world.c @@ -64,6 +64,14 @@ GC_INNER ptr_t GC_FindTopOfStack(unsigned long stack_start) # else __asm__ __volatile__ ("ld %0,0(r1)" : "=r" (frame)); # endif +# elif defined(ARM32) + volatile ptr_t sp_reg; + __asm__ __volatile__ ("mov %0, r7\n" : "=r" (sp_reg)); + frame = (StackFrame *)sp_reg; +# elif defined(AARCH64) + volatile ptr_t sp_reg; + __asm__ __volatile__ ("mov %0, x29\n" : "=r" (sp_reg)); + frame = (StackFrame *)sp_reg; # else ABORT("GC_FindTopOfStack(0) is not implemented"); # endif |