Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(59)

Unified Diff: src/trusted/validator_arm/gen/arm32_decode_named.cc

Issue 10879090: ARM validator: continue with extra_load_store_instructions. (Closed) Base URL: svn://svn.chromium.org/native_client/trunk/src/native_client
Patch Set: Update with more tables. Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/trusted/validator_arm/gen/arm32_decode_named.cc
diff --git a/src/trusted/validator_arm/gen/arm32_decode_named.cc b/src/trusted/validator_arm/gen/arm32_decode_named.cc
index ac5f66625f802d76c04ec1aa7b5b7f4b0b8ee2b7..c6e8a145a8513f125cf1e29a6d67c47066002bff 100644
--- a/src/trusted/validator_arm/gen/arm32_decode_named.cc
+++ b/src/trusted/validator_arm/gen/arm32_decode_named.cc
@@ -980,33 +980,48 @@ const NamedClassDecoder& NamedArm32DecoderState::decode_miscellaneous_instructio
const nacl_arm_dec::Instruction insn) const {
if ((insn.Bits() & 0x00000070) == 0x00000000 /* op2(6:4) == 000 */ &&
+ (insn.Bits() & 0x00000200) == 0x00000000 /* B(9:9) == 0 */ &&
(insn.Bits() & 0x00600000) == 0x00200000 /* op(22:21) == 01 */ &&
(insn.Bits() & 0x00030000) == 0x00000000 /* op1(19:16) == xx00 */ &&
- (insn.Bits() & 0x0000FF00) == 0x0000F000 /* $pattern(31:0) == xxxxxxxxxxxxxxxx11110000xxxxxxxx */)
+ (insn.Bits() & 0x0000FD00) == 0x0000F000 /* $pattern(31:0) == xxxxxxxxxxxxxxxx111100x0xxxxxxxx */)
return Unary1RegisterUse_Msr_Rule_104_A1_P210_instance_;
if ((insn.Bits() & 0x00000070) == 0x00000000 /* op2(6:4) == 000 */ &&
+ (insn.Bits() & 0x00000200) == 0x00000000 /* B(9:9) == 0 */ &&
(insn.Bits() & 0x00600000) == 0x00200000 /* op(22:21) == 01 */ &&
(insn.Bits() & 0x00030000) == 0x00010000 /* op1(19:16) == xx01 */ &&
- (insn.Bits() & 0x0000FF00) == 0x0000F000 /* $pattern(31:0) == xxxxxxxxxxxxxxxx11110000xxxxxxxx */)
+ (insn.Bits() & 0x0000FD00) == 0x0000F000 /* $pattern(31:0) == xxxxxxxxxxxxxxxx111100x0xxxxxxxx */)
return ForbiddenCondNop_Msr_Rule_B6_1_7_P14_instance_;
if ((insn.Bits() & 0x00000070) == 0x00000000 /* op2(6:4) == 000 */ &&
+ (insn.Bits() & 0x00000200) == 0x00000000 /* B(9:9) == 0 */ &&
(insn.Bits() & 0x00600000) == 0x00200000 /* op(22:21) == 01 */ &&
(insn.Bits() & 0x00020000) == 0x00020000 /* op1(19:16) == xx1x */ &&
- (insn.Bits() & 0x0000FF00) == 0x0000F000 /* $pattern(31:0) == xxxxxxxxxxxxxxxx11110000xxxxxxxx */)
+ (insn.Bits() & 0x0000FD00) == 0x0000F000 /* $pattern(31:0) == xxxxxxxxxxxxxxxx111100x0xxxxxxxx */)
return ForbiddenCondNop_Msr_Rule_B6_1_7_P14_instance_;
if ((insn.Bits() & 0x00000070) == 0x00000000 /* op2(6:4) == 000 */ &&
+ (insn.Bits() & 0x00000200) == 0x00000000 /* B(9:9) == 0 */ &&
(insn.Bits() & 0x00600000) == 0x00600000 /* op(22:21) == 11 */ &&
- (insn.Bits() & 0x0000FF00) == 0x0000F000 /* $pattern(31:0) == xxxxxxxxxxxxxxxx11110000xxxxxxxx */)
+ (insn.Bits() & 0x0000FD00) == 0x0000F000 /* $pattern(31:0) == xxxxxxxxxxxxxxxx111100x0xxxxxxxx */)
return ForbiddenCondNop_Msr_Rule_B6_1_7_P14_instance_;
if ((insn.Bits() & 0x00000070) == 0x00000000 /* op2(6:4) == 000 */ &&
+ (insn.Bits() & 0x00000200) == 0x00000000 /* B(9:9) == 0 */ &&
(insn.Bits() & 0x00200000) == 0x00000000 /* op(22:21) == x0 */ &&
- (insn.Bits() & 0x000F0F0F) == 0x000F0000 /* $pattern(31:0) == xxxxxxxxxxxx1111xxxx0000xxxx0000 */)
+ (insn.Bits() & 0x000F0D0F) == 0x000F0000 /* $pattern(31:0) == xxxxxxxxxxxx1111xxxx00x0xxxx0000 */)
return Unary1RegisterSet_Mrs_Rule_102_A1_P206_Or_B6_10_instance_;
+ if ((insn.Bits() & 0x00000070) == 0x00000000 /* op2(6:4) == 000 */ &&
+ (insn.Bits() & 0x00000200) == 0x00000200 /* B(9:9) == 1 */ &&
+ (insn.Bits() & 0x00200000) == 0x00000000 /* op(22:21) == x0 */)
+ return ForbiddenCondNop_cccc00010r00mmmmdddd001m00000000_instance_;
+
+ if ((insn.Bits() & 0x00000070) == 0x00000000 /* op2(6:4) == 000 */ &&
+ (insn.Bits() & 0x00000200) == 0x00000200 /* B(9:9) == 1 */ &&
+ (insn.Bits() & 0x00200000) == 0x00200000 /* op(22:21) == x1 */)
+ return ForbiddenCondNop_cccc00010r10mmmm1111001m0000nnnn_instance_;
+
if ((insn.Bits() & 0x00000070) == 0x00000010 /* op2(6:4) == 001 */ &&
(insn.Bits() & 0x00600000) == 0x00200000 /* op(22:21) == 01 */ &&
(insn.Bits() & 0x000FFF00) == 0x000FFF00 /* $pattern(31:0) == xxxxxxxxxxxx111111111111xxxxxxxx */)
@@ -1030,11 +1045,19 @@ const NamedClassDecoder& NamedArm32DecoderState::decode_miscellaneous_instructio
if ((insn.Bits() & 0x00000070) == 0x00000050 /* op2(6:4) == 101 */)
return decode_saturating_addition_and_subtraction(insn);
+ if ((insn.Bits() & 0x00000070) == 0x00000060 /* op2(6:4) == 110 */ &&
+ (insn.Bits() & 0x00600000) == 0x00600000 /* op(22:21) == 11 */)
+ return ForbiddenCondNop_cccc0001011000000000000001101110_instance_;
+
if ((insn.Bits() & 0x00000070) == 0x00000070 /* op2(6:4) == 111 */ &&
(insn.Bits() & 0x00600000) == 0x00200000 /* op(22:21) == 01 */)
return BreakPointAndConstantPoolHead_Bkpt_Rule_22_A1_P56_instance_;
if ((insn.Bits() & 0x00000070) == 0x00000070 /* op2(6:4) == 111 */ &&
+ (insn.Bits() & 0x00600000) == 0x00400000 /* op(22:21) == 10 */)
+ return ForbiddenCondNop_cccc00010100iiiiiiiiiiii0111iiii_instance_;
+
+ if ((insn.Bits() & 0x00000070) == 0x00000070 /* op2(6:4) == 111 */ &&
(insn.Bits() & 0x00600000) == 0x00600000 /* op(22:21) == 11 */ &&
(insn.Bits() & 0x000FFF00) == 0x00000000 /* $pattern(31:0) == xxxxxxxxxxxx000000000000xxxxxxxx */)
return ForbiddenCondNop_Smc_Rule_B6_1_9_P18_instance_;
@@ -1092,11 +1115,13 @@ const NamedClassDecoder& NamedArm32DecoderState::decode_msr_immediate_and_hints(
return CondNop_Dbg_Rule_40_A1_P88_instance_;
if ((insn.Bits() & 0x00400000) == 0x00000000 /* op(22:22) == 0 */ &&
- (insn.Bits() & 0x000F0000) == 0x00040000 /* op1(19:16) == 0100 */)
+ (insn.Bits() & 0x000F0000) == 0x00040000 /* op1(19:16) == 0100 */ &&
+ (insn.Bits() & 0x0000F000) == 0x0000F000 /* $pattern(31:0) == xxxxxxxxxxxxxxxx1111xxxxxxxxxxxx */)
return MoveImmediate12ToApsr_Msr_Rule_103_A1_P208_instance_;
if ((insn.Bits() & 0x00400000) == 0x00000000 /* op(22:22) == 0 */ &&
- (insn.Bits() & 0x000B0000) == 0x00080000 /* op1(19:16) == 1x00 */)
+ (insn.Bits() & 0x000B0000) == 0x00080000 /* op1(19:16) == 1x00 */ &&
+ (insn.Bits() & 0x0000F000) == 0x0000F000 /* $pattern(31:0) == xxxxxxxxxxxxxxxx1111xxxxxxxxxxxx */)
return MoveImmediate12ToApsr_Msr_Rule_103_A1_P208_instance_;
if ((insn.Bits() & 0x00400000) == 0x00000000 /* op(22:22) == 0 */ &&
@@ -1697,7 +1722,7 @@ const NamedClassDecoder& NamedArm32DecoderState::decode_synchronization_primitiv
return LoadExclusive2RegisterOp_Ldrexh_Rule_72_A1_P148_instance_;
if ((insn.Bits() & 0x00B00000) == 0x00000000 /* op(23:20) == 0x00 */)
- return Deprecated_None_instance_;
+ return Deprecated_cccc00010b00nnnntttt00001001tttt_instance_;
if (true &&
true /* $pattern(31:0) == xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx */)

Powered by Google App Engine
This is Rietveld 408576698