void
mono_arch_sigctx_to_monoctx (void *sigctx, MonoContext *mctx)
{
-#ifdef MONO_CROSS_COMPILE
- g_assert_not_reached ();
-#elif BROKEN_LINUX
- g_assert_not_reached ();
-#else
- arm_ucontext *my_uc = sigctx;
-
- mctx->pc = UCONTEXT_REG_PC (my_uc);
- mctx->regs [ARMREG_SP] = UCONTEXT_REG_SP (my_uc);
- mctx->cpsr = UCONTEXT_REG_CPSR (my_uc);
- memcpy (&mctx->regs, &UCONTEXT_REG_R0 (my_uc), sizeof (mgreg_t) * 16);
-#endif
+ mono_sigctx_to_monoctx (sigctx, mctx);
}
void
mono_arch_monoctx_to_sigctx (MonoContext *mctx, void *ctx)
{
-#ifdef MONO_CROSS_COMPILE
- g_assert_not_reached ();
-#elif BROKEN_LINUX
- g_assert_not_reached ();
-#else
- arm_ucontext *my_uc = ctx;
-
- UCONTEXT_REG_PC (my_uc) = mctx->pc;
- UCONTEXT_REG_SP (my_uc) = mctx->regs [ARMREG_FP];
- UCONTEXT_REG_CPSR (my_uc) = mctx->cpsr;
- /* The upper registers are not guaranteed to be valid */
- memcpy (&UCONTEXT_REG_R0 (my_uc), &mctx->regs, sizeof (mgreg_t) * 12);
-#endif
+ mono_monoctx_to_sigctx (mctx, ctx);
}
/*
{
#ifdef MONO_CROSS_COMPILE
g_assert_not_reached ();
-#elif BROKEN_LINUX
- g_assert_not_reached ();
#else
arm_ucontext *my_uc = sigctx;
return (void*) UCONTEXT_REG_PC (my_uc);
{
#ifdef MONO_CROSS_COMPILE
g_assert_not_reached ();
-#elif BROKEN_LINUX
- g_assert_not_reached ();
#else
arm_ucontext *my_uc = sigctx;
mctx->pc = UCONTEXT_REG_PC (my_uc);
mctx->regs [ARMREG_SP] = UCONTEXT_REG_SP (my_uc);
+ mctx->cpsr = UCONTEXT_REG_CPSR (my_uc);
memcpy (&mctx->regs, &UCONTEXT_REG_R0 (my_uc), sizeof (mgreg_t) * 16);
#endif
}
UCONTEXT_REG_PC (my_uc) = mctx->pc;
UCONTEXT_REG_SP (my_uc) = mctx->regs [ARMREG_FP];
+ UCONTEXT_REG_CPSR (my_uc) = mctx->cpsr;
/* The upper registers are not guaranteed to be valid */
memcpy (&UCONTEXT_REG_R0 (my_uc), &mctx->regs, sizeof (mgreg_t) * 12);
#endif