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

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

Issue 11016003: [MIPS] Use break instruction as NACL_HALT for MIPS. (Closed) Base URL: http://src.chromium.org/native_client/trunk/src/native_client/
Patch Set: Remove extra lines. Created 8 years, 2 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
« no previous file with comments | « src/trusted/service_runtime/nacl_config.h ('k') | src/trusted/validator_mips/inst_classes.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..0996810fa72e459d5eca3142b6e3100141d43116 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;
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->_NaClHalt_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);
}
@@ -1052,16 +1068,12 @@ static inline const ClassDecoder &decode_arithm3_2(const Instruction insn, const
* Specified by: jr.
*/
static inline const ClassDecoder &decode_jr(const Instruction insn, const DecoderState *state) {
- if (((insn & 0x03E00000) != 0x00000000) && ((insn & 0x001FFFC0) == 0x00000000)) {
- return state->_JmpReg_instance;
- }
-
- if (((insn & 0x03E00000) == 0x00000000) && ((insn & 0x001FFFC0) == 0x00000000)) {
- return state->_NaClHalt_instance;
+ if (((insn & 0x001FFFC0) != 0x00000000)) {
+ return state->_Forbidden_instance;
}
- if ((true) && ((insn & 0x001FFFC0) != 0x00000000)) {
- return state->_Forbidden_instance;
+ if (((insn & 0x001FFFC0) == 0x00000000)) {
+ return state->_JmpReg_instance;
}
// Catch any attempt to fall through...
« no previous file with comments | « src/trusted/service_runtime/nacl_config.h ('k') | src/trusted/validator_mips/inst_classes.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698