summaryrefslogtreecommitdiff
path: root/src/arch/arm/nativetrace.cc
diff options
context:
space:
mode:
authorGabe Black <gblack@eecs.umich.edu>2009-07-29 00:14:43 -0700
committerGabe Black <gblack@eecs.umich.edu>2009-07-29 00:14:43 -0700
commit873112ea9924074212f1dd667d345850c6dce789 (patch)
tree7349e44b5e6a8faf30a49fcfce56ca59a714ddf7 /src/arch/arm/nativetrace.cc
parent0a9eb59e6f8be32939c6a267e67943ef50b8ba83 (diff)
downloadgem5-873112ea9924074212f1dd667d345850c6dce789.tar.xz
ARM: Make sure the target process doesn't run away from statetrace.
Diffstat (limited to 'src/arch/arm/nativetrace.cc')
-rw-r--r--src/arch/arm/nativetrace.cc7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/arch/arm/nativetrace.cc b/src/arch/arm/nativetrace.cc
index 7c9c70e0c..90c5e5c25 100644
--- a/src/arch/arm/nativetrace.cc
+++ b/src/arch/arm/nativetrace.cc
@@ -104,8 +104,13 @@ Trace::ArmNativeTrace::ThreadState::update(ThreadContext *tc)
void
Trace::ArmNativeTrace::check(NativeTraceRecord *record)
{
+ ThreadContext *tc = record->getThread();
+ // This area is read only on the target. It can't stop there to tell us
+ // what's going on, so we should skip over anything there also.
+ if (tc->readNextPC() > 0xffff0000)
+ return;
nState.update(this);
- mState.update(record->getThread());
+ mState.update(tc);
bool errorFound = false;
// Regular int regs