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

Unified Diff: src/trusted/validator_mips/gen/decode.cc

Issue 10978045: [MIPS] Use break instruction as NACL_HALT for MIPS. (Closed)
Patch Set: Created 8 years, 3 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_mips/gen/decode.cc
diff --git a/src/trusted/validator_mips/gen/decode.cc b/src/trusted/validator_mips/gen/decode.cc
index dd45a08159b3bdc81aca5a83fef3be090a84df1a..d16029bb3139c22cd54fe14c3d457f7bf73bb992 100644
--- a/src/trusted/validator_mips/gen/decode.cc
+++ b/src/trusted/validator_mips/gen/decode.cc
@@ -15,7 +15,7 @@ namespace nacl_mips_dec {
struct DecoderState {
const Load _Load_instance;
const JalImm _JalImm_instance;
- const FPLoadStore _FPLoadStore_instance;
+ const Branch _Branch_instance;
Mark Seaborn 2012/09/26 16:59:24 Why do Branch and FPLoadStore get swapped? Does t
petarj 2012/09/28 17:55:02 Validator's generator will produce deterministic o
const Arithm2 _Arithm2_instance;
const Arithm3 _Arithm3_instance;
const Forbidden _Forbidden_instance;
@@ -24,7 +24,7 @@ struct DecoderState {
const JalReg _JalReg_instance;
const NaClHalt _NaClHalt_instance;
const StoreConditional _StoreConditional_instance;
- const Branch _Branch_instance;
+ const FPLoadStore _FPLoadStore_instance;
const JmpImm _JmpImm_instance;
const JmpReg _JmpReg_instance;
const Store _Store_instance;
@@ -32,7 +32,7 @@ struct DecoderState {
DecoderState() :
_Load_instance()
,_JalImm_instance()
- ,_FPLoadStore_instance()
+ ,_Branch_instance()
,_Arithm2_instance()
,_Arithm3_instance()
,_Forbidden_instance()
@@ -41,7 +41,7 @@ struct DecoderState {
,_JalReg_instance()
,_NaClHalt_instance()
,_StoreConditional_instance()
- ,_Branch_instance()
+ ,_FPLoadStore_instance()
,_JmpImm_instance()
,_JmpReg_instance()
,_Store_instance()
@@ -270,11 +270,27 @@ static inline const ClassDecoder &decode_special(const Instruction insn, const D
return decode_jalr(insn, state);
}
+ if (((insn & 0x0000003F) == 0x0000000D)) {
+ return state->_Safe_instance;
+ }
+
if (((insn & 0x0000003F) == 0x0000000F)) {
return decode_sync(insn, state);
}
- if (((insn & 0x00000037) == 0x00000005)) {
+ if (((insn & 0x0000003F) == 0x0000003F)) {
+ return state->_Forbidden_instance;
+ }
+
+ if (((insn & 0x0000001F) == 0x0000001E)) {
+ return state->_Forbidden_instance;
+ }
+
+ if (((insn & 0x0000002F) == 0x00000005)) {
+ return state->_Forbidden_instance;
+ }
+
+ if (((insn & 0x00000037) == 0x00000017)) {
return state->_Forbidden_instance;
}
@@ -290,6 +306,10 @@ static inline const ClassDecoder &decode_special(const Instruction insn, const D
return decode_mthi(insn, state);
}
+ if (((insn & 0x0000003D) == 0x00000014)) {
+ return state->_Forbidden_instance;
+ }
+
if (((insn & 0x0000003E) == 0x0000000A)) {
return decode_arithm3_2(insn, state);
}
@@ -298,11 +318,11 @@ static inline const ClassDecoder &decode_special(const Instruction insn, const D
return decode_arithm3_3(insn, state);
}
- if (((insn & 0x0000003E) == 0x0000003C)) {
+ if (((insn & 0x0000003E) == 0x0000002E)) {
return state->_Forbidden_instance;
}
- if (((insn & 0x0000002E) == 0x0000002E)) {
+ if (((insn & 0x0000001E) == 0x0000001C)) {
return state->_Forbidden_instance;
}
@@ -318,10 +338,6 @@ static inline const ClassDecoder &decode_special(const Instruction insn, const D
return state->_Forbidden_instance;
}
- if (((insn & 0x00000034) == 0x00000014)) {
- return state->_Forbidden_instance;
- }
-
if (((insn & 0x00000038) == 0x00000020)) {
return decode_arithm3_3(insn, state);
}

Powered by Google App Engine
This is Rietveld 408576698