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

Unified Diff: src/trusted/validator_mips/inst_classes.h

Issue 1535443005: [MIPS] Make validator allow only two load patterns via $t8 (Closed) Base URL: https://chromium.googlesource.com/native_client/src/native_client@master
Patch Set: Created 5 years 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/inst_classes.h
diff --git a/src/trusted/validator_mips/inst_classes.h b/src/trusted/validator_mips/inst_classes.h
index ef8b27b9b88ec82a94ddfa9065d0f72d328e7188..4012cc658080741b5da1eefd03c64634c28a98df 100644
--- a/src/trusted/validator_mips/inst_classes.h
+++ b/src/trusted/validator_mips/inst_classes.h
@@ -136,6 +136,13 @@ class ClassDecoder {
}
/*
+ * For lw instruction.
+ */
Mark Seaborn 2015/12/27 03:46:35 Nit: Fix indentation here
petarj 2015/12/28 14:07:00 Done.
+ virtual bool IsLoadWord() const {
+ return false;
+ }
+
+ /*
* For direct jumps, returning the destination address.
*/
virtual uint32_t DestAddr(const Instruction instr, uint32_t addr) const {
@@ -171,12 +178,12 @@ class ClassDecoder {
* Current MIPS NaCl halt (break).
*/
class NaClHalt : public ClassDecoder {
- public:
- virtual ~NaClHalt() {}
- virtual SafetyLevel safety(const Instruction instr) const {
- UNREFERENCED_PARAMETER(instr);
- return MAY_BE_SAFE;
- }
+ public:
+ virtual ~NaClHalt() {}
+ virtual SafetyLevel safety(const Instruction instr) const {
+ UNREFERENCED_PARAMETER(instr);
+ return MAY_BE_SAFE;
+ }
};
/*
@@ -288,6 +295,9 @@ class AbstractLoadStore : public ClassDecoder {
virtual Register BaseAddressRegister(const Instruction instr) const {
return instr.Reg(25, 21);
}
+ virtual uint32_t GetImm(const Instruction instr) const {
+ return instr.Bits(15, 0);
+ }
};
/*
@@ -310,6 +320,17 @@ class Load : public AbstractLoadStore {
};
/*
+ * Load word instruction, for loading thread pointer.
+ */
+class LoadWord : public Load {
+ public:
+ virtual ~LoadWord() {}
+ virtual bool IsLoadWord() const {
+ return true;
+ }
+};
+
+ /*
* Floating point load and store instructions.
*/
class FPLoadStore : public AbstractLoadStore {
@@ -432,6 +453,6 @@ class Unrecognized : public ClassDecoder {
return FORBIDDEN;
}
};
-} // namespace
+} // namespace nacl_mips_dec
#endif // NATIVE_CLIENT_SRC_TRUSTED_VALIDATOR_MIPS_INST_CLASSES_H

Powered by Google App Engine
This is Rietveld 408576698