Chromium Code Reviews| 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); |
| } |