arch: Use shared_ptr for all Faults
This patch takes quite a large step in transitioning from the ad-hoc RefCountingPtr to the c++11 shared_ptr by adopting its use for all Faults. There are no changes in behaviour, and the code modifications are mostly just replacing "new" with "make_shared".
This commit is contained in:
@@ -64,7 +64,6 @@
|
||||
#include "cpu/translation.hh"
|
||||
#include "mem/packet.hh"
|
||||
#include "sim/byteswap.hh"
|
||||
#include "sim/fault_fwd.hh"
|
||||
#include "sim/system.hh"
|
||||
#include "sim/tlb.hh"
|
||||
|
||||
|
||||
@@ -49,7 +49,6 @@
|
||||
#include "config/the_isa.hh"
|
||||
#include "cpu/static_inst_fwd.hh"
|
||||
#include "cpu/translation.hh"
|
||||
#include "sim/fault_fwd.hh"
|
||||
|
||||
/**
|
||||
* The ExecContext is an abstract base class the provides the
|
||||
|
||||
@@ -46,7 +46,6 @@
|
||||
#include "cpu/reg_class.hh"
|
||||
#include "debug/InOrderDynInst.hh"
|
||||
#include "mem/request.hh"
|
||||
#include "sim/fault_fwd.hh"
|
||||
#include "sim/full_system.hh"
|
||||
|
||||
using namespace std;
|
||||
@@ -278,7 +277,7 @@ InOrderDynInst::hwrei()
|
||||
#if THE_ISA == ALPHA_ISA
|
||||
// Can only do a hwrei when in pal mode.
|
||||
if (!(this->instAddr() & 0x3))
|
||||
return new AlphaISA::UnimplementedOpcodeFault;
|
||||
return std::make_shared<AlphaISA::UnimplementedOpcodeFault>();
|
||||
|
||||
// Set the next PC based on the value of the EXC_ADDR IPR.
|
||||
AlphaISA::PCState pc = this->pcState();
|
||||
|
||||
@@ -58,7 +58,6 @@
|
||||
#include "cpu/thread_context.hh"
|
||||
#include "debug/InOrderDynInst.hh"
|
||||
#include "mem/packet.hh"
|
||||
#include "sim/fault_fwd.hh"
|
||||
#include "sim/system.hh"
|
||||
|
||||
#if THE_ISA == ALPHA_ISA
|
||||
|
||||
@@ -202,7 +202,7 @@ BaseO3DynInst<Impl>::hwrei()
|
||||
#if THE_ISA == ALPHA_ISA
|
||||
// Can only do a hwrei when in pal mode.
|
||||
if (!(this->instAddr() & 0x3))
|
||||
return new AlphaISA::UnimplementedOpcodeFault;
|
||||
return std::make_shared<AlphaISA::UnimplementedOpcodeFault>();
|
||||
|
||||
// Set the next PC based on the value of the EXC_ADDR IPR.
|
||||
AlphaISA::PCState pc = this->pcState();
|
||||
|
||||
@@ -61,7 +61,6 @@
|
||||
#include "debug/LSQUnit.hh"
|
||||
#include "mem/packet.hh"
|
||||
#include "mem/port.hh"
|
||||
#include "sim/fault_fwd.hh"
|
||||
|
||||
struct DerivO3CPUParams;
|
||||
|
||||
@@ -578,9 +577,9 @@ LSQUnit<Impl>::read(Request *req, Request *sreqLow, Request *sreqHigh,
|
||||
delete sreqLow;
|
||||
delete sreqHigh;
|
||||
}
|
||||
return new GenericISA::M5PanicFault(
|
||||
"Uncachable load [sn:%llx] PC %s\n",
|
||||
load_inst->seqNum, load_inst->pcState());
|
||||
return std::make_shared<GenericISA::M5PanicFault>(
|
||||
"Uncachable load [sn:%llx] PC %s\n",
|
||||
load_inst->seqNum, load_inst->pcState());
|
||||
}
|
||||
|
||||
// Check the SQ for any previous stores that might lead to forwarding
|
||||
|
||||
@@ -498,7 +498,7 @@ LSQUnit<Impl>::checkSnoop(PacketPtr pkt)
|
||||
pkt->getAddr(), ld_inst->seqNum);
|
||||
|
||||
// Mark the load for re-execution
|
||||
ld_inst->fault = new ReExec;
|
||||
ld_inst->fault = std::make_shared<ReExec>();
|
||||
} else {
|
||||
DPRINTF(LSQUnit, "HitExternal Snoop for addr %#x [sn:%lli]\n",
|
||||
pkt->getAddr(), ld_inst->seqNum);
|
||||
@@ -558,10 +558,10 @@ LSQUnit<Impl>::checkViolations(int load_idx, DynInstPtr &inst)
|
||||
|
||||
++lsqMemOrderViolation;
|
||||
|
||||
return new GenericISA::M5PanicFault(
|
||||
"Detected fault with inst [sn:%lli] and "
|
||||
"[sn:%lli] at address %#x\n",
|
||||
inst->seqNum, ld_inst->seqNum, ld_eff_addr1);
|
||||
return std::make_shared<GenericISA::M5PanicFault>(
|
||||
"Detected fault with inst [sn:%lli] and "
|
||||
"[sn:%lli] at address %#x\n",
|
||||
inst->seqNum, ld_inst->seqNum, ld_eff_addr1);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -585,9 +585,10 @@ LSQUnit<Impl>::checkViolations(int load_idx, DynInstPtr &inst)
|
||||
|
||||
++lsqMemOrderViolation;
|
||||
|
||||
return new GenericISA::M5PanicFault("Detected fault with "
|
||||
"inst [sn:%lli] and [sn:%lli] at address %#x\n",
|
||||
inst->seqNum, ld_inst->seqNum, ld_eff_addr1);
|
||||
return std::make_shared<GenericISA::M5PanicFault>(
|
||||
"Detected fault with "
|
||||
"inst [sn:%lli] and [sn:%lli] at address %#x\n",
|
||||
inst->seqNum, ld_inst->seqNum, ld_eff_addr1);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -45,7 +45,6 @@
|
||||
#include "cpu/static_inst_fwd.hh"
|
||||
#include "cpu/thread_context.hh"
|
||||
#include "enums/StaticInstFlags.hh"
|
||||
#include "sim/fault_fwd.hh"
|
||||
|
||||
// forward declarations
|
||||
class Packet;
|
||||
|
||||
Reference in New Issue
Block a user