diff options
author | Korey Sewell <ksewell@umich.edu> | 2011-06-19 21:43:39 -0400 |
---|---|---|
committer | Korey Sewell <ksewell@umich.edu> | 2011-06-19 21:43:39 -0400 |
commit | 5f608dd2e9a760b4280fb03ce82a11a62c6f3af9 (patch) | |
tree | 725a942e67f2efeffaa84c4385afc81424e142ee /src/cpu/inorder/resource.cc | |
parent | e0e387c2a926dcdb53f85d8189e6d7158765b4ac (diff) | |
download | gem5-5f608dd2e9a760b4280fb03ce82a11a62c6f3af9.tar.xz |
inorder: squash and trap behind a tlb fault
Diffstat (limited to 'src/cpu/inorder/resource.cc')
-rw-r--r-- | src/cpu/inorder/resource.cc | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/cpu/inorder/resource.cc b/src/cpu/inorder/resource.cc index a21536676..817cc5868 100644 --- a/src/cpu/inorder/resource.cc +++ b/src/cpu/inorder/resource.cc @@ -336,6 +336,25 @@ Resource::squashDueToMemStall(DynInstPtr inst, int stage_num, squash(inst, stage_num, squash_seq_num, tid); } +void +Resource::squashThenTrap(int stage_num, DynInstPtr inst) +{ + ThreadID tid = inst->readTid(); + + inst->setSquashInfo(stage_num); + setupSquash(inst, stage_num, tid); + + if (inst->traceData && DTRACE(ExecFaulting)) { + inst->traceData->setStageCycle(stage_num, curTick()); + inst->traceData->setFetchSeq(inst->seqNum); + inst->traceData->dump(); + delete inst->traceData; + inst->traceData = NULL; + } + + cpu->trapContext(inst->fault, tid, inst); +} + Tick Resource::ticks(int num_cycles) { |