mirror of https://github.com/mgba-emu/mgba.git
Put stub definitions in all of Thumb
This commit is contained in:
parent
7e5de27f43
commit
a511df7920
129
src/isa-thumb.c
129
src/isa-thumb.c
|
@ -80,16 +80,16 @@ void ThumbStep(struct ARMCore* cpu) {
|
|||
#define DEFINE_IMMEDIATE_5_INSTRUCTION_THUMB(NAME, BODY) \
|
||||
COUNT_5(DEFINE_IMMEDIATE_5_INSTRUCTION_EX_THUMB, NAME ## _, BODY)
|
||||
|
||||
DEFINE_IMMEDIATE_5_INSTRUCTION_THUMB(LSL1, )
|
||||
DEFINE_IMMEDIATE_5_INSTRUCTION_THUMB(LSR1, )
|
||||
DEFINE_IMMEDIATE_5_INSTRUCTION_THUMB(ASR1, )
|
||||
DEFINE_IMMEDIATE_5_INSTRUCTION_THUMB(LSL1, ARM_STUB)
|
||||
DEFINE_IMMEDIATE_5_INSTRUCTION_THUMB(LSR1, ARM_STUB)
|
||||
DEFINE_IMMEDIATE_5_INSTRUCTION_THUMB(ASR1, ARM_STUB)
|
||||
|
||||
DEFINE_IMMEDIATE_5_INSTRUCTION_THUMB(LDR1, )
|
||||
DEFINE_IMMEDIATE_5_INSTRUCTION_THUMB(LDRB1, )
|
||||
DEFINE_IMMEDIATE_5_INSTRUCTION_THUMB(LDRH1, )
|
||||
DEFINE_IMMEDIATE_5_INSTRUCTION_THUMB(STR1, )
|
||||
DEFINE_IMMEDIATE_5_INSTRUCTION_THUMB(STRB1, )
|
||||
DEFINE_IMMEDIATE_5_INSTRUCTION_THUMB(STRH1, )
|
||||
DEFINE_IMMEDIATE_5_INSTRUCTION_THUMB(LDR1, ARM_STUB)
|
||||
DEFINE_IMMEDIATE_5_INSTRUCTION_THUMB(LDRB1, ARM_STUB)
|
||||
DEFINE_IMMEDIATE_5_INSTRUCTION_THUMB(LDRH1, ARM_STUB)
|
||||
DEFINE_IMMEDIATE_5_INSTRUCTION_THUMB(STR1, ARM_STUB)
|
||||
DEFINE_IMMEDIATE_5_INSTRUCTION_THUMB(STRB1, ARM_STUB)
|
||||
DEFINE_IMMEDIATE_5_INSTRUCTION_THUMB(STRH1, ARM_STUB)
|
||||
|
||||
#define DEFINE_DATA_FORM_1_INSTRUCTION_EX_THUMB(NAME, RM, BODY) \
|
||||
DEFINE_INSTRUCTION_THUMB(NAME, \
|
||||
|
@ -99,8 +99,8 @@ DEFINE_IMMEDIATE_5_INSTRUCTION_THUMB(STRH1, )
|
|||
#define DEFINE_DATA_FORM_1_INSTRUCTION_THUMB(NAME, BODY) \
|
||||
COUNT_3(DEFINE_DATA_FORM_1_INSTRUCTION_EX_THUMB, NAME ## 3_R, BODY)
|
||||
|
||||
DEFINE_DATA_FORM_1_INSTRUCTION_THUMB(ADD, )
|
||||
DEFINE_DATA_FORM_1_INSTRUCTION_THUMB(SUB, )
|
||||
DEFINE_DATA_FORM_1_INSTRUCTION_THUMB(ADD, ARM_STUB)
|
||||
DEFINE_DATA_FORM_1_INSTRUCTION_THUMB(SUB, ARM_STUB)
|
||||
|
||||
#define DEFINE_DATA_FORM_2_INSTRUCTION_EX_THUMB(NAME, IMMEDIATE, BODY) \
|
||||
DEFINE_INSTRUCTION_THUMB(NAME, \
|
||||
|
@ -110,8 +110,8 @@ DEFINE_DATA_FORM_1_INSTRUCTION_THUMB(SUB, )
|
|||
#define DEFINE_DATA_FORM_2_INSTRUCTION_THUMB(NAME, BODY) \
|
||||
COUNT_3(DEFINE_DATA_FORM_2_INSTRUCTION_EX_THUMB, NAME ## 1_, BODY)
|
||||
|
||||
DEFINE_DATA_FORM_2_INSTRUCTION_THUMB(ADD, )
|
||||
DEFINE_DATA_FORM_2_INSTRUCTION_THUMB(SUB, )
|
||||
DEFINE_DATA_FORM_2_INSTRUCTION_THUMB(ADD, ARM_STUB)
|
||||
DEFINE_DATA_FORM_2_INSTRUCTION_THUMB(SUB, ARM_STUB)
|
||||
|
||||
#define DEFINE_DATA_FORM_3_INSTRUCTION_EX_THUMB(NAME, RD, BODY) \
|
||||
DEFINE_INSTRUCTION_THUMB(NAME, \
|
||||
|
@ -121,10 +121,10 @@ DEFINE_DATA_FORM_2_INSTRUCTION_THUMB(SUB, )
|
|||
#define DEFINE_DATA_FORM_3_INSTRUCTION_THUMB(NAME, BODY) \
|
||||
COUNT_3(DEFINE_DATA_FORM_3_INSTRUCTION_EX_THUMB, NAME ## _R, BODY)
|
||||
|
||||
DEFINE_DATA_FORM_3_INSTRUCTION_THUMB(ADD2, )
|
||||
DEFINE_DATA_FORM_3_INSTRUCTION_THUMB(CMP1, )
|
||||
DEFINE_DATA_FORM_3_INSTRUCTION_THUMB(MOV1, )
|
||||
DEFINE_DATA_FORM_3_INSTRUCTION_THUMB(SUB2, )
|
||||
DEFINE_DATA_FORM_3_INSTRUCTION_THUMB(ADD2, ARM_STUB)
|
||||
DEFINE_DATA_FORM_3_INSTRUCTION_THUMB(CMP1, ARM_STUB)
|
||||
DEFINE_DATA_FORM_3_INSTRUCTION_THUMB(MOV1, ARM_STUB)
|
||||
DEFINE_DATA_FORM_3_INSTRUCTION_THUMB(SUB2, ARM_STUB)
|
||||
|
||||
#define DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(NAME, BODY) \
|
||||
DEFINE_INSTRUCTION_THUMB(NAME, \
|
||||
|
@ -132,22 +132,22 @@ DEFINE_DATA_FORM_3_INSTRUCTION_THUMB(SUB2, )
|
|||
int rn = (opcode >> 3) & 0x0007; \
|
||||
BODY;)
|
||||
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(AND, )
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(EOR, )
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(LSL2, )
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(LSR2, )
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(ASR2, )
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(ADC, )
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(SBC, )
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(ROR, )
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(TST, )
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(NEG, )
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(CMP2, )
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(CMN, )
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(ORR, )
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(MUL, )
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(BIC, )
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(MVN, )
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(AND, ARM_STUB)
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(EOR, ARM_STUB)
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(LSL2, ARM_STUB)
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(LSR2, ARM_STUB)
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(ASR2, ARM_STUB)
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(ADC, ARM_STUB)
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(SBC, ARM_STUB)
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(ROR, ARM_STUB)
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(TST, ARM_STUB)
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(NEG, ARM_STUB)
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(CMP2, ARM_STUB)
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(CMN, ARM_STUB)
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(ORR, ARM_STUB)
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(MUL, ARM_STUB)
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(BIC, ARM_STUB)
|
||||
DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(MVN, ARM_STUB)
|
||||
|
||||
#define DEFINE_INSTRUCTION_WITH_HIGH_EX_THUMB(NAME, H1, H2, BODY) \
|
||||
DEFINE_INSTRUCTION_THUMB(NAME, \
|
||||
|
@ -161,9 +161,9 @@ DEFINE_DATA_FORM_5_INSTRUCTION_THUMB(MVN, )
|
|||
DEFINE_INSTRUCTION_WITH_HIGH_EX_THUMB(NAME ## 10, 8, 0, BODY) \
|
||||
DEFINE_INSTRUCTION_WITH_HIGH_EX_THUMB(NAME ## 11, 8, 8, BODY)
|
||||
|
||||
DEFINE_INSTRUCTION_WITH_HIGH_THUMB(ADD4, )
|
||||
DEFINE_INSTRUCTION_WITH_HIGH_THUMB(CMP3, )
|
||||
DEFINE_INSTRUCTION_WITH_HIGH_THUMB(MOV3, )
|
||||
DEFINE_INSTRUCTION_WITH_HIGH_THUMB(ADD4, ARM_STUB)
|
||||
DEFINE_INSTRUCTION_WITH_HIGH_THUMB(CMP3, ARM_STUB)
|
||||
DEFINE_INSTRUCTION_WITH_HIGH_THUMB(MOV3, ARM_STUB)
|
||||
|
||||
#define DEFINE_IMMEDIATE_WITH_REGISTER_EX_THUMB(NAME, RD, BODY) \
|
||||
DEFINE_INSTRUCTION_THUMB(NAME, \
|
||||
|
@ -173,12 +173,12 @@ DEFINE_INSTRUCTION_WITH_HIGH_THUMB(MOV3, )
|
|||
#define DEFINE_IMMEDIATE_WITH_REGISTER_THUMB(NAME, BODY) \
|
||||
COUNT_3(DEFINE_IMMEDIATE_WITH_REGISTER_EX_THUMB, NAME ## _R, BODY)
|
||||
|
||||
DEFINE_IMMEDIATE_WITH_REGISTER_THUMB(LDR3, )
|
||||
DEFINE_IMMEDIATE_WITH_REGISTER_THUMB(LDR4, )
|
||||
DEFINE_IMMEDIATE_WITH_REGISTER_THUMB(STR3, )
|
||||
DEFINE_IMMEDIATE_WITH_REGISTER_THUMB(LDR3, ARM_STUB)
|
||||
DEFINE_IMMEDIATE_WITH_REGISTER_THUMB(LDR4, ARM_STUB)
|
||||
DEFINE_IMMEDIATE_WITH_REGISTER_THUMB(STR3, ARM_STUB)
|
||||
|
||||
DEFINE_IMMEDIATE_WITH_REGISTER_THUMB(ADD5, )
|
||||
DEFINE_IMMEDIATE_WITH_REGISTER_THUMB(ADD6, )
|
||||
DEFINE_IMMEDIATE_WITH_REGISTER_THUMB(ADD5, ARM_STUB)
|
||||
DEFINE_IMMEDIATE_WITH_REGISTER_THUMB(ADD6, ARM_STUB)
|
||||
|
||||
#define DEFINE_LOAD_STORE_WITH_REGISTER_EX_THUMB(NAME, RM, BODY) \
|
||||
DEFINE_INSTRUCTION_THUMB(NAME, \
|
||||
|
@ -188,14 +188,14 @@ DEFINE_IMMEDIATE_WITH_REGISTER_THUMB(ADD6, )
|
|||
#define DEFINE_LOAD_STORE_WITH_REGISTER_THUMB(NAME, BODY) \
|
||||
COUNT_3(DEFINE_LOAD_STORE_WITH_REGISTER_EX_THUMB, NAME ## _R, BODY)
|
||||
|
||||
DEFINE_LOAD_STORE_WITH_REGISTER_THUMB(LDR2, )
|
||||
DEFINE_LOAD_STORE_WITH_REGISTER_THUMB(LDRB2, )
|
||||
DEFINE_LOAD_STORE_WITH_REGISTER_THUMB(LDRH2, )
|
||||
DEFINE_LOAD_STORE_WITH_REGISTER_THUMB(LDRSB, )
|
||||
DEFINE_LOAD_STORE_WITH_REGISTER_THUMB(LDRSH, )
|
||||
DEFINE_LOAD_STORE_WITH_REGISTER_THUMB(STR2, )
|
||||
DEFINE_LOAD_STORE_WITH_REGISTER_THUMB(STRB2, )
|
||||
DEFINE_LOAD_STORE_WITH_REGISTER_THUMB(STRH2, )
|
||||
DEFINE_LOAD_STORE_WITH_REGISTER_THUMB(LDR2, ARM_STUB)
|
||||
DEFINE_LOAD_STORE_WITH_REGISTER_THUMB(LDRB2, ARM_STUB)
|
||||
DEFINE_LOAD_STORE_WITH_REGISTER_THUMB(LDRH2, ARM_STUB)
|
||||
DEFINE_LOAD_STORE_WITH_REGISTER_THUMB(LDRSB, ARM_STUB)
|
||||
DEFINE_LOAD_STORE_WITH_REGISTER_THUMB(LDRSH, ARM_STUB)
|
||||
DEFINE_LOAD_STORE_WITH_REGISTER_THUMB(STR2, ARM_STUB)
|
||||
DEFINE_LOAD_STORE_WITH_REGISTER_THUMB(STRB2, ARM_STUB)
|
||||
DEFINE_LOAD_STORE_WITH_REGISTER_THUMB(STRH2, ARM_STUB)
|
||||
|
||||
#define DEFINE_LOAD_STORE_MULTIPLE_EX_THUMB(NAME, RS, BODY) \
|
||||
DEFINE_INSTRUCTION_THUMB(NAME, \
|
||||
|
@ -205,12 +205,13 @@ DEFINE_LOAD_STORE_WITH_REGISTER_THUMB(STRH2, )
|
|||
#define DEFINE_LOAD_STORE_MULTIPLE_THUMB(NAME, BODY) \
|
||||
COUNT_3(DEFINE_LOAD_STORE_MULTIPLE_EX_THUMB, NAME ## _R, BODY)
|
||||
|
||||
DEFINE_LOAD_STORE_MULTIPLE_THUMB(LDMIA, )
|
||||
DEFINE_LOAD_STORE_MULTIPLE_THUMB(STMIA, )
|
||||
DEFINE_LOAD_STORE_MULTIPLE_THUMB(LDMIA, ARM_STUB)
|
||||
DEFINE_LOAD_STORE_MULTIPLE_THUMB(STMIA, ARM_STUB)
|
||||
|
||||
#define DEFINE_CONDITIONAL_BRANCH_THUMB(COND) \
|
||||
DEFINE_INSTRUCTION_THUMB(B ## COND, \
|
||||
if (ARM_COND_ ## COND) { \
|
||||
ARM_STUB; \
|
||||
})
|
||||
|
||||
DEFINE_CONDITIONAL_BRANCH_THUMB(EQ)
|
||||
|
@ -228,21 +229,21 @@ DEFINE_CONDITIONAL_BRANCH_THUMB(LT)
|
|||
DEFINE_CONDITIONAL_BRANCH_THUMB(GT)
|
||||
DEFINE_CONDITIONAL_BRANCH_THUMB(LE)
|
||||
|
||||
DEFINE_INSTRUCTION_THUMB(ADD7, )
|
||||
DEFINE_INSTRUCTION_THUMB(SUB4, )
|
||||
DEFINE_INSTRUCTION_THUMB(ADD7, ARM_STUB)
|
||||
DEFINE_INSTRUCTION_THUMB(SUB4, ARM_STUB)
|
||||
|
||||
DEFINE_INSTRUCTION_THUMB(POP, )
|
||||
DEFINE_INSTRUCTION_THUMB(POPR, )
|
||||
DEFINE_INSTRUCTION_THUMB(PUSH, )
|
||||
DEFINE_INSTRUCTION_THUMB(PUSHR, )
|
||||
DEFINE_INSTRUCTION_THUMB(POP, ARM_STUB)
|
||||
DEFINE_INSTRUCTION_THUMB(POPR, ARM_STUB)
|
||||
DEFINE_INSTRUCTION_THUMB(PUSH, ARM_STUB)
|
||||
DEFINE_INSTRUCTION_THUMB(PUSHR, ARM_STUB)
|
||||
|
||||
DEFINE_INSTRUCTION_THUMB(ILL, )
|
||||
DEFINE_INSTRUCTION_THUMB(BKPT, )
|
||||
DEFINE_INSTRUCTION_THUMB(B, )
|
||||
DEFINE_INSTRUCTION_THUMB(BL1, )
|
||||
DEFINE_INSTRUCTION_THUMB(BL2, )
|
||||
DEFINE_INSTRUCTION_THUMB(BX, )
|
||||
DEFINE_INSTRUCTION_THUMB(SWI, )
|
||||
DEFINE_INSTRUCTION_THUMB(ILL, ARM_STUB)
|
||||
DEFINE_INSTRUCTION_THUMB(BKPT, ARM_STUB)
|
||||
DEFINE_INSTRUCTION_THUMB(B, ARM_STUB)
|
||||
DEFINE_INSTRUCTION_THUMB(BL1, ARM_STUB)
|
||||
DEFINE_INSTRUCTION_THUMB(BL2, ARM_STUB)
|
||||
DEFINE_INSTRUCTION_THUMB(BX, ARM_STUB)
|
||||
DEFINE_INSTRUCTION_THUMB(SWI, ARM_STUB)
|
||||
|
||||
#define DECLARE_INSTRUCTION_THUMB(EMITTER, NAME) \
|
||||
EMITTER ## NAME
|
||||
|
|
Loading…
Reference in New Issue