diff --git a/libgo/runtime/go-signal.c b/libgo/runtime/go-signal.c
index 081604e..a07fdea 100644
--- a/libgo/runtime/go-signal.c
+++ b/libgo/runtime/go-signal.c
@@ -205,28 +205,18 @@
 	// Use unportable code to pull it from context, and if that fails
 	// try a stack backtrace across the signal handler.
 
-#ifdef __x86_64__
- #ifdef __linux__
+#if defined(__x86_64__) && defined(__linux__)
 	ret.sigpc = ((ucontext_t*)(context))->uc_mcontext.gregs[REG_RIP];
- #endif
-#endif
-#ifdef __i386__
-  #ifdef __linux__
+#elif defined(__i386__) && defined(__linux__)
 	ret.sigpc = ((ucontext_t*)(context))->uc_mcontext.gregs[REG_EIP];
-  #endif
-#endif
-#ifdef __alpha__
-  #ifdef __linux__
+#elif defined(__alpha__) && defined(__linux__)
 	ret.sigpc = ((ucontext_t*)(context))->uc_mcontext.sc_pc;
-  #endif
-#endif
-#ifdef __PPC__
-  #ifdef __linux__
+#elif defined(__PPC__) && defined(__linux__)
 	ret.sigpc = ((ucontext_t*)(context))->uc_mcontext.regs->nip;
-  #endif
-  #ifdef _AIX
+#elif defined(__PPC__) && defined(_AIX)
 	ret.sigpc = ((ucontext_t*)(context))->uc_mcontext.jmp_context.iar;
-  #endif
+#elif defined(__aarch64__) && defined(__linux__)
+	ret.sigpc = ((ucontext_t*)(context))->uc_mcontext.pc;
 #endif
 
 	if (ret.sigpc == 0) {
@@ -250,8 +240,7 @@
 void
 dumpregs(siginfo_t *info __attribute__((unused)), void *context __attribute__((unused)))
 {
-#ifdef __x86_64__
- #ifdef __linux__
+#if defined(__x86_64__) && defined(__linux__)
 	{
 		mcontext_t *m = &((ucontext_t*)(context))->uc_mcontext;
 
@@ -277,11 +266,7 @@
 		runtime_printf("fs     %X\n", (m->gregs[REG_CSGSFS] >> 16) & 0xffff);
 		runtime_printf("gs     %X\n", (m->gregs[REG_CSGSFS] >> 32) & 0xffff);
 	  }
- #endif
-#endif
-
-#ifdef __i386__
- #ifdef __linux__
+#elif defined(__i386__) && defined(__linux__)
 	{
 		mcontext_t *m = &((ucontext_t*)(context))->uc_mcontext;
 
@@ -299,11 +284,7 @@
 		runtime_printf("fs     %x\n", m->gregs[REG_FS]);
 		runtime_printf("gs     %x\n", m->gregs[REG_GS]);
 	  }
- #endif
-#endif
-
-#ifdef __alpha__
-  #ifdef __linux__
+#elif defined(__alpha__) && defined(__linux__)
 	{
 		mcontext_t *m = &((ucontext_t*)(context))->uc_mcontext;
 
@@ -340,11 +321,7 @@
 		runtime_printf("sp  %X\n", m->sc_regs[30]);
 		runtime_printf("pc  %X\n", m->sc_pc);
 	  }
-  #endif
-#endif
-
-#if defined(__PPC__) && defined(__LITTLE_ENDIAN__)
-  #ifdef __linux__
+#elif defined(__PPC__) && defined(__LITTLE_ENDIAN__) && defined(__linux__)
 	  {
 		mcontext_t *m = &((ucontext_t*)(context))->uc_mcontext;
 		int i;
@@ -358,11 +335,7 @@
 		runtime_printf("ctr %X\n", m->regs->ctr);
 		runtime_printf("xer %X\n", m->regs->xer);
 	  }
-  #endif
-#endif
-
-#ifdef __PPC__
-  #ifdef _AIX
+#elif defined(__PPC__) && defined(_AIX)
 	  {
 		mcontext_t *m = &((ucontext_t*)(context))->uc_mcontext;
 		int i;
@@ -376,6 +349,16 @@
 		runtime_printf("ctr %p\n", m->jmp_context.ctr);
 		runtime_printf("xer %x\n", m->jmp_context.xer);
 	  }
-  #endif
+#elif defined(__aarch64__) && defined(__linux__)
+	  {
+		mcontext_t *m = &((ucontext_t*)(context))->uc_mcontext;
+		int i;
+
+		for (i = 0; i < 31; i++)
+			runtime_printf("x%d    %X\n", i, m->regs[i]);
+		runtime_printf("sp     %X\n", m->sp);
+		runtime_printf("pc     %X\n", m->pc);
+		runtime_printf("pstate %X\n", m->pstate);
+	  }
 #endif
 }
