mirror of https://github.com/mgba-emu/mgba.git
Have board re-read CPSR when it is modified by MSR
This commit is contained in:
parent
ef66e4a8c7
commit
8e5b806cdd
|
@ -659,7 +659,8 @@ DEFINE_INSTRUCTION_ARM(MSR,
|
||||||
if (cpu->privilegeMode != MODE_USER && (mask & PSR_PRIV_MASK)) {
|
if (cpu->privilegeMode != MODE_USER && (mask & PSR_PRIV_MASK)) {
|
||||||
ARMSetPrivilegeMode(cpu, (enum PrivilegeMode) ((operand & 0x0000000F) | 0x00000010));
|
ARMSetPrivilegeMode(cpu, (enum PrivilegeMode) ((operand & 0x0000000F) | 0x00000010));
|
||||||
cpu->cpsr.packed = (cpu->cpsr.packed & ~PSR_PRIV_MASK) | (operand & PSR_PRIV_MASK);
|
cpu->cpsr.packed = (cpu->cpsr.packed & ~PSR_PRIV_MASK) | (operand & PSR_PRIV_MASK);
|
||||||
})
|
}
|
||||||
|
_ARMReadCPSR(cpu);)
|
||||||
|
|
||||||
DEFINE_INSTRUCTION_ARM(MSRR,
|
DEFINE_INSTRUCTION_ARM(MSRR,
|
||||||
int c = opcode & 0x00010000;
|
int c = opcode & 0x00010000;
|
||||||
|
@ -689,7 +690,8 @@ DEFINE_INSTRUCTION_ARM(MSRI,
|
||||||
if (cpu->privilegeMode != MODE_USER && (mask & PSR_PRIV_MASK)) {
|
if (cpu->privilegeMode != MODE_USER && (mask & PSR_PRIV_MASK)) {
|
||||||
ARMSetPrivilegeMode(cpu, (enum PrivilegeMode) ((operand & 0x0000000F) | 0x00000010));
|
ARMSetPrivilegeMode(cpu, (enum PrivilegeMode) ((operand & 0x0000000F) | 0x00000010));
|
||||||
cpu->cpsr.packed = (cpu->cpsr.packed & ~PSR_PRIV_MASK) | (operand & PSR_PRIV_MASK);
|
cpu->cpsr.packed = (cpu->cpsr.packed & ~PSR_PRIV_MASK) | (operand & PSR_PRIV_MASK);
|
||||||
})
|
}
|
||||||
|
_ARMReadCPSR(cpu);)
|
||||||
|
|
||||||
DEFINE_INSTRUCTION_ARM(MSRRI,
|
DEFINE_INSTRUCTION_ARM(MSRRI,
|
||||||
int c = opcode & 0x00010000;
|
int c = opcode & 0x00010000;
|
||||||
|
|
Loading…
Reference in New Issue