X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;ds=sidebyside;f=mono%2Fmini%2Fexceptions-mips.c;h=ea58f176176baf50b9be20ef4ddaca1837c268d7;hb=858e4ee61ec08641bbe2ee375d27c3f0f92ac53e;hp=d3a854cd41cb9dd2ba36c1e4e3abe68c4cd44bb5;hpb=4fbc1e6c261d48785933a5605d77cfb94fa54b46;p=mono.git diff --git a/mono/mini/exceptions-mips.c b/mono/mini/exceptions-mips.c index d3a854cd41c..ea58f176176 100644 --- a/mono/mini/exceptions-mips.c +++ b/mono/mini/exceptions-mips.c @@ -174,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 @@ -182,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; @@ -207,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 (); } @@ -493,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); } /* @@ -533,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); } /*