ARM7: Fix ARM multiply instructions when PC is a destination register

This commit is contained in:
Jeffrey Pfau 2015-05-09 13:40:58 -07:00
parent 179f12bf09
commit 32d1f5bbfb
2 changed files with 5 additions and 5 deletions

View File

@ -50,6 +50,7 @@ Bugfixes:
- GBA: Fix bounds-checking on EEPROM access
- ARM7: Make illegal instruction decoding consistent between ARM and Thumb
- GBA BIOS: Initialize a variable that may be uninitialized in very rare cases
- ARM7: Fix ARM multiply instructions when PC is a destination register
Misc:
- Qt: Show multiplayer numbers in window title
- Qt: Handle saving input settings better

View File

@ -327,13 +327,12 @@ static inline void _immediate(struct ARMCore* cpu, uint32_t opcode) {
int rdHi = (opcode >> 16) & 0xF; \
int rs = (opcode >> 8) & 0xF; \
int rm = opcode & 0xF; \
UNUSED(rdHi); \
if (rdHi == ARM_PC || rd == ARM_PC) { \
return; \
} \
ARM_WAIT_MUL(cpu->gprs[rs]); \
BODY; \
S_BODY; \
if (rd == ARM_PC) { \
ARM_WRITE_PC; \
})
S_BODY;)
#define DEFINE_MULTIPLY_INSTRUCTION_ARM(NAME, BODY, S_BODY) \
DEFINE_MULTIPLY_INSTRUCTION_EX_ARM(NAME, BODY, ) \