| Index: src/arm/constants-arm.h
|
| diff --git a/src/arm/constants-arm.h b/src/arm/constants-arm.h
|
| index 703613932cd064f34dbf5773acdb4acd3daf43d4..7b79ccd42fa996c9aa6617ac1fcba88bfe9a98ba 100644
|
| --- a/src/arm/constants-arm.h
|
| +++ b/src/arm/constants-arm.h
|
| @@ -142,7 +142,7 @@ inline Condition ReverseCondition(Condition cond) {
|
| // Instruction objects are pointers to 32bit values, and provide methods to
|
| // access the various ISA fields.
|
| typedef int32_t Instr;
|
| -
|
| +typedef int16_t Instr16;
|
|
|
| // Opcodes for Data-processing instructions (instructions with a type 0 and 1)
|
| // as defined in section A3.4
|
| @@ -166,6 +166,94 @@ enum Opcode {
|
| };
|
|
|
|
|
| +// NOTE: these are opcode or opB
|
| +enum ThumbMode1Opcode16 {
|
| + ADD_REG_1 = 3 << 2,
|
| + ADD_IMM_1 = 7 << 1,
|
| + ADD_IMM_2 = 3 << 3,
|
| + SUB_REG = 13,
|
| + SUB_IMM_1 = 15,
|
| + SUB_IMM_2 = 7 << 2,
|
| + MOV_IMM = 4 << 2,
|
| + CMP_IMM = 5 << 2,
|
| + LSL_IMM = 0,
|
| + LSR_IMM = 4,
|
| + ROR_IMM = 3 << 2,
|
| + RRX_IMM = 3 << 2,
|
| + ASR_IMM = 8
|
| +};
|
| +
|
| +
|
| +// NOTE: these are opcodes
|
| +enum ThumbMode2Opcode16 {
|
| + CMP_REG_1 = 10,
|
| + AND_REG = 0,
|
| + EOR_REG = 1,
|
| + LSL_REG = 2,
|
| + LSR_REG = 3,
|
| + ASR_REG = 4,
|
| + ADC_REG = 5,
|
| + SBC_REG = 6,
|
| + ROR_REG = 7,
|
| + TST_REG = 8,
|
| + RSB_IMM = 9,
|
| + CMN_REG = 11,
|
| + ORR_REG = 12,
|
| + MUL_REG = 13,
|
| + BIC_REG = 14,
|
| + MVN_REG = 15
|
| +};
|
| +
|
| +
|
| +// NOTE: these are opcodes
|
| +enum ThumbMode3Opcode16 {
|
| + ADD_REG_2 = 0,
|
| + CMP_REG_2 = 4,
|
| + MOV_REG_1 = 8,
|
| + MOV_REG_2 = 0, // all zeros - so do not call mode function
|
| + BX_REG = 12,
|
| + BLX_REG = 14
|
| +};
|
| +
|
| +
|
| +// NOTE: for mode_4 these are opB codes
|
| +enum ThumbMode4_1Opcode16 {
|
| + STR_REG = 0,
|
| + STRH_REG = 1,
|
| + STRB_REG = 2,
|
| + LDR_REG_1 = 4,
|
| + LDR_REG_2 = 4,
|
| + LDRH_REG = 5,
|
| + LDRB_REG = 6,
|
| + LDRSB_REG = 3,
|
| + LDRSH_REG = 7
|
| +};
|
| +
|
| +
|
| +enum ThumbMode4_2Opcode16 {
|
| + LDR_IMM_1 = 4,
|
| + STR_IMM_1 = 0
|
| +};
|
| +
|
| +
|
| +enum ThumbMode4_3Opcode16 {
|
| + LDRB_IMM = 4,
|
| + STRB_IMM = 0
|
| +};
|
| +
|
| +
|
| +enum ThumbMode4_4Opcode16 {
|
| + LDRH_IMM = 4,
|
| + STRH_IMM = 0
|
| +};
|
| +
|
| +
|
| +enum ThumbMode4_5Opcode16 {
|
| + LDR_IMM_2 = 4,
|
| + STR_IMM_2 = 0
|
| +};
|
| +
|
| +
|
| // The bits for bit 7-4 for some type 0 miscellaneous instructions.
|
| enum MiscInstructionsBits74 {
|
| // With bits 22-21 01.
|
| @@ -193,13 +281,19 @@ enum {
|
| P = 1 << 24, // Offset/pre-indexed addressing (or post-indexed addressing).
|
| I = 1 << 25, // Immediate shifter operand (or not).
|
|
|
| + B3 = 1 << 3,
|
| B4 = 1 << 4,
|
| B5 = 1 << 5,
|
| B6 = 1 << 6,
|
| B7 = 1 << 7,
|
| B8 = 1 << 8,
|
| B9 = 1 << 9,
|
| + B10 = 1 << 10,
|
| + B11 = 1 << 11,
|
| B12 = 1 << 12,
|
| + B13 = 1 << 13,
|
| + B14 = 1 << 14,
|
| + B15 = 1 << 15,
|
| B16 = 1 << 16,
|
| B18 = 1 << 18,
|
| B19 = 1 << 19,
|
|
|