Index: src/trusted/validator_mips/validator.h |
diff --git a/src/trusted/validator_mips/validator.h b/src/trusted/validator_mips/validator.h |
index 85f0236a159c412d0e915b374950e268a48dded1..377a2233f63ff51849a02cf29f824f8084b376f1 100644 |
--- a/src/trusted/validator_mips/validator.h |
+++ b/src/trusted/validator_mips/validator.h |
@@ -274,6 +274,14 @@ class DecodedInstruction { |
return decoder_->IsLoadStore(); |
} |
+ bool IsLoadWord() const { |
+ return decoder_->IsLoadWord(); |
+ } |
+ |
+ uint32_t GetImm() const { |
+ return decoder_->GetImm(inst_); |
+ } |
+ |
bool IsDirectJump() const { |
return decoder_->IsDirectJump(); |
} |
@@ -385,6 +393,9 @@ const char * const kProblemBranchSplitsPattern = "kProblemBranchSplitsPattern"; |
const char * const kProblemBranchInvalidDest = "kProblemBranchInvalidDest"; |
// A load/store uses an unsafe (non-masked) base address. |
const char * const kProblemUnsafeLoadStore = "kProblemUnsafeLoadStore"; |
+// A thread pointer load/store is unsafe. |
+const char * const kProblemUnsafeLoadStoreThreadPointer = |
+ "kProblemUnsafeLoadStoreThreadPointer"; |
// An instruction updates a data-address register (e.g. SP) without masking. |
const char * const kProblemUnsafeDataWrite = "kProblemUnsafeDataWrite"; |
// An instruction updates a read-only register (e.g. t6, t7, t8). |