--- nono/m680x0/m68030ops.cpp 2026/04/29 17:04:28 1.1 +++ nono/m680x0/m68030ops.cpp 2026/04/29 17:05:08 1.1.1.4 @@ -1,6 +1,7 @@ // // nono -// Copyright (C) 2017 isaki@NetBSD.org +// Copyright (C) 2020 nono project +// Licensed under nono-license.txt // // %0000_000000_mmmrrr ORI.B #, @@ -125,7 +126,7 @@ OP_DEF(cmp2chk2_b) // MOVEP.[WL] (d,Ay),Dx と // MOVEP.[WL] Dx,(d,Ay) の共通部分。 -void +static void ops_movep(m68kcpu *cpu) { uint32 disp = (int32)(int16)m68030_fetch_16(cpu); @@ -555,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) @@ -2144,17 +2152,8 @@ OP_DEF(movem_l) ops_movem_ea_list<4>(cpu); } -void -ops_rte(m68kcpu *cpu) -{ - SUPERVISOR_OP; - - // subr.cpp - m68030_rte(cpu); -} - // MOVEC.L Rc,Rn -void +static void ops_movec_rc_rn(m68kcpu *cpu) { SUPERVISOR_OP; @@ -2203,7 +2202,7 @@ ops_movec_rc_rn(m68kcpu *cpu) } // MOVEC.L Rn,Rc -void +static void ops_movec_rn_rc(m68kcpu *cpu) { SUPERVISOR_OP; @@ -2363,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 @@ -2372,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 #