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