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__
37 #include "iris/IrisInstance.h"
38 #include "iris/detail/IrisErrorCode.h"
39 #include "iris/detail/IrisObjects.h"
50 typedef std::map<std::string, iris::ResourceInfo>
ResourceMap;
64 iris::InstanceId
_instId = iris::IRIS_UINT64_MAX;
88 iris::ResourceId
pcRscId = iris::IRIS_UINT64_MAX;
140 uint64_t esId,
const iris::IrisValueMap &fields, uint64_t time,
141 uint64_t sInstId,
bool syncEc, std::string &error_message_out);
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);
162 iris::IrisCppAdapter &
call()
const {
return client.irisCall(); }
166 Addr vaddr, iris::MemorySpaceId v_space);
171 iris::IrisConnectionInterface *iris_if,
172 const std::string &iris_path);
204 panic(
"%s not implemented.", __FUNCTION__);
222 panic(
"%s not implemented.", __FUNCTION__);
227 panic(
"%s not implemented.", __FUNCTION__);
239 panic(
"%s not implemented.", __FUNCTION__);
249 panic(
"%s not implemented.", __FUNCTION__);
253 panic(
"%s not implemented.", __FUNCTION__);
259 panic(
"%s not implemented.", __FUNCTION__);
265 warn(
"Ignoring clearArchRegs()");
276 panic(
"%s not implemented.", __FUNCTION__);
283 panic(
"%s not implemented.", __FUNCTION__);
292 panic(
"%s not implemented.", __FUNCTION__);
299 panic(
"%s not implemented.", __FUNCTION__);
306 panic(
"%s not implemented.", __FUNCTION__);
313 panic(
"%s not implemented.", __FUNCTION__);
320 panic(
"%s not implemented.", __FUNCTION__);
326 panic(
"%s not implemented.", __FUNCTION__);
332 panic(
"%s not implemented.", __FUNCTION__);
338 panic(
"%s not implemented.", __FUNCTION__);
345 panic(
"%s not implemented.", __FUNCTION__);
352 panic(
"%s not implemented.", __FUNCTION__);
366 panic(
"%s not implemented.", __FUNCTION__);
372 panic(
"%s not implemented.", __FUNCTION__);
378 panic(
"%s not implemented.", __FUNCTION__);
385 panic(
"%s not implemented.", __FUNCTION__);
419 panic(
"%s not implemented.", __FUNCTION__);
427 panic(
"%s not implemented.", __FUNCTION__);
433 panic(
"%s not implemented.", __FUNCTION__);
440 panic(
"%s not implemented.", __FUNCTION__);
461 panic(
"%s not implemented.", __FUNCTION__);
466 panic(
"%s not implemented.", __FUNCTION__);
473 panic(
"%s not implemented.", __FUNCTION__);
478 panic(
"%s not implemented.", __FUNCTION__);
484 panic(
"%s not implemented.", __FUNCTION__);
490 panic(
"%s not implemented.", __FUNCTION__);
497 panic(
"%s not implemented.", __FUNCTION__);
502 panic(
"%s not implemented.", __FUNCTION__);
513 panic(
"%s not implemented.", __FUNCTION__);
519 panic(
"%s not implemented.", __FUNCTION__);
525 panic(
"%s not implemented.", __FUNCTION__);
531 #endif // __ARCH_ARM_FASTMODEL_IRIS_THREAD_CONTEXT_HH__
void setMiscRegNoEffect(RegIndex misc_reg, const RegVal val) override
void initMemProxies(::ThreadContext *tc) override
void setIntReg(RegIndex reg_idx, RegVal val) override
PortProxy & getVirtProxy() override
iris::IrisCppAdapter & noThrow() const
void setVecReg(const RegId ®, const VecRegContainer &val) override
void uninstallBp(BpInfoIt it)
BaseHTMCheckpointPtr & getHtmCheckpointPtr() override
const VecRegContainer & readVecRegFlat(RegIndex idx) const override
Generic predicate register container.
Event * enableAfterPseudoEvent
void setProcessPtr(Process *p) override
ArmISA::PCState pcState() const override
std::unique_ptr< PortProxy > virtProxy
iris::EventStreamId timeEventStreamId
RegVal readFloatRegFlat(RegIndex idx) const override
void setVecElemFlat(RegIndex idx, const ElemIndex &elemIdx, const VecElem &val) override
void setStCondFailures(unsigned sc_failures) override
int ContextID
Globally unique thread context ID.
void setContextId(int id) override
iris::EventStreamId breakpointEventStreamId
void setVecElem(const RegId ®, const VecElem &val) override
std::vector< ArmISA::VecPredRegContainer > vecPredRegs
std::unique_ptr< PortProxy > physProxy
const VecPredRegContainer & readVecPredRegFlat(RegIndex idx) const override
uint64_t Tick
Tick count type.
std::vector< iris::ResourceId > ResourceIds
void setHtmCheckpointPtr(BaseHTMCheckpointPtr cpt) override
VecPredRegContainer & getWritableVecPredReg(const RegId ®) override
RegVal readCCReg(RegIndex reg_idx) const override
void setIntRegFlat(RegIndex idx, uint64_t val) override
PortProxy & getPhysProxy() override
void takeOverFrom(::ThreadContext *old_context) override
iris::EventStreamId initEventStreamId
ConstVecLane16 readVec16BitLaneReg(const RegId ®) const override
Reads source vector 16bit operand.
iris::IrisErrorCode instanceRegistryChanged(uint64_t esId, const iris::IrisValueMap &fields, uint64_t time, uint64_t sInstId, bool syncEc, std::string &error_message_out)
void installBp(BpInfoIt it)
VecPredRegContainer & getWritableVecPredRegFlat(RegIndex idx) override
iris::EventStreamId regEventStreamId
uint32_t socketId() const
Reads this CPU's Socket ID.
Counter readFuncExeInst() const override
bool schedule(PCEvent *e) override
virtual const std::vector< iris::MemorySpaceId > & getBpSpaceIds() const =0
std::vector< iris::MemorySupportedAddressTranslationResult > translations
void setVecLane(const RegId ®, const LaneData< LaneSize::EightByte > &val) override
BpInfoIt getOrAllocBp(Addr pc)
Status status() const override
Register ID: describe an architectural register with its class and index.
Addr nextInstAddr() const override
ArmISA::Decoder * getDecoderPtr() override
void setThreadId(int id) override
bool translateAddress(Addr &paddr, iris::MemorySpaceId p_space, Addr vaddr, iris::MemorySpaceId v_space)
std::vector< iris::MemorySpaceInfo > memorySpaces
void halt() override
Set the status to Halted.
const VecElem & readVecElem(const RegId ®) const override
int64_t Counter
Statistics counter type.
void setVecLane(const RegId ®, const LaneData< LaneSize::Byte > &val) override
Write a lane of the destination vector register.
iris::IrisErrorCode phaseInitLeave(uint64_t esId, const iris::IrisValueMap &fields, uint64_t time, uint64_t sInstId, bool syncEc, std::string &error_message_out)
iris::IrisErrorCode semihostingEvent(uint64_t esId, const iris::IrisValueMap &fields, uint64_t time, uint64_t sInstId, bool syncEc, std::string &error_message_out)
ConstVecLane32 readVec32BitLaneReg(const RegId ®) const override
Reads source vector 32bit operand.
RegVal readFloatReg(RegIndex reg_idx) const override
Addr instAddr() const override
iris::IrisErrorCode breakpointHit(uint64_t esId, const iris::IrisValueMap &fields, uint64_t time, uint64_t sInstId, bool syncEc, std::string &error_message_out)
void setFloatReg(RegIndex reg_idx, RegVal val) override
RegId flattenRegId(const RegId ®Id) const override
Vector Lane abstraction Another view of a container.
RegVal readIntReg(RegIndex reg_idx) const override
BaseISA * getIsaPtr() override
void setFloatRegFlat(RegIndex idx, RegVal val) override
ThreadContext(::BaseCPU *cpu, int id, System *system, ::BaseMMU *mmu, ::BaseISA *isa, iris::IrisConnectionInterface *iris_if, const std::string &iris_path)
std::shared_ptr< EventList > events
@ Halted
Permanently shut down.
std::unique_ptr< BpInfo > BpInfoPtr
void setVecRegFlat(RegIndex idx, const VecRegContainer &val) override
void setVecLane(const RegId ®, const LaneData< LaneSize::TwoByte > &val) override
const VecPredRegContainer & readVecPredReg(const RegId ®) const override
RegVal readCCRegFlat(RegIndex idx) const override
int contextId() const override
std::map< int, std::string > IdxNameMap
VecRegContainer & getWritableVecRegFlat(RegIndex idx) override
std::vector< ArmISA::VecRegContainer > vecRegs
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
iris::IrisCppAdapter & call() const
void scheduleInstCountEvent(Event *event, Tick count) override
std::unique_ptr< BaseHTMCheckpoint > BaseHTMCheckpointPtr
MicroPC microPC() const override
unsigned readStCondFailures() const override
const std::string & name()
RegVal readMiscRegNoEffect(RegIndex misc_reg) const override
iris::ResourceId icountRscId
void regStats(const std::string &name) override
BaseMMU * getMMUPtr() override
bool remove(PCEvent *e) override
ConstVecLane8 readVec8BitLaneReg(const RegId ®) const override
Vector Register Lane Interfaces.
uint32_t socketId() const override
void pcStateNoRecord(const ArmISA::PCState &val) override
CheckerCPU * getCheckerCpuPtr() override
iris::EventStreamId semihostingEventStreamId
@ Suspended
Temporarily inactive.
void setVecLane(const RegId ®, const LaneData< LaneSize::FourByte > &val) override
iris::IrisInstance client
void setVecPredRegFlat(RegIndex idx, const VecPredRegContainer &val) override
This object is a proxy for a port or other object which implements the functional response protocol,...
void extractResourceMap(ResourceIds &ids, const ResourceMap &resources, const IdxNameMap &idx_names)
::BaseCPU * getCpuPtr() override
GenericISA::DelaySlotPCState< MachInst > PCState
Tick readLastSuspend() override
void clearArchRegs() override
const VecElem & readVecElemFlat(RegIndex idx, const ElemIndex &elemIdx) const override
uint16_t ElemIndex
Logical vector register elem index type.
BpInfoMap::iterator BpInfoIt
iris::ResourceId extractResourceId(const ResourceMap &resources, const std::string &name)
RegVal readMiscReg(RegIndex misc_reg) override
std::map< Addr, BpInfoPtr > BpInfoMap
void setStatus(Status new_status) override
ConstVecLane64 readVec64BitLaneReg(const RegId ®) const override
Reads source vector 64bit operand.
ResourceIds vecPredRegIds
void setMiscReg(RegIndex misc_reg, const RegVal val) override
void htmAbortTransaction(uint64_t htm_uid, HtmFailureFaultCause cause) override
ResourceIds flattenedIntIds
Process * getProcessPtr() override
void descheduleInstCountEvent(Event *event) override
System * getSystemPtr() override
Queue of events sorted in time order.
Tick readLastActivate() override
int threadId() const override
Tick getCurrentInstCount() override
std::map< std::string, iris::ResourceInfo > ResourceMap
int cpuId() const override
void setCCRegFlat(RegIndex idx, RegVal val) override
EventQueue comInstEventQueue
void activate() override
Set the status to Active.
iris::IrisErrorCode simulationTimeEvent(uint64_t esId, const iris::IrisValueMap &fields, uint64_t time, uint64_t sInstId, bool syncEc, std::string &error_message_out)
VecRegContainer & getWritableVecReg(const RegId ®) override
LaneSize is an abstraction of a LS byte value for the execution and thread contexts to handle values ...
int cpuId() const
Reads this CPU's ID.
RegVal readIntRegFlat(RegIndex idx) const override
Flat register interfaces.
void setCCReg(RegIndex reg_idx, RegVal val) override
Vector Register Abstraction This generic class is the model in a particularization of MVC,...
virtual void initFromIrisInstance(const ResourceMap &resources)
#define panic(...)
This implements a cprintf based panic() function.
void suspend() override
Set the status to Suspended.
void copyArchRegs(::ThreadContext *tc) override
const VecRegContainer & readVecReg(const RegId ®) const override
void setVecPredReg(const RegId ®, const VecPredRegContainer &val) override
Generated on Tue Jun 22 2021 15:28:19 for gem5 by doxygen 1.8.17