diff --git a/src/pkg/runtime/linux/arm/signal.c b/src/pkg/runtime/linux/arm/signal.c
index 024018d..f14dcbf 100644
--- a/src/pkg/runtime/linux/arm/signal.c
+++ b/src/pkg/runtime/linux/arm/signal.c
@@ -2,3 +2,103 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
+#include "runtime.h"
+#include "defs.h"
+#include "signals.h"
+#include "os.h"
+
+void dumpregs(void) {}
+// void
+// dumpregs(Sigcontext *r)
+// {
+// 	printf("eax     %X\n", r->eax);
+// 	printf("ebx     %X\n", r->ebx);
+// 	printf("ecx     %X\n", r->ecx);
+// 	printf("edx     %X\n", r->edx);
+// 	printf("edi     %X\n", r->edi);
+// 	printf("esi     %X\n", r->esi);
+// 	printf("ebp     %X\n", r->ebp);
+// 	printf("esp     %X\n", r->esp);
+// 	printf("eip     %X\n", r->eip);
+// 	printf("eflags  %X\n", r->eflags);
+// 	printf("cs      %X\n", r->cs);
+// 	printf("fs      %X\n", r->fs);
+// 	printf("gs      %X\n", r->gs);
+// }
+
+
+/*
+ * This assembler routine takes the args from registers, puts them on the stack,
+ * and calls sighandler().
+ */
+extern void sigtramp(void);
+extern void sigignore(void);	// just returns
+extern void sigreturn(void);	// calls sigreturn
+
+void sighandler(void) {}
+// void
+// sighandler(int32 sig, Siginfo* info, void* context)
+// {
+// 	Ucontext *uc;
+// 	Sigcontext *sc;
+
+// 	if(panicking)	// traceback already printed
+// 		exit(2);
+// 	panicking = 1;
+
+// 	uc = context;
+// 	sc = &uc->uc_mcontext;
+
+// 	if(sig < 0 || sig >= NSIG)
+// 		printf("Signal %d\n", sig);
+// 	else
+// 		printf("%s\n", sigtab[sig].name);
+
+// 	printf("Faulting address: %p\n", *(void**)info->_sifields);
+// 	printf("pc=%X\n", sc->eip);
+// 	printf("\n");
+
+// 	if(gotraceback()){
+// 		traceback((void*)sc->eip, (void*)sc->esp, m->curg);
+// 		tracebackothers(m->curg);
+// 		dumpregs(sc);
+// 	}
+
+// 	breakpoint();
+// 	exit(2);
+// }
+
+void
+signalstack(byte *p, int32 n)
+{
+// 	Sigaltstack st;
+
+// 	st.ss_sp = p;
+// 	st.ss_size = n;
+// 	st.ss_flags = 0;
+// 	sigaltstack(&st, nil);
+}
+
+void
+initsig(void)
+{
+// 	static Sigaction sa;
+
+// 	int32 i;
+// 	sa.sa_flags = SA_ONSTACK | SA_SIGINFO | SA_RESTORER;
+// 	sa.sa_mask = 0xFFFFFFFFFFFFFFFFULL;
+// 	sa.sa_restorer = (void*)sigreturn;
+// 	for(i = 0; i<NSIG; i++) {
+// 		if(sigtab[i].flags) {
+// 			if(sigtab[i].flags & SigCatch)
+// 				*(void**)sa._u = (void*)sigtramp;	// handler
+// 			else
+// 				*(void**)sa._u = (void*)sigignore;	// handler
+// 			if(sigtab[i].flags & SigRestart)
+// 				sa.sa_flags |= SA_RESTART;
+// 			else
+// 				sa.sa_flags &= ~SA_RESTART;
+// 			rt_sigaction(i, &sa, nil, 8);
+// 		}
+// 	}
+}
