Go to the documentation of this file.
28 #ifndef __ARCH_ARM_FASTMODEL_IRIS_THREAD_CONTEXT_HH__
29 #define __ARCH_ARM_FASTMODEL_IRIS_THREAD_CONTEXT_HH__
38 #include "iris/IrisInstance.h"
39 #include "iris/detail/IrisErrorCode.h"
40 #include "iris/detail/IrisObjects.h"
54 typedef std::map<std::string, iris::ResourceInfo>
ResourceMap;
68 iris::InstanceId
_instId = iris::IRIS_UINT64_MAX;
92 iris::ResourceId
pcRscId = iris::IRIS_UINT64_MAX;
143 uint64_t esId,
const iris::IrisValueMap &fields, uint64_t time,
144 uint64_t sInstId,
bool syncEc, std::string &error_message_out);
146 uint64_t esId,
const iris::IrisValueMap &fields, uint64_t time,
147 uint64_t sInstId,
bool syncEc, std::string &error_message_out);
149 uint64_t esId,
const iris::IrisValueMap &fields, uint64_t time,
150 uint64_t sInstId,
bool syncEc, std::string &error_message_out);
152 uint64_t esId,
const iris::IrisValueMap &fields, uint64_t time,
153 uint64_t sInstId,
bool syncEc, std::string &error_message_out);
155 uint64_t esId,
const iris::IrisValueMap &fields, uint64_t time,
156 uint64_t sInstId,
bool syncEc, std::string &error_message_out);
165 iris::IrisCppAdapter &
call()
const {
return client.irisCall(); }
169 Addr vaddr, iris::MemorySpaceId v_space);
174 iris::IrisConnectionInterface *iris_if,
175 const std::string &iris_path);
207 panic(
"%s not implemented.", __FUNCTION__);
226 panic(
"%s not implemented.", __FUNCTION__);
231 panic(
"%s not implemented.", __FUNCTION__);
243 panic(
"%s not implemented.", __FUNCTION__);
253 panic(
"%s not implemented.", __FUNCTION__);
257 panic(
"%s not implemented.", __FUNCTION__);
263 panic(
"%s not implemented.", __FUNCTION__);
269 warn(
"Ignoring clearArchRegs()");
280 panic(
"%s not implemented.", __FUNCTION__);
287 panic(
"%s not implemented.", __FUNCTION__);
293 panic(
"%s not implemented.", __FUNCTION__);
301 panic(
"%s not implemented.", __FUNCTION__);
315 panic(
"%s not implemented.", __FUNCTION__);
321 panic(
"%s not implemented.", __FUNCTION__);
327 panic(
"%s not implemented.", __FUNCTION__);
334 panic(
"%s not implemented.", __FUNCTION__);
368 panic(
"%s not implemented.", __FUNCTION__);
376 panic(
"%s not implemented.", __FUNCTION__);
382 panic(
"%s not implemented.", __FUNCTION__);
403 panic(
"%s not implemented.", __FUNCTION__);
408 panic(
"%s not implemented.", __FUNCTION__);
415 panic(
"%s not implemented.", __FUNCTION__);
420 panic(
"%s not implemented.", __FUNCTION__);
426 panic(
"%s not implemented.", __FUNCTION__);
432 panic(
"%s not implemented.", __FUNCTION__);
440 panic(
"%s not implemented.", __FUNCTION__);
446 panic(
"%s not implemented.", __FUNCTION__);
457 panic(
"%s not implemented.", __FUNCTION__);
463 panic(
"%s not implemented.", __FUNCTION__);
469 panic(
"%s not implemented.", __FUNCTION__);
476 #endif // __ARCH_ARM_FASTMODEL_IRIS_THREAD_CONTEXT_HH__
Tick readLastSuspend() override
std::map< int, std::string > IdxNameMap
void setVecReg(const RegId ®, const ArmISA::VecRegContainer &val) override
std::unique_ptr< BaseHTMCheckpoint > BaseHTMCheckpointPtr
System * getSystemPtr() override
RegVal readIntRegFlat(RegIndex idx) const override
Flat register interfaces.
ArmISA::PCState pcState() const override
VecPredReg::Container VecPredRegContainer
@ Halted
Permanently shut down.
const ArmISA::VecPredRegContainer & readVecPredReg(const RegId ®) const override
void takeOverFrom(gem5::ThreadContext *old_context) override
RegVal readMiscReg(RegIndex misc_reg) override
std::shared_ptr< EventList > events
iris::EventStreamId regEventStreamId
MicroPC microPC() const override
void halt() override
Set the status to Halted.
Addr nextInstAddr() const override
int threadId() const override
iris::IrisCppAdapter & call() const
BaseISA * getIsaPtr() override
void setVecRegFlat(RegIndex idx, const ArmISA::VecRegContainer &val) override
std::map< Addr, BpInfoPtr > BpInfoMap
void htmAbortTransaction(uint64_t htm_uid, HtmFailureFaultCause cause) override
void setIntReg(RegIndex reg_idx, RegVal val) override
ArmISA::VecRegContainer & getWritableVecRegFlat(RegIndex idx) override
void activate() override
Set the status to Active.
iris::IrisErrorCode breakpointHit(uint64_t esId, const iris::IrisValueMap &fields, uint64_t time, uint64_t sInstId, bool syncEc, std::string &error_message_out)
void sendFunctional(PacketPtr pkt) override
void descheduleInstCountEvent(Event *event) override
void installBp(BpInfoIt it)
virtual void initFromIrisInstance(const ResourceMap &resources)
PortProxy & getVirtProxy() override
iris::ResourceId icountRscId
uint32_t socketId() const
Reads this CPU's Socket ID.
BpInfoIt getOrAllocBp(Addr pc)
void uninstallBp(BpInfoIt it)
gem5::BaseCPU * getCpuPtr() override
Event * enableAfterPseudoEvent
iris::EventStreamId breakpointEventStreamId
std::vector< iris::MemorySpaceInfo > memorySpaces
std::vector< ArmISA::VecPredRegContainer > vecPredRegs
void suspend() override
Set the status to Suspended.
iris::IrisCppAdapter & noThrow() const
iris::IrisErrorCode simulationTimeEvent(uint64_t esId, const iris::IrisValueMap &fields, uint64_t time, uint64_t sInstId, bool syncEc, std::string &error_message_out)
ArmISA::VecRegContainer & getWritableVecReg(const RegId ®) override
const ArmISA::VecElem & readVecElem(const RegId ®) const override
void copyArchRegs(gem5::ThreadContext *tc) override
void setThreadId(int id) override
ThreadContext is the external interface to all thread state for anything outside of the CPU.
RegVal readCCReg(RegIndex reg_idx) const override
int cpuId() const override
@ Suspended
Temporarily inactive.
void setCCReg(RegIndex reg_idx, RegVal val) override
BpInfoMap::iterator BpInfoIt
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
ArmISA::Decoder * getDecoderPtr() override
void pcStateNoRecord(const ArmISA::PCState &val) override
GenericISA::DelaySlotPCState< 4 > PCState
BaseHTMCheckpointPtr & getHtmCheckpointPtr() override
uint64_t Tick
Tick count type.
void setMiscRegNoEffect(RegIndex misc_reg, const RegVal val) override
std::unique_ptr< PortProxy > virtProxy
void setFloatReg(RegIndex reg_idx, RegVal val) override
void setHtmCheckpointPtr(BaseHTMCheckpointPtr cpt) override
RegVal readCCRegFlat(RegIndex idx) const override
ThreadContext(gem5::BaseCPU *cpu, int id, System *system, gem5::BaseMMU *mmu, gem5::BaseISA *isa, iris::IrisConnectionInterface *iris_if, const std::string &iris_path)
const ArmISA::VecPredRegContainer & readVecPredRegFlat(RegIndex idx) const override
std::unique_ptr< BpInfo > BpInfoPtr
iris::IrisErrorCode phaseInitLeave(uint64_t esId, const iris::IrisValueMap &fields, uint64_t time, uint64_t sInstId, bool syncEc, std::string &error_message_out)
This object is a proxy for a port or other object which implements the functional response protocol,...
Queue of events sorted in time order.
ArmISA::VecPredRegContainer & getWritableVecPredRegFlat(RegIndex idx) override
const ArmISA::VecRegContainer & readVecRegFlat(RegIndex idx) const override
void clearArchRegs() override
std::vector< iris::MemorySupportedAddressTranslationResult > translations
void extractResourceMap(ResourceIds &ids, const ResourceMap &resources, const IdxNameMap &idx_names)
int contextId() const override
void setStCondFailures(unsigned sc_failures) override
unsigned readStCondFailures() const override
ResourceIds flattenedIntIds
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
std::vector< ArmISA::VecRegContainer > vecRegs
const ArmISA::VecElem & readVecElemFlat(RegIndex idx, const ElemIndex &elemIdx) const override
RegVal readFloatRegFlat(RegIndex idx) const override
uint16_t ElemIndex
Logical vector register elem index type.
const std::string & name()
iris::ResourceId extractResourceId(const ResourceMap &resources, const std::string &name)
void setFloatRegFlat(RegIndex idx, RegVal val) override
ResourceIds vecPredRegIds
iris::EventStreamId timeEventStreamId
iris::IrisErrorCode semihostingEvent(uint64_t esId, const iris::IrisValueMap &fields, uint64_t time, uint64_t sInstId, bool syncEc, std::string &error_message_out)
RegVal readMiscRegNoEffect(RegIndex misc_reg) const override
void setCCRegFlat(RegIndex idx, RegVal val) override
ArmISA::VecPredRegContainer & getWritableVecPredReg(const RegId ®) override
void scheduleInstCountEvent(Event *event, Tick count) override
RegId flattenRegId(const RegId ®Id) const override
iris::IrisErrorCode instanceRegistryChanged(uint64_t esId, const iris::IrisValueMap &fields, uint64_t time, uint64_t sInstId, bool syncEc, std::string &error_message_out)
Tick getCurrentInstCount() override
EventQueue comInstEventQueue
void setContextId(int id) override
void initMemProxies(gem5::ThreadContext *tc) override
Initialise the physical and virtual port proxies and tie them to the data port of the CPU.
std::map< std::string, iris::ResourceInfo > ResourceMap
bool translateAddress(Addr &paddr, iris::MemorySpaceId p_space, Addr vaddr, iris::MemorySpaceId v_space)
virtual const std::vector< iris::MemorySpaceId > & getBpSpaceIds() const =0
int cpuId() const
Reads this CPU's ID.
void setVecElem(const RegId ®, const ArmISA::VecElem &val) override
int ContextID
Globally unique thread context ID.
void setMiscReg(RegIndex misc_reg, const RegVal val) override
iris::EventStreamId semihostingEventStreamId
Tick readLastActivate() override
uint32_t socketId() const override
void setStatus(Status new_status) override
bool remove(PCEvent *e) override
Status status() const override
void setVecPredRegFlat(RegIndex idx, const ArmISA::VecPredRegContainer &val) override
iris::EventStreamId initEventStreamId
std::vector< iris::ResourceId > ResourceIds
void regStats(const std::string &name) override
RegVal readFloatReg(RegIndex reg_idx) const override
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
bool schedule(PCEvent *e) override
void setVecPredReg(const RegId ®, const ArmISA::VecPredRegContainer &val) override
iris::IrisInstance client
RegVal readIntReg(RegIndex reg_idx) const override
void setProcessPtr(Process *p) override
void setIntRegFlat(RegIndex idx, uint64_t val) override
BaseMMU * getMMUPtr() override
Process * getProcessPtr() override
const ArmISA::VecRegContainer & readVecReg(const RegId ®) const override
CheckerCPU * getCheckerCpuPtr() override
Addr instAddr() const override
Register ID: describe an architectural register with its class and index.
#define panic(...)
This implements a cprintf based panic() function.
void setVecElemFlat(RegIndex idx, const ElemIndex &elemIdx, const ArmISA::VecElem &val) override
Generated on Tue Sep 21 2021 12:24:24 for gem5 by doxygen 1.8.17