mirror of https://github.com/mgba-emu/mgba.git
ARM7: Make illegal instruction decoding consistent between ARM and Thumb
This commit is contained in:
parent
1984d042d1
commit
0cb0c185ff
1
CHANGES
1
CHANGES
|
@ -29,6 +29,7 @@ Bugfixes:
|
|||
- ARM7: Handle writeback for PC in addressing modes 2 and 3
|
||||
- GBA: Handle out-of-bounds I/O access
|
||||
- GBA: Fix bounds-checking on EEPROM access
|
||||
- ARM7: Make illegal instruction decoding consistent between ARM and Thumb
|
||||
Misc:
|
||||
- Qt: Show multiplayer numbers in window title
|
||||
- Qt: Solar sensor can have shortcuts set
|
||||
|
|
|
@ -380,8 +380,12 @@ DEFINE_DECODER_ARM(MRC, ILL, info->operandFormat = ARM_OPERAND_NONE;)
|
|||
|
||||
// Begin miscellaneous definitions
|
||||
|
||||
DEFINE_DECODER_ARM(BKPT, BKPT, info->operandFormat = ARM_OPERAND_NONE;) // Not strictly in ARMv4T, but here for convenience
|
||||
DEFINE_DECODER_ARM(ILL, ILL, info->operandFormat = ARM_OPERAND_NONE;) // Illegal opcode
|
||||
DEFINE_DECODER_ARM(BKPT, BKPT,
|
||||
info->operandFormat = ARM_OPERAND_NONE;
|
||||
info->traps = 1;) // Not strictly in ARMv4T, but here for convenience
|
||||
DEFINE_DECODER_ARM(ILL, ILL,
|
||||
info->operandFormat = ARM_OPERAND_NONE;
|
||||
info->traps = 1;) // Illegal opcode
|
||||
|
||||
DEFINE_DECODER_ARM(MSR, MSR,
|
||||
info->affectsCPSR = 1;
|
||||
|
|
|
@ -281,8 +281,13 @@ DEFINE_LOAD_STORE_MULTIPLE_EX_THUMB(POPR, ARM_SP, LDM, ARM_MEMORY_INCREMENT_AFTE
|
|||
DEFINE_LOAD_STORE_MULTIPLE_EX_THUMB(PUSH, ARM_SP, STM, ARM_MEMORY_DECREMENT_BEFORE, 0)
|
||||
DEFINE_LOAD_STORE_MULTIPLE_EX_THUMB(PUSHR, ARM_SP, STM, ARM_MEMORY_DECREMENT_BEFORE, 1 << ARM_LR)
|
||||
|
||||
DEFINE_THUMB_DECODER(ILL, ILL, info->traps = 1;)
|
||||
DEFINE_THUMB_DECODER(BKPT, BKPT, info->traps = 1;)
|
||||
DEFINE_THUMB_DECODER(ILL, ILL,
|
||||
info->operandFormat = ARM_OPERAND_NONE;
|
||||
info->traps = 1;)
|
||||
|
||||
DEFINE_THUMB_DECODER(BKPT, BKPT,
|
||||
info->operandFormat = ARM_OPERAND_NONE;
|
||||
info->traps = 1;)
|
||||
|
||||
DEFINE_THUMB_DECODER(B, B,
|
||||
int16_t immediate = (opcode & 0x07FF) << 5;
|
||||
|
|
Loading…
Reference in New Issue