From e396a34b0155d5054a099c67a91baa66c095d3d8 Mon Sep 17 00:00:00 2001 From: Korey Sewell Date: Fri, 4 Feb 2011 00:09:20 -0500 Subject: inorder: fault handling Maintain all information about an instruction's fault in the DynInst object rather than any cpu-request object. Also, if there is a fault during the execution stage then just save the fault inside the instruction and trap once the instruction tries to graduate --- src/cpu/inorder/resources/fetch_unit.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'src/cpu/inorder/resources/fetch_unit.cc') diff --git a/src/cpu/inorder/resources/fetch_unit.cc b/src/cpu/inorder/resources/fetch_unit.cc index 7bbeffadd..0e9866708 100644 --- a/src/cpu/inorder/resources/fetch_unit.cc +++ b/src/cpu/inorder/resources/fetch_unit.cc @@ -227,7 +227,8 @@ FetchUnit::execute(int slot_num) ThreadID tid = inst->readTid(); Addr block_addr = cacheBlockAlign(inst->getMemAddr()); int asid = cpu->asid[tid]; - cache_req->fault = NoFault; + + inst->fault = NoFault; switch (cache_req->cmd) { @@ -275,7 +276,7 @@ FetchUnit::execute(int slot_num) doTLBAccess(inst, cache_req, cacheBlkSize, 0, TheISA::TLB::Execute); - if (cache_req->fault == NoFault) { + if (inst->fault == NoFault) { DPRINTF(InOrderCachePort, "[tid:%u]: Initiating fetch access to %s for " "addr:%#x (block:%#x)\n", tid, name(), -- cgit v1.2.3