| Index: src/trusted/validator_arm/gen/arm32_decode_baselines_1.cc
|
| ===================================================================
|
| --- src/trusted/validator_arm/gen/arm32_decode_baselines_1.cc (revision 10736)
|
| +++ src/trusted/validator_arm/gen/arm32_decode_baselines_1.cc (working copy)
|
| @@ -1421,6 +1421,7 @@
|
| // {Cond: Cond(31:28),
|
| // Lr: 14,
|
| // Pc: 15,
|
| +// actual: Actual_BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case_1,
|
| // baseline: BranchImmediate24,
|
| // constraints: ,
|
| // defs: {Pc, Lr},
|
| @@ -1430,7 +1431,7 @@
|
| // imm32: SignExtend(imm24:'00'(1:0), 32),
|
| // pattern: cccc1011iiiiiiiiiiiiiiiiiiiiiiii,
|
| // relative: true,
|
| -// relative_offset: imm32,
|
| +// relative_offset: imm32 + 8,
|
| // rule: BL_BLX_immediate,
|
| // safety: [true => MAY_BE_SAFE],
|
| // true: true,
|
| @@ -1454,10 +1455,10 @@
|
| int32_t BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case_0::
|
| branch_target_offset(Instruction inst) const {
|
| UNREFERENCED_PARAMETER(inst); // To silence compiler.
|
| - // relative_offset: "SignExtend(inst(23:0):'00'(1:0), 32)"
|
| + // relative_offset: "SignExtend(inst(23:0):'00'(1:0), 32) + 8"
|
| return (((((((inst.Bits() & 0x00FFFFFF)) << 2) | (0 & 0x00000003))) & 0x02000000)
|
| ? ((((((inst.Bits() & 0x00FFFFFF)) << 2) | (0 & 0x00000003))) | 0xFC000000)
|
| - : ((((inst.Bits() & 0x00FFFFFF)) << 2) | (0 & 0x00000003)));
|
| + : ((((inst.Bits() & 0x00FFFFFF)) << 2) | (0 & 0x00000003))) + 8;
|
| }
|
|
|
| SafetyLevel BL_BLX_immediate_cccc1011iiiiiiiiiiiiiiiiiiiiiiii_case_0::
|
| @@ -1484,6 +1485,7 @@
|
| //
|
| // {Cond: Cond(31:28),
|
| // Pc: 15,
|
| +// actual: Actual_B_cccc1010iiiiiiiiiiiiiiiiiiiiiiii_case_1,
|
| // baseline: BranchImmediate24,
|
| // constraints: ,
|
| // defs: {Pc},
|
| @@ -1493,7 +1495,7 @@
|
| // imm32: SignExtend(imm24:'00'(1:0), 32),
|
| // pattern: cccc1010iiiiiiiiiiiiiiiiiiiiiiii,
|
| // relative: true,
|
| -// relative_offset: imm32,
|
| +// relative_offset: imm32 + 8,
|
| // rule: B,
|
| // safety: [true => MAY_BE_SAFE],
|
| // true: true,
|
| @@ -1516,10 +1518,10 @@
|
| int32_t B_cccc1010iiiiiiiiiiiiiiiiiiiiiiii_case_0::
|
| branch_target_offset(Instruction inst) const {
|
| UNREFERENCED_PARAMETER(inst); // To silence compiler.
|
| - // relative_offset: "SignExtend(inst(23:0):'00'(1:0), 32)"
|
| + // relative_offset: "SignExtend(inst(23:0):'00'(1:0), 32) + 8"
|
| return (((((((inst.Bits() & 0x00FFFFFF)) << 2) | (0 & 0x00000003))) & 0x02000000)
|
| ? ((((((inst.Bits() & 0x00FFFFFF)) << 2) | (0 & 0x00000003))) | 0xFC000000)
|
| - : ((((inst.Bits() & 0x00FFFFFF)) << 2) | (0 & 0x00000003)));
|
| + : ((((inst.Bits() & 0x00FFFFFF)) << 2) | (0 & 0x00000003))) + 8;
|
| }
|
|
|
| SafetyLevel B_cccc1010iiiiiiiiiiiiiiiiiiiiiiii_case_0::
|
| @@ -2687,6 +2689,7 @@
|
| // Pc: 15,
|
| // Rn: Rn(19:16),
|
| // W: W(21),
|
| +// actual: Actual_LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_1,
|
| // base: Rn,
|
| // baseline: LoadRegisterList,
|
| // cond: cond(31:28),
|
| @@ -2707,8 +2710,7 @@
|
| // wback &&
|
| // Contains(registers, Rn) => UNKNOWN,
|
| // Contains(registers, Pc) => FORBIDDEN_OPERANDS],
|
| -// small_imm_base_wb: true,
|
| -// true: true,
|
| +// small_imm_base_wb: wback,
|
| // uses: {Rn},
|
| // wback: W(21)=1}
|
| Register LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_0::
|
| @@ -2762,8 +2764,9 @@
|
| base_address_register_writeback_small_immediate(
|
| Instruction inst) const {
|
| UNREFERENCED_PARAMETER(inst); // To silence compiler.
|
| - // small_imm_base_wb: 'true'
|
| - return true;
|
| + // small_imm_base_wb: 'inst(21)=1'
|
| + return (inst.Bits() & 0x00200000) ==
|
| + 0x00200000;
|
| }
|
|
|
| RegisterList LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_0::
|
| @@ -2780,6 +2783,7 @@
|
| // Pc: 15,
|
| // Rn: Rn(19:16),
|
| // W: W(21),
|
| +// actual: Actual_LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_1,
|
| // base: Rn,
|
| // baseline: LoadRegisterList,
|
| // cond: cond(31:28),
|
| @@ -2800,8 +2804,7 @@
|
| // wback &&
|
| // Contains(registers, Rn) => UNKNOWN,
|
| // Contains(registers, Pc) => FORBIDDEN_OPERANDS],
|
| -// small_imm_base_wb: true,
|
| -// true: true,
|
| +// small_imm_base_wb: wback,
|
| // uses: {Rn},
|
| // wback: W(21)=1}
|
| Register LDMDB_LDMEA_cccc100100w1nnnnrrrrrrrrrrrrrrrr_case_0::
|
| @@ -2855,8 +2858,9 @@
|
| base_address_register_writeback_small_immediate(
|
| Instruction inst) const {
|
| UNREFERENCED_PARAMETER(inst); // To silence compiler.
|
| - // small_imm_base_wb: 'true'
|
| - return true;
|
| + // small_imm_base_wb: 'inst(21)=1'
|
| + return (inst.Bits() & 0x00200000) ==
|
| + 0x00200000;
|
| }
|
|
|
| RegisterList LDMDB_LDMEA_cccc100100w1nnnnrrrrrrrrrrrrrrrr_case_0::
|
| @@ -2873,6 +2877,7 @@
|
| // Pc: 15,
|
| // Rn: Rn(19:16),
|
| // W: W(21),
|
| +// actual: Actual_LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_1,
|
| // base: Rn,
|
| // baseline: LoadRegisterList,
|
| // cond: cond(31:28),
|
| @@ -2893,8 +2898,7 @@
|
| // wback &&
|
| // Contains(registers, Rn) => UNKNOWN,
|
| // Contains(registers, Pc) => FORBIDDEN_OPERANDS],
|
| -// small_imm_base_wb: true,
|
| -// true: true,
|
| +// small_imm_base_wb: wback,
|
| // uses: {Rn},
|
| // wback: W(21)=1}
|
| Register LDMIB_LDMED_cccc100110w1nnnnrrrrrrrrrrrrrrrr_case_0::
|
| @@ -2948,8 +2952,9 @@
|
| base_address_register_writeback_small_immediate(
|
| Instruction inst) const {
|
| UNREFERENCED_PARAMETER(inst); // To silence compiler.
|
| - // small_imm_base_wb: 'true'
|
| - return true;
|
| + // small_imm_base_wb: 'inst(21)=1'
|
| + return (inst.Bits() & 0x00200000) ==
|
| + 0x00200000;
|
| }
|
|
|
| RegisterList LDMIB_LDMED_cccc100110w1nnnnrrrrrrrrrrrrrrrr_case_0::
|
| @@ -2966,6 +2971,7 @@
|
| // Pc: 15,
|
| // Rn: Rn(19:16),
|
| // W: W(21),
|
| +// actual: Actual_LDMDA_LDMFA_cccc100000w1nnnnrrrrrrrrrrrrrrrr_case_1,
|
| // base: Rn,
|
| // baseline: LoadRegisterList,
|
| // cond: cond(31:28),
|
| @@ -2986,8 +2992,7 @@
|
| // wback &&
|
| // Contains(registers, Rn) => UNKNOWN,
|
| // Contains(registers, Pc) => FORBIDDEN_OPERANDS],
|
| -// small_imm_base_wb: true,
|
| -// true: true,
|
| +// small_imm_base_wb: wback,
|
| // uses: {Rn},
|
| // wback: W(21)=1}
|
| Register LDM_LDMIA_LDMFD_cccc100010w1nnnnrrrrrrrrrrrrrrrr_case_0::
|
| @@ -3041,8 +3046,9 @@
|
| base_address_register_writeback_small_immediate(
|
| Instruction inst) const {
|
| UNREFERENCED_PARAMETER(inst); // To silence compiler.
|
| - // small_imm_base_wb: 'true'
|
| - return true;
|
| + // small_imm_base_wb: 'inst(21)=1'
|
| + return (inst.Bits() & 0x00200000) ==
|
| + 0x00200000;
|
| }
|
|
|
| RegisterList LDM_LDMIA_LDMFD_cccc100010w1nnnnrrrrrrrrrrrrrrrr_case_0::
|
|
|