diff --git a/src/isa-thumb.c b/src/isa-thumb.c index 5b29a9b97..084cf501e 100644 --- a/src/isa-thumb.c +++ b/src/isa-thumb.c @@ -170,6 +170,7 @@ DEFINE_INSTRUCTION_WITH_HIGH_THUMB(MOV3, cpu->gprs[rd] = cpu->gprs[rm]) #define DEFINE_IMMEDIATE_WITH_REGISTER_EX_THUMB(NAME, RD, BODY) \ DEFINE_INSTRUCTION_THUMB(NAME, \ int rd = RD; \ + int immediate = (opcode & 0x00FF) << 2; \ BODY;) #define DEFINE_IMMEDIATE_WITH_REGISTER_THUMB(NAME, BODY) \ @@ -180,7 +181,7 @@ DEFINE_IMMEDIATE_WITH_REGISTER_THUMB(LDR4, ARM_STUB) DEFINE_IMMEDIATE_WITH_REGISTER_THUMB(STR3, ARM_STUB) DEFINE_IMMEDIATE_WITH_REGISTER_THUMB(ADD5, ARM_STUB) -DEFINE_IMMEDIATE_WITH_REGISTER_THUMB(ADD6, ARM_STUB) +DEFINE_IMMEDIATE_WITH_REGISTER_THUMB(ADD6, cpu->gprs[rd] = cpu->gprs[ARM_SP] + immediate) #define DEFINE_LOAD_STORE_WITH_REGISTER_EX_THUMB(NAME, RM, BODY) \ DEFINE_INSTRUCTION_THUMB(NAME, \