X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fexceptions-mips.c;h=ea58f176176baf50b9be20ef4ddaca1837c268d7;hb=d48b2f6a29866ce05af2e60023c893280a99ff8b;hp=4708f867f196a145bd2d6e45d902828e6cc8fc10;hpb=694ab7d8477ba306f75ee1cb71ec8acd87788f67;p=mono.git diff --git a/mono/mini/exceptions-mips.c b/mono/mini/exceptions-mips.c index 4708f867f19..ea58f176176 100644 --- a/mono/mini/exceptions-mips.c +++ b/mono/mini/exceptions-mips.c @@ -16,7 +16,6 @@ #include #include #include -#include #include #include @@ -175,7 +174,6 @@ mono_arch_get_call_filter (MonoTrampInfo **info, gboolean aot) static void throw_exception (MonoObject *exc, unsigned long eip, unsigned long esp, gboolean rethrow) { - static void (*restore_context) (MonoContext *); MonoContext ctx; #ifdef DEBUG_EXCEPTIONS @@ -183,9 +181,6 @@ throw_exception (MonoObject *exc, unsigned long eip, unsigned long esp, gboolean exc, (void *)eip, (void *) esp, rethrow); #endif - if (!restore_context) - restore_context = mono_get_restore_context (); - /* adjust eip so that it point into the call instruction */ eip -= 8; @@ -208,7 +203,7 @@ throw_exception (MonoObject *exc, unsigned long eip, unsigned long esp, gboolean (void *) ctx.sc_pc, (void *) ctx.sc_regs[mips_sp], (void *) ctx.sc_regs[mips_fp], &ctx); #endif - restore_context (&ctx); + mono_restore_context (&ctx); g_assert_not_reached (); } @@ -494,34 +489,19 @@ mono_arch_find_jit_info (MonoDomain *domain, MonoJitTlsData *jit_tls, void mono_arch_sigctx_to_monoctx (void *sigctx, MonoContext *mctx) { - int i; - struct sigcontext *ctx = (struct sigcontext *)sigctx; - - mctx->sc_pc = ctx->sc_pc; - for (i = 0; i < 32; ++i) { - mctx->sc_regs[i] = ctx->sc_regs[i]; - mctx->sc_fpregs[i] = ctx->sc_fpregs[i]; - } + mono_sigctx_to_monoctx (sigctx, mctx); } void mono_arch_monoctx_to_sigctx (MonoContext *mctx, void *sigctx) { - int i; - struct sigcontext *ctx = (struct sigcontext *)sigctx; - - ctx->sc_pc = mctx->sc_pc; - for (i = 0; i < 32; ++i) { - ctx->sc_regs[i] = mctx->sc_regs[i]; - ctx->sc_fpregs[i] = mctx->sc_fpregs[i]; - } -} + mono_monoctx_to_sigctx (mctx, sigctx); +} gpointer mono_arch_ip_from_context (void *sigctx) { - struct sigcontext *ctx = (struct sigcontext *)sigctx; - return (gpointer)(guint32)ctx->sc_pc; + return (gpointer)UCONTEXT_REG_PC (sigctx); } /* @@ -534,16 +514,12 @@ handle_signal_exception (gpointer obj) { MonoJitTlsData *jit_tls = mono_native_tls_get_value (mono_jit_tls_id); MonoContext ctx; - static void (*restore_context) (MonoContext *); - - if (!restore_context) - restore_context = mono_get_restore_context (); memcpy (&ctx, &jit_tls->ex_ctx, sizeof (MonoContext)); mono_handle_exception (&ctx, obj); - restore_context (&ctx); + mono_restore_context (&ctx); } /*