int sh2_init(SH2 *sh2, int is_slave, SH2 *other_sh2)
{
int ret = 0;
+ unsigned int mult_m68k_to_sh2 = sh2->mult_m68k_to_sh2;
+ unsigned int mult_sh2_to_m68k = sh2->mult_sh2_to_m68k;
- memset(sh2, 0, offsetof(SH2, mult_m68k_to_sh2));
+ memset(sh2, 0, sizeof(*sh2));
sh2->is_slave = is_slave;
sh2->other_sh2 = other_sh2;
+ sh2->mult_m68k_to_sh2 = mult_m68k_to_sh2;
+ sh2->mult_sh2_to_m68k = mult_sh2_to_m68k;
+
pdb_register_cpu(sh2, PDBCT_SH2, is_slave ? "ssh2" : "msh2");
#ifdef DRC_SH2
ret = sh2_drc_init(sh2);
printf("%csh2 SR: %03x PR: %08x\n", csh2, sh2->sr, sh2->pr);
}
-void do_sh2_cmp(SH2 *current)
+void REGPARM(1) do_sh2_cmp(SH2 *current)
{
static int current_slave;
static u32 current_val;
int cycles;
int i, ret;
+#if 0
+ sr = current->sr;
+ current->sr &= 0x3f3;
+ do_sh2_trace(current, (signed int)sr >> 12);
+ current->sr = sr;
+ return;
+#endif
sh2ref[1].is_slave = 1;
while (1) {