diff --git a/runtime/basis/Word/Word.c b/runtime/basis/Word/Word.c
index 39f6d05..651c426 100644
--- a/runtime/basis/Word/Word.c
+++ b/runtime/basis/Word/Word.c
@@ -24,7 +24,7 @@
* implements / and %.
*/
-#if ! (defined (__amd64__) || defined (__hppa__) || defined (__i386__) || defined(__ia64__)|| defined (__ppc__) || defined (__powerpc__) || defined (__sparc__))
+#if ! (defined (__amd64__) || defined (__hppa__) || defined (__i386__) || defined(__ia64__)|| defined (__ppc__) || defined (__powerpc__) || defined (__sparc__) || defined (__arm__))
#error check that C {/,%} correctly implement {quot,rem} from the basis library
#endif
diff --git a/runtime/platform/linux.c b/runtime/platform/linux.c
index 3177ed1..fecf168 100644
--- a/runtime/platform/linux.c
+++ b/runtime/platform/linux.c
@@ -17,7 +17,6 @@
/* potentially correct for other archs:
* alpha: ucp->m_context.sc_pc
- * arm: ucp->m_context.ctx.arm_pc
* ia64: ucp->m_context.sc_ip & ~0x3UL
* mips: ucp->m_context.sc_pc
* s390: ucp->m_context.sregs->regs.psw.addr
@@ -48,6 +47,9 @@ static void catcher (__attribute__ ((unused)) int sig,
#elif (defined (__i386__))
ucontext_t* ucp = (ucontext_t*)mystery;
GC_handleSigProf ((code_pointer) ucp->uc_mcontext.gregs[EIP]);
+#elif (defined (__arm__))
+ ucontext_t* ucp = (ucontext_t*)mystery;
+ GC_handleSigProf ((code_pointer) ucp->uc_mcontext.arm_pc);
#else
#error Profiling handler is missing for this architecture
#endif