- code = start = mono_global_codeman_reserve (64 * sizeof (guint32));
-
-#ifdef SPARCV9
- reg = sparc_g4;
-#else
- reg = sparc_g1;
-#endif
-
- sparc_save_imm (code, sparc_sp, -160, sparc_sp);
-
- sparc_mov_reg_reg (code, sparc_i0, sparc_o2);
- sparc_set (code, mono_defaults.corlib, sparc_o0);
- sparc_set (code, "System", sparc_o1);
- sparc_set (code, mono_exception_from_name, sparc_o7);
- sparc_jmpl (code, sparc_o7, sparc_g0, sparc_callsite);
- sparc_nop (code);
-
- /* Return to the caller, so exception handling does not see this frame */
- sparc_restore (code, sparc_o0, sparc_g0, sparc_o0);
-
- /* Put original return address into %o7 */
- sparc_mov_reg_reg (code, sparc_o1, sparc_o7);
- sparc_set (code, mono_arch_get_throw_exception (), reg);
- /* Use a jmp instead of a call so o7 is preserved */
- sparc_jmpl_imm (code, reg, 0, sparc_g0);
- sparc_nop (code);