-/*
- * tramp-sparc.c: JIT trampoline code for Sparc
+/**
+ * \file
+ * JIT trampoline code for Sparc
*
* Authors:
* Mark Crichton (crichton@gimp.org)
#include "mini.h"
#include "mini-sparc.h"
+#include "jit-icalls.h"
/*
* mono_arch_get_unbox_trampoline:
mono_arch_flush_icache (start, code - start);
+ mono_tramp_info_register (mono_tramp_info_create (NULL, start, code - start, NULL, NULL), NULL);
+
return start;
}
g_assert_not_reached ();
}
-void
-mono_arch_nullify_class_init_trampoline (guint8 *code, mgreg_t *regs)
-{
- /* Patch calling code */
- sparc_nop (code);
-}
-
#define ALIGN_TO(val,align) (((val) + ((align) - 1)) & ~((align) - 1))
guchar*
sparc_sti_imm (code, sparc_o0, sparc_sp, MONO_SPARC_STACK_BIAS + 304);
/* Check for thread interruption */
- sparc_set (code, (guint8*)mono_thread_force_interruption_checkpoint, sparc_o7);
+ sparc_set (code, (guint8*)mono_interruption_checkpoint_from_trampoline, sparc_o7);
sparc_jmpl (code, sparc_o7, sparc_g0, sparc_o7);
sparc_nop (code);
sparc_lddf_imm (code, sparc_sp, MONO_SPARC_STACK_BIAS + 320 + (i * 8), sparc_f0 + (i * 2));
#endif
- if (tramp_type == MONO_TRAMPOLINE_CLASS_INIT)
- sparc_ret (code);
- else
- sparc_jmpl (code, sparc_o0, sparc_g0, sparc_g0);
+ sparc_jmpl (code, sparc_o0, sparc_g0, sparc_g0);
/* restore previous frame in delay slot */
sparc_restore_simple (code);
g_assert_not_reached ();
return NULL;
}
-
-gpointer
-mono_arch_get_nullified_class_init_trampoline (MonoTrampInfo **info)
-{
- guint8 *buf, *code;
-
- code = buf = mono_global_codeman_reserve (16);
-
- sparc_ret (code);
-
- mono_arch_flush_icache (buf, code - buf);
-
- *info = mono_tramp_info_create ("nullified_class_init_trampoline", buf, code - buf, NULL, NULL);
-
- return buf;
-}