diff options
author | Korey Sewell <ksewell@umich.edu> | 2011-06-19 21:43:42 -0400 |
---|---|---|
committer | Korey Sewell <ksewell@umich.edu> | 2011-06-19 21:43:42 -0400 |
commit | 078f914e69d6a08b0ff881b0909535307464553f (patch) | |
tree | 50e116b7b7d8a8136a080fe3ea53f6190b71243e /src/cpu/inorder/resources/use_def.cc | |
parent | 3cb23bd3a21a50577aaaa12db41d2203f4a9d6eb (diff) | |
download | gem5-078f914e69d6a08b0ff881b0909535307464553f.tar.xz |
inorder: SE mode TLB faults
handle them like we do in FS mode, by blocking the TLB until the fault
is handled by the fault->invoke()
Diffstat (limited to 'src/cpu/inorder/resources/use_def.cc')
-rw-r--r-- | src/cpu/inorder/resources/use_def.cc | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/cpu/inorder/resources/use_def.cc b/src/cpu/inorder/resources/use_def.cc index 9d0100565..38a2eb040 100644 --- a/src/cpu/inorder/resources/use_def.cc +++ b/src/cpu/inorder/resources/use_def.cc @@ -159,15 +159,6 @@ UseDefUnit::execute(int slot_idx) InstSeqNum seq_num = inst->seqNum; int ud_idx = ud_req->useDefIdx; - if (inst->fault != NoFault) { - DPRINTF(InOrderUseDef, - "[tid:%i]: [sn:%i]: Detected %s fault @ %x. Forwarding to " - "next stage.\n", inst->readTid(), inst->seqNum, inst->fault->name(), - inst->pcState()); - ud_req->done(); - return; - } - if (serializeOnNextInst[tid] && seq_num > serializeAfterSeqNum[tid]) { inst->setSerializeBefore(); @@ -187,6 +178,15 @@ UseDefUnit::execute(int slot_idx) serializeAfterSeqNum[tid] = seq_num; } + if (inst->fault != NoFault) { + DPRINTF(InOrderUseDef, + "[tid:%i]: [sn:%i]: Detected %s fault @ %x. Forwarding to " + "next stage.\n", inst->readTid(), inst->seqNum, inst->fault->name(), + inst->pcState()); + ud_req->done(); + return; + } + // If there is a non-speculative instruction // in the pipeline then stall instructions here // --- |