CPU interpreter - group Thumb opcode case ranges 0x20 - 0x27 together
This commit is contained in:
parent
f9079ff9fb
commit
ade2bed514
1 changed files with 4 additions and 23 deletions
27
cpu.c
27
cpu.c
|
@ -1656,6 +1656,7 @@ void execute_arm(u32 cycles)
|
|||
cpu_alert_type cpu_alert;
|
||||
|
||||
u32 old_pc;
|
||||
u32 thumb_opcode_val = 0, arm_opcode_val = 0;
|
||||
|
||||
if(!pc_address_block)
|
||||
pc_address_block = load_gamepak_page(pc_region & 0x3FF);
|
||||
|
@ -3261,8 +3262,9 @@ thumb_loop:
|
|||
check_pc_region();
|
||||
pc &= ~0x01;
|
||||
opcode = address16(pc_address_block, (pc & 0x7FFF));
|
||||
thumb_opcode_val = (opcode >> 8) & 0xFF;
|
||||
|
||||
switch((opcode >> 8) & 0xFF)
|
||||
switch(thumb_opcode_val)
|
||||
{
|
||||
case 0x00 ... 0x07:
|
||||
/* LSL rd, rs, offset */
|
||||
|
@ -3301,42 +3303,21 @@ thumb_loop:
|
|||
|
||||
case 0x20:
|
||||
/* MOV r0, imm */
|
||||
thumb_logic(imm, 0, imm);
|
||||
break;
|
||||
|
||||
case 0x21:
|
||||
/* MOV r1, imm */
|
||||
thumb_logic(imm, 1, imm);
|
||||
break;
|
||||
|
||||
case 0x22:
|
||||
/* MOV r2, imm */
|
||||
thumb_logic(imm, 2, imm);
|
||||
break;
|
||||
|
||||
case 0x23:
|
||||
/* MOV r3, imm */
|
||||
thumb_logic(imm, 3, imm);
|
||||
break;
|
||||
|
||||
case 0x24:
|
||||
/* MOV r4, imm */
|
||||
thumb_logic(imm, 4, imm);
|
||||
break;
|
||||
|
||||
case 0x25:
|
||||
/* MOV r5, imm */
|
||||
thumb_logic(imm, 5, imm);
|
||||
break;
|
||||
|
||||
case 0x26:
|
||||
/* MOV r6, imm */
|
||||
thumb_logic(imm, 6, imm);
|
||||
break;
|
||||
|
||||
case 0x27:
|
||||
/* MOV r7, imm */
|
||||
thumb_logic(imm, 7, imm);
|
||||
thumb_logic(imm, thumb_opcode_val - 0x20, imm);
|
||||
break;
|
||||
|
||||
case 0x28:
|
||||
|
|
Loading…
Add table
Reference in a new issue