mirror of
https://github.com/TomHarte/CLK.git
synced 2025-02-27 00:30:26 +00:00
Fix MOVE CCR permissions.
This commit is contained in:
parent
d1298c8863
commit
62ed1ca2fd
@ -631,11 +631,13 @@ void Processor<BusHandler, dtack_is_implicit, permit_overrun, signal_will_perfor
|
|||||||
#define Duplicate(x, y) \
|
#define Duplicate(x, y) \
|
||||||
case InstructionSet::M68k::Operation::x: \
|
case InstructionSet::M68k::Operation::x: \
|
||||||
static_assert( \
|
static_assert( \
|
||||||
InstructionSet::M68k::operand_flags<InstructionSet::M68k::Model::M68000, InstructionSet::M68k::Operation::x>() == \
|
InstructionSet::M68k::operand_flags<InstructionSet::M68k::Model::M68000, InstructionSet::M68k::Operation::x>() == \
|
||||||
InstructionSet::M68k::operand_flags<InstructionSet::M68k::Model::M68000, InstructionSet::M68k::Operation::y>() && \
|
InstructionSet::M68k::operand_flags<InstructionSet::M68k::Model::M68000, InstructionSet::M68k::Operation::y>() && \
|
||||||
InstructionSet::M68k::operand_size<InstructionSet::M68k::Operation::x>() == \
|
InstructionSet::M68k::operand_size<InstructionSet::M68k::Operation::x>() == \
|
||||||
InstructionSet::M68k::operand_size<InstructionSet::M68k::Operation::y>() \
|
InstructionSet::M68k::operand_size<InstructionSet::M68k::Operation::y>() && \
|
||||||
); \
|
InstructionSet::M68k::requires_supervisor<InstructionSet::M68k::Model::M68000>(InstructionSet::M68k::Operation::x) == \
|
||||||
|
InstructionSet::M68k::requires_supervisor<InstructionSet::M68k::Model::M68000>(InstructionSet::M68k::Operation::y) \
|
||||||
|
); \
|
||||||
[[fallthrough]];
|
[[fallthrough]];
|
||||||
|
|
||||||
#define SpecialCASE(x) case InstructionSet::M68k::Operation::x: CheckSupervisor(x); MoveToStateSpecific(x)
|
#define SpecialCASE(x) case InstructionSet::M68k::Operation::x: CheckSupervisor(x); MoveToStateSpecific(x)
|
||||||
@ -947,7 +949,7 @@ void Processor<BusHandler, dtack_is_implicit, permit_overrun, signal_will_perfor
|
|||||||
perform_state_ = Perform_np;
|
perform_state_ = Perform_np;
|
||||||
});
|
});
|
||||||
|
|
||||||
Duplicate(MOVEtoCCR, MOVEtoSR);
|
StdCASE(MOVEtoCCR, perform_state_ = MOVEtoCCRSR);
|
||||||
StdCASE(MOVEtoSR, perform_state_ = MOVEtoCCRSR);
|
StdCASE(MOVEtoSR, perform_state_ = MOVEtoCCRSR);
|
||||||
StdCASE(MOVEfromSR, {
|
StdCASE(MOVEfromSR, {
|
||||||
if(instruction_.mode(0) == Mode::DataRegisterDirect) {
|
if(instruction_.mode(0) == Mode::DataRegisterDirect) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user