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;
65 iris::InstanceId
_instId = iris::IRIS_UINT64_MAX;
89 iris::ResourceId
pcRscId = iris::IRIS_UINT64_MAX;
141 uint64_t esId,
const iris::IrisValueMap &fields, uint64_t time,
142 uint64_t sInstId,
bool syncEc, std::string &error_message_out);
144 uint64_t esId,
const iris::IrisValueMap &fields, uint64_t time,
145 uint64_t sInstId,
bool syncEc, std::string &error_message_out);
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);
163 iris::IrisCppAdapter &
call()
const {
return client.irisCall(); }
167 Addr vaddr, iris::MemorySpaceId v_space);
172 iris::IrisConnectionInterface *iris_if,
173 const std::string &iris_path);
209 panic(
"%s not implemented.", __FUNCTION__);
227 panic(
"%s not implemented.", __FUNCTION__);
232 panic(
"%s not implemented.", __FUNCTION__);
244 panic(
"%s not implemented.", __FUNCTION__);
254 panic(
"%s not implemented.", __FUNCTION__);
258 panic(
"%s not implemented.", __FUNCTION__);
264 panic(
"%s not implemented.", __FUNCTION__);
270 warn(
"Ignoring clearArchRegs()");
281 panic(
"%s not implemented.", __FUNCTION__);
288 panic(
"%s not implemented.", __FUNCTION__);
297 panic(
"%s not implemented.", __FUNCTION__);
304 panic(
"%s not implemented.", __FUNCTION__);
311 panic(
"%s not implemented.", __FUNCTION__);
318 panic(
"%s not implemented.", __FUNCTION__);
325 panic(
"%s not implemented.", __FUNCTION__);
331 panic(
"%s not implemented.", __FUNCTION__);
337 panic(
"%s not implemented.", __FUNCTION__);
343 panic(
"%s not implemented.", __FUNCTION__);
350 panic(
"%s not implemented.", __FUNCTION__);
357 panic(
"%s not implemented.", __FUNCTION__);
371 panic(
"%s not implemented.", __FUNCTION__);
377 panic(
"%s not implemented.", __FUNCTION__);
383 panic(
"%s not implemented.", __FUNCTION__);
390 panic(
"%s not implemented.", __FUNCTION__);
424 panic(
"%s not implemented.", __FUNCTION__);
432 panic(
"%s not implemented.", __FUNCTION__);
438 panic(
"%s not implemented.", __FUNCTION__);
445 panic(
"%s not implemented.", __FUNCTION__);
466 panic(
"%s not implemented.", __FUNCTION__);
471 panic(
"%s not implemented.", __FUNCTION__);
478 panic(
"%s not implemented.", __FUNCTION__);
483 panic(
"%s not implemented.", __FUNCTION__);
489 panic(
"%s not implemented.", __FUNCTION__);
495 panic(
"%s not implemented.", __FUNCTION__);
502 panic(
"%s not implemented.", __FUNCTION__);
507 panic(
"%s not implemented.", __FUNCTION__);
518 panic(
"%s not implemented.", __FUNCTION__);
524 panic(
"%s not implemented.", __FUNCTION__);
530 panic(
"%s not implemented.", __FUNCTION__);
536 #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
BaseTLB * getDTBPtr() 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
BaseTLB * getITBPtr() 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
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
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)
ThreadContext(::BaseCPU *cpu, int id, System *system, ::BaseTLB *dtb, ::BaseTLB *itb, ::BaseISA *isa, iris::IrisConnectionInterface *iris_if, const std::string &iris_path)
::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 Wed Sep 30 2020 14:01:58 for gem5 by doxygen 1.8.17