https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=d8ba663f355e55c537761a626c88cefaf1f3bc8e
commit d8ba663f355e55c537761a626c88cefaf1f3bc8e Author: Radek Bartoň <radek.bar...@microsoft.com> Date: Fri Jun 6 10:21:10 2025 +0200 Cygwin: obtain stack pointer on AArch64 Signed-off-by: Radek Bartoň <radek.bar...@microsoft.com> Diff: --- winsup/cygwin/fork.cc | 4 +++- winsup/cygwin/local_includes/cygtls.h | 6 ++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/winsup/cygwin/fork.cc b/winsup/cygwin/fork.cc index f88acdbbf..4abc52598 100644 --- a/winsup/cygwin/fork.cc +++ b/winsup/cygwin/fork.cc @@ -660,8 +660,10 @@ dofork (void **proc, bool *with_forkables) ischild = !!setjmp (grouped.ch.jmp); volatile char * volatile stackp; -#ifdef __x86_64__ +#if defined(__x86_64__) __asm__ volatile ("movq %%rsp,%0": "=r" (stackp)); +#elif defined(__aarch64__) + __asm__ volatile ("mov %0, sp" : "=r" (stackp)); #else #error unimplemented for this target #endif diff --git a/winsup/cygwin/local_includes/cygtls.h b/winsup/cygwin/local_includes/cygtls.h index 615361d3f..29a539d83 100644 --- a/winsup/cygwin/local_includes/cygtls.h +++ b/winsup/cygwin/local_includes/cygtls.h @@ -322,7 +322,13 @@ public: address of the _except block to restore the context correctly. See comment preceeding myfault_altstack_handler in exception.cc. */ ret = (DWORD64) _ret; +#if defined(__x86_64__) __asm__ volatile ("movq %%rsp,%0": "=o" (frame)); +#elif defined(__aarch64__) + __asm__ volatile ("mov %0, sp" : "=r" (frame)); +#else +#error unimplemented for this target +#endif } ~san () __attribute__ ((always_inline)) {