--- nono/m680x0/m68030ops.cpp 2026/04/29 17:04:34 1.1.1.2 +++ nono/m680x0/m68030ops.cpp 2026/04/29 17:05:08 1.1.1.4 @@ -556,6 +556,13 @@ OP_DEF(addi_l) } } +// %0000_011011_00nnnn RTM Rn +// %0000_011011_mmmrrr CALLM #, +OP_DEF(callm) +{ + op_illegal(cpu); +} + // %0000_100000_000yyy BTST.L #,Dy // %0000_100000_mmmrrr BTST.B #, OP_DEF(btst_imm_ea) @@ -2145,15 +2152,6 @@ OP_DEF(movem_l) ops_movem_ea_list<4>(cpu); } -static void -ops_rte(m68kcpu *cpu) -{ - SUPERVISOR_OP; - - // subr.cpp - m68030_rte(cpu); -} - // MOVEC.L Rc,Rn static void ops_movec_rc_rn(m68kcpu *cpu) @@ -2364,7 +2362,10 @@ OP_DEF(trap) case 0x30: // RESET CYCLE(518); - m68030_reset_inst(cpu); + // コールバックがあれば呼び出す + if (cpu->resetop_callback) { + cpu->resetop_callback(cpu->resetop_arg); + } return; case 0x31: // NOP @@ -2373,17 +2374,14 @@ OP_DEF(trap) return; case 0x32: // STOP # - { SUPERVISOR_OP; CYCLE(8); - uint32 data = m68030_fetch_16(cpu); - m68030_set_sr(cpu, data); - cpu->atomic_reqflag |= CPU_REQ_RELEASE | CPU_REQ_STOP; + m68030_stop(cpu); return; - } case 0x33: // RTE - ops_rte(cpu); + SUPERVISOR_OP; + m68030_rte(cpu); return; case 0x34: // RTD #