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__
34 #include <unordered_map>
40 #include "iris/IrisInstance.h"
41 #include "iris/detail/IrisErrorCode.h"
42 #include "iris/detail/IrisObjects.h"
56 typedef std::map<std::string, iris::ResourceInfo>
ResourceMap;
61 typedef std::unordered_map<Iris::CanonicalMsn, iris::MemorySpaceId>
73 iris::InstanceId
_instId = iris::IRIS_UINT64_MAX;
98 iris::ResourceId
pcRscId = iris::IRIS_UINT64_MAX;
147 uint64_t esId,
const iris::IrisValueMap &fields, uint64_t time,
148 uint64_t sInstId,
bool syncEc, std::string &error_message_out);
150 uint64_t esId,
const iris::IrisValueMap &fields, uint64_t time,
151 uint64_t sInstId,
bool syncEc, std::string &error_message_out);
153 uint64_t esId,
const iris::IrisValueMap &fields, uint64_t time,
154 uint64_t sInstId,
bool syncEc, std::string &error_message_out);
156 uint64_t esId,
const iris::IrisValueMap &fields, uint64_t time,
157 uint64_t sInstId,
bool syncEc, std::string &error_message_out);
159 uint64_t esId,
const iris::IrisValueMap &fields, uint64_t time,
160 uint64_t sInstId,
bool syncEc, std::string &error_message_out);
169 iris::IrisCppAdapter &
call()
const {
return client.irisCall(); }
174 void readMem(iris::MemorySpaceId space,
176 void writeMem(iris::MemorySpaceId space,
179 Addr vaddr, iris::MemorySpaceId v_space);
184 iris::IrisConnectionInterface *iris_if,
185 const std::string &iris_path);
217 panic(
"%s not implemented.", __FUNCTION__);
233 panic(
"%s not implemented.", __FUNCTION__);
238 panic(
"%s not implemented.", __FUNCTION__);
250 panic(
"%s not implemented.", __FUNCTION__);
260 panic(
"%s not implemented.", __FUNCTION__);
264 panic(
"%s not implemented.", __FUNCTION__);
270 panic(
"%s not implemented.", __FUNCTION__);
276 warn(
"Ignoring clearArchRegs()");
295 panic(
"%s not implemented.", __FUNCTION__);
301 panic(
"%s not implemented.", __FUNCTION__);
309 panic(
"%s not implemented.", __FUNCTION__);
323 panic(
"%s not implemented.", __FUNCTION__);
329 panic(
"%s not implemented.", __FUNCTION__);
336 panic(
"%s not implemented.", __FUNCTION__);
367 panic(
"%s not implemented.", __FUNCTION__);
375 panic(
"%s not implemented.", __FUNCTION__);
381 panic(
"%s not implemented.", __FUNCTION__);
410 panic(
"%s not implemented.", __FUNCTION__);
415 panic(
"%s not implemented.", __FUNCTION__);
421 panic(
"%s not implemented.", __FUNCTION__);
426 panic(
"%s not implemented.", __FUNCTION__);
433 panic(
"%s not implemented.", __FUNCTION__);
439 panic(
"%s not implemented.", __FUNCTION__);
450 panic(
"%s not implemented.", __FUNCTION__);
456 panic(
"%s not implemented.", __FUNCTION__);
462 panic(
"%s not implemented.", __FUNCTION__);
469 #endif // __ARCH_ARM_FASTMODEL_IRIS_THREAD_CONTEXT_HH__
Tick readLastSuspend() override
std::map< int, std::string > IdxNameMap
std::unique_ptr< BaseHTMCheckpoint > BaseHTMCheckpointPtr
System * getSystemPtr() override
VecPredReg::Container VecPredRegContainer
virtual const ArmISA::VecRegContainer & readVecRegFlat(RegIndex idx) const
void pcStateNoRecord(const PCStateBase &val) override
@ Halted
Permanently shut down.
void takeOverFrom(gem5::ThreadContext *old_context) override
RegVal readMiscReg(RegIndex misc_reg) override
std::shared_ptr< EventList > events
iris::EventStreamId regEventStreamId
virtual const ArmISA::VecPredRegContainer & readVecPredReg(const RegId ®) const
void * getWritableRegFlat(const RegId ®) override
void setReg(const RegId ®, RegVal val) override
void setRegFlat(const RegId ®, RegVal val) override
const PCStateBase & pcState() const override
void halt() override
Set the status to Halted.
virtual void setCCRegFlat(RegIndex idx, RegVal val)
int threadId() const override
iris::IrisCppAdapter & call() const
std::map< Addr, BpInfoPtr > BpInfoMap
void htmAbortTransaction(uint64_t htm_uid, HtmFailureFaultCause cause) override
void activate() override
Set the status to Active.
virtual RegVal readIntReg(RegIndex reg_idx) const
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)
iris::ResourceId icountRscId
BpInfoIt getOrAllocBp(Addr pc)
void uninstallBp(BpInfoIt it)
gem5::BaseCPU * getCpuPtr() override
virtual void setVecPredRegFlat(RegIndex idx, const ArmISA::VecPredRegContainer &val)
Event * enableAfterPseudoEvent
iris::EventStreamId breakpointEventStreamId
std::vector< iris::MemorySpaceInfo > memorySpaces
std::vector< ArmISA::VecPredRegContainer > vecPredRegs
void suspend() override
Set the status to Suspended.
virtual ArmISA::VecRegContainer & getWritableVecReg(const RegId ®)
MemorySpaceMap memorySpaceIds
iris::IrisCppAdapter & noThrow() const
std::unordered_map< Iris::CanonicalMsn, iris::MemorySpaceId > MemorySpaceMap
virtual void setVecRegFlat(RegIndex idx, const ArmISA::VecRegContainer &val)
iris::IrisErrorCode simulationTimeEvent(uint64_t esId, const iris::IrisValueMap &fields, uint64_t time, uint64_t sInstId, bool syncEc, std::string &error_message_out)
virtual RegVal readCCRegFlat(RegIndex idx) const
virtual void setVecElemFlat(RegIndex idx, RegVal val)
Vector Register Abstraction This generic class is the model in a particularization of MVC,...
void copyArchRegs(gem5::ThreadContext *tc) override
InstDecoder * getDecoderPtr() override
void setThreadId(int id) override
RegVal getReg(const RegId ®) const override
ThreadContext is the external interface to all thread state for anything outside of the CPU.
int cpuId() const override
@ Suspended
Temporarily inactive.
BpInfoMap::iterator BpInfoIt
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
void readMem(iris::MemorySpaceId space, Addr addr, void *p, size_t size)
GenericISA::DelaySlotPCState< 4 > PCState
BaseHTMCheckpointPtr & getHtmCheckpointPtr() override
uint64_t Tick
Tick count type.
void setMiscRegNoEffect(RegIndex misc_reg, const RegVal val) override
void setHtmCheckpointPtr(BaseHTMCheckpointPtr cpt) override
ThreadContext(gem5::BaseCPU *cpu, int id, System *system, gem5::BaseMMU *mmu, gem5::BaseISA *isa, iris::IrisConnectionInterface *iris_if, const std::string &iris_path)
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)
Queue of events sorted in time order.
void clearArchRegs() override
std::vector< iris::MemorySupportedAddressTranslationResult > translations
void extractResourceMap(ResourceIds &ids, const ResourceMap &resources, const IdxNameMap &idx_names)
virtual const ArmISA::VecRegContainer & readVecReg(const RegId ®) const
int contextId() const override
void setStCondFailures(unsigned sc_failures) override
unsigned readStCondFailures() const override
ResourceIds flattenedIntIds
virtual void setIntRegFlat(RegIndex idx, uint64_t val)
virtual RegVal readIntRegFlat(RegIndex idx) const
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
std::vector< ArmISA::VecRegContainer > vecRegs
const std::string & name()
iris::ResourceId extractResourceId(const ResourceMap &resources, const std::string &name)
virtual ArmISA::VecPredRegContainer & getWritableVecPredRegFlat(RegIndex idx)
ResourceIds vecPredRegIds
void * getWritableReg(const RegId ®) override
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 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
virtual void setCCReg(RegIndex reg_idx, RegVal val)
virtual ArmISA::VecPredRegContainer readVecPredRegFlat(RegIndex idx) const
void setContextId(int id) override
std::map< std::string, iris::ResourceInfo > ResourceMap
bool translateAddress(Addr &paddr, iris::MemorySpaceId p_space, Addr vaddr, iris::MemorySpaceId v_space)
virtual ArmISA::VecPredRegContainer & getWritableVecPredReg(const RegId ®)
virtual const std::vector< iris::MemorySpaceId > & getBpSpaceIds() const =0
virtual RegVal readVecElem(const RegId ®) const
virtual RegVal readCCReg(RegIndex reg_idx) const
BaseISA * getIsaPtr() const override
int ContextID
Globally unique thread context ID.
void setMiscReg(RegIndex misc_reg, const RegVal val) override
virtual void setIntReg(RegIndex reg_idx, RegVal val)
iris::EventStreamId semihostingEventStreamId
Tick readLastActivate() override
uint32_t socketId() const override
iris::MemorySpaceId getMemorySpaceId(const Iris::CanonicalMsn &msn) const
void setStatus(Status new_status) override
bool remove(PCEvent *e) override
Status status() const override
virtual void setVecElem(const RegId ®, RegVal val)
iris::EventStreamId initEventStreamId
std::vector< iris::ResourceId > ResourceIds
void regStats(const std::string &name) override
RegVal getRegFlat(const RegId ®) const override
Flat register interfaces.
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
bool schedule(PCEvent *e) override
iris::IrisInstance client
void setProcessPtr(Process *p) override
virtual ArmISA::VecRegContainer & getWritableVecRegFlat(RegIndex idx)
BaseMMU * getMMUPtr() override
virtual RegVal readVecElemFlat(RegIndex idx) const
Process * getProcessPtr() override
CheckerCPU * getCheckerCpuPtr() override
virtual void setVecReg(const RegId ®, const ArmISA::VecRegContainer &val)
Register ID: describe an architectural register with its class and index.
void writeMem(iris::MemorySpaceId space, Addr addr, const void *p, size_t size)
#define panic(...)
This implements a cprintf based panic() function.
virtual void setVecPredReg(const RegId ®, const ArmISA::VecPredRegContainer &val)
Generated on Thu Jul 28 2022 13:32:22 for gem5 by doxygen 1.8.17