--- hatari/src/uae-cpu/newcpu.c 2019/04/09 08:57:03 1.1.1.22 +++ hatari/src/uae-cpu/newcpu.c 2019/04/09 08:59:35 1.1.1.23 @@ -1061,9 +1061,11 @@ void Exception(int nr, uaecptr oldpc, in else if ( get_long(regs.instruction_pc) == 0x13f88e21 ) /* 13f8 8e21 move.b $ffff8e21.w,$xxxxx (Tymewarp) */ put_byte ( get_long(regs.instruction_pc+4) , 0x00 ); /* dest content should not be changed to "ff" but keep its value "00" */ - if (BusErrorAddress != 0xff8a00 || currpc < TosAddress || currpc > TosAddress + TosSize) - fprintf(stderr, "Bus Error at address $%x, PC=$%x addr_e3=%x op_e3=%x\n", - BusErrorAddress, currpc, get_long(m68k_areg(regs, 7)+10) , BusError_opcode); + if (M68000_IsVerboseBusError(currpc, BusErrorAddress)) { + Log_Printf(LOG_WARN, "Bus Error at address $%x, PC=$%x addr_e3=%x op_e3=%x\n", + BusErrorAddress, currpc, + get_long(m68k_areg(regs, 7) + 10), BusError_opcode); + } /* Check for double bus errors: */ if (regs.spcflags & SPCFLAG_BUSERROR) { @@ -1166,7 +1168,6 @@ static void Interrupt(int nr , int Pendi } -uae_u32 caar, cacr; static uae_u32 itt0, itt1, dtt0, dtt1, tc, mmusr, urp, srp; @@ -1213,7 +1214,7 @@ int m68k_move2c (int regno, uae_u32 *reg cacr_mask = 0x00003f1f; else if (currprefs.cpu_level == 4) // 68040 cacr_mask = 0x80008000; - cacr = *regp & cacr_mask; + regs.cacr = *regp & cacr_mask; } case 3: tc = *regp & 0xc000; break; /* Mask out fields that should be zero. */ @@ -1224,7 +1225,7 @@ int m68k_move2c (int regno, uae_u32 *reg case 0x800: regs.usp = *regp; break; case 0x801: regs.vbr = *regp; break; - case 0x802: caar = *regp; break; + case 0x802: regs.caar = *regp; break; case 0x803: regs.msp = *regp; if (regs.m == 1) m68k_areg(regs, 7) = regs.msp; break; case 0x804: regs.isp = *regp; if (regs.m == 0) m68k_areg(regs, 7) = regs.isp; break; case 0x805: mmusr = *regp; break; @@ -1247,7 +1248,7 @@ int m68k_movec2 (int regno, uae_u32 *reg switch (regno) { case 0: *regp = regs.sfc; break; case 1: *regp = regs.dfc; break; - case 2: *regp = cacr; break; + case 2: *regp = regs.cacr; break; case 3: *regp = tc; break; case 4: *regp = itt0; break; case 5: *regp = itt1; break; @@ -1255,7 +1256,7 @@ int m68k_movec2 (int regno, uae_u32 *reg case 7: *regp = dtt1; break; case 0x800: *regp = regs.usp; break; case 0x801: *regp = regs.vbr; break; - case 0x802: *regp = caar; break; + case 0x802: *regp = regs.caar; break; case 0x803: *regp = regs.m == 1 ? m68k_areg(regs, 7) : regs.msp; break; case 0x804: *regp = regs.m == 0 ? m68k_areg(regs, 7) : regs.isp; break; case 0x805: *regp = mmusr; break; @@ -1269,6 +1270,7 @@ int m68k_movec2 (int regno, uae_u32 *reg return 1; } +#if !defined(uae_s64) STATIC_INLINE int div_unsigned(uae_u32 src_hi, uae_u32 src_lo, uae_u32 ndiv, uae_u32 *quot, uae_u32 *rem) { @@ -1293,6 +1295,7 @@ div_unsigned(uae_u32 src_hi, uae_u32 src *rem = src_hi; return 0; } +#endif void m68k_divl (uae_u32 opcode, uae_u32 src, uae_u16 extra, uaecptr oldpc) { @@ -1415,6 +1418,7 @@ void m68k_divl (uae_u32 opcode, uae_u32 #endif } +#if !defined(uae_s64) STATIC_INLINE void mul_unsigned(uae_u32 src1, uae_u32 src2, uae_u32 *dst_hi, uae_u32 *dst_lo) { @@ -1433,6 +1437,7 @@ mul_unsigned(uae_u32 src1, uae_u32 src2, *dst_lo = lo; *dst_hi = r3; } +#endif void m68k_mull (uae_u32 opcode, uae_u32 src, uae_u16 extra) {