gem5  v20.0.0.2
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages
Classes | Public Types | Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
Iris::ThreadContext Class Referenceabstract

#include <thread_context.hh>

Inheritance diagram for Iris::ThreadContext:
ThreadContext PCEventScope FastModel::CortexA76TC

Classes

struct  BpInfo
 

Public Types

typedef std::map< std::string, iris::ResourceInfo > ResourceMap
 
typedef std::vector< iris::ResourceId > ResourceIds
 
typedef std::map< int, std::string > IdxNameMap
 
- Public Types inherited from ThreadContext
enum  Status { Active, Suspended, Halting, Halted }
 

Public Member Functions

 ThreadContext (::BaseCPU *cpu, int id, System *system, ::BaseTLB *dtb, ::BaseTLB *itb, iris::IrisConnectionInterface *iris_if, const std::string &iris_path)
 
virtual ~ThreadContext ()
 
virtual bool translateAddress (Addr &paddr, Addr vaddr)=0
 
bool schedule (PCEvent *e) override
 
bool remove (PCEvent *e) override
 
void scheduleInstCountEvent (Event *event, Tick count) override
 
void descheduleInstCountEvent (Event *event) override
 
Tick getCurrentInstCount () override
 
::BaseCPUgetCpuPtr () override
 
int cpuId () const override
 
uint32_t socketId () const override
 
int threadId () const override
 
void setThreadId (int id) override
 
int contextId () const override
 
void setContextId (int id) override
 
BaseTLBgetITBPtr () override
 
BaseTLBgetDTBPtr () override
 
CheckerCPUgetCheckerCpuPtr () override
 
ArmISA::DecodergetDecoderPtr () override
 
SystemgetSystemPtr () override
 
BaseISAgetIsaPtr () override
 
Kernel::StatisticsgetKernelStats () override
 
PortProxygetPhysProxy () override
 
PortProxygetVirtProxy () override
 
void initMemProxies (::ThreadContext *tc) override
 
ProcessgetProcessPtr () override
 
void setProcessPtr (Process *p) override
 
Status status () const override
 
void setStatus (Status new_status) override
 
void activate () override
 Set the status to Active. More...
 
void suspend () override
 Set the status to Suspended. More...
 
void halt () override
 Set the status to Halted. More...
 
void dumpFuncProfile () override
 
void takeOverFrom (::ThreadContext *old_context) override
 
void regStats (const std::string &name) override
 
EndQuiesceEventgetQuiesceEvent () override
 
Tick readLastActivate () override
 
Tick readLastSuspend () override
 
void profileClear () override
 
void profileSample () override
 
void copyArchRegs (::ThreadContext *tc) override
 
void clearArchRegs () override
 
RegVal readIntReg (RegIndex reg_idx) const override
 
RegVal readFloatReg (RegIndex reg_idx) const override
 
const VecRegContainerreadVecReg (const RegId &reg) const override
 
VecRegContainergetWritableVecReg (const RegId &reg) override
 
const VecElemreadVecElem (const RegId &reg) const override
 
const VecPredRegContainerreadVecPredReg (const RegId &reg) const override
 
VecPredRegContainergetWritableVecPredReg (const RegId &reg) override
 
RegVal readCCReg (RegIndex reg_idx) const override
 
void setIntReg (RegIndex reg_idx, RegVal val) override
 
void setFloatReg (RegIndex reg_idx, RegVal val) override
 
void setVecReg (const RegId &reg, const VecRegContainer &val) override
 
void setVecElem (const RegId &reg, const VecElem &val) override
 
void setVecPredReg (const RegId &reg, const VecPredRegContainer &val) override
 
void setCCReg (RegIndex reg_idx, RegVal val) override
 
void pcStateNoRecord (const ArmISA::PCState &val) override
 
MicroPC microPC () const override
 
ArmISA::PCState pcState () const override
 
void pcState (const ArmISA::PCState &val) override
 
Addr instAddr () const override
 
Addr nextInstAddr () const override
 
RegVal readMiscRegNoEffect (RegIndex misc_reg) const override
 
RegVal readMiscReg (RegIndex misc_reg) override
 
void setMiscRegNoEffect (RegIndex misc_reg, const RegVal val) override
 
void setMiscReg (RegIndex misc_reg, const RegVal val) override
 
RegId flattenRegId (const RegId &regId) const override
 
unsigned readStCondFailures () const override
 
void setStCondFailures (unsigned sc_failures) override
 
Counter readFuncExeInst () const override
 
void syscall (Fault *fault) override
 
ConstVecLane8 readVec8BitLaneReg (const RegId &reg) const override
 Vector Register Lane Interfaces. More...
 
ConstVecLane16 readVec16BitLaneReg (const RegId &reg) const override
 Reads source vector 16bit operand. More...
 
ConstVecLane32 readVec32BitLaneReg (const RegId &reg) const override
 Reads source vector 32bit operand. More...
 
ConstVecLane64 readVec64BitLaneReg (const RegId &reg) const override
 Reads source vector 64bit operand. More...
 
void setVecLane (const RegId &reg, const LaneData< LaneSize::Byte > &val) override
 Write a lane of the destination vector register. More...
 
void setVecLane (const RegId &reg, const LaneData< LaneSize::TwoByte > &val) override
 
void setVecLane (const RegId &reg, const LaneData< LaneSize::FourByte > &val) override
 
void setVecLane (const RegId &reg, const LaneData< LaneSize::EightByte > &val) override
 
RegVal readIntRegFlat (RegIndex idx) const override
 Flat register interfaces. More...
 
void setIntRegFlat (RegIndex idx, uint64_t val) override
 
RegVal readFloatRegFlat (RegIndex idx) const override
 
void setFloatRegFlat (RegIndex idx, RegVal val) override
 
const VecRegContainerreadVecRegFlat (RegIndex idx) const override
 
VecRegContainergetWritableVecRegFlat (RegIndex idx) override
 
void setVecRegFlat (RegIndex idx, const VecRegContainer &val) override
 
const VecElemreadVecElemFlat (RegIndex idx, const ElemIndex &elemIdx) const override
 
void setVecElemFlat (RegIndex idx, const ElemIndex &elemIdx, const VecElem &val) override
 
const VecPredRegContainerreadVecPredRegFlat (RegIndex idx) const override
 
VecPredRegContainergetWritableVecPredRegFlat (RegIndex idx) override
 
void setVecPredRegFlat (RegIndex idx, const VecPredRegContainer &val) override
 
RegVal readCCRegFlat (RegIndex idx) const override
 
void setCCRegFlat (RegIndex idx, RegVal val) override
 
- Public Member Functions inherited from ThreadContext
virtual void initMemProxies (ThreadContext *tc)=0
 Initialise the physical and virtual port proxies and tie them to the data port of the CPU. More...
 
void quiesce ()
 Quiesce thread context. More...
 
void quiesceTick (Tick resume)
 Quiesce, suspend, and schedule activate at resume. More...
 
virtual void takeOverFrom (ThreadContext *old_context)=0
 
virtual void copyArchRegs (ThreadContext *tc)=0
 
virtual void pcState (const TheISA::PCState &val)=0
 
void setNPC (Addr val)
 
virtual void pcStateNoRecord (const TheISA::PCState &val)=0
 
virtual int exit ()
 

Protected Types

using BpId = uint64_t
 
using BpInfoPtr = std::unique_ptr< BpInfo >
 
using BpInfoMap = std::map< Addr, BpInfoPtr >
 
using BpInfoIt = BpInfoMap::iterator
 
- Protected Types inherited from ThreadContext
typedef TheISA::MachInst MachInst
 
using VecRegContainer = TheISA::VecRegContainer
 
using VecElem = TheISA::VecElem
 
using VecPredRegContainer = TheISA::VecPredRegContainer
 

Protected Member Functions

virtual void initFromIrisInstance (const ResourceMap &resources)
 
iris::ResourceId extractResourceId (const ResourceMap &resources, const std::string &name)
 
void extractResourceMap (ResourceIds &ids, const ResourceMap &resources, const IdxNameMap &idx_names)
 
void maintainStepping ()
 
BpInfoIt getOrAllocBp (Addr pc)
 
void installBp (BpInfoIt it)
 
void uninstallBp (BpInfoIt it)
 
void delBp (BpInfoIt it)
 
virtual const std::vector< iris::MemorySpaceId > & getBpSpaceIds () const =0
 
iris::IrisErrorCode instanceRegistryChanged (uint64_t esId, const iris::IrisValueMap &fields, uint64_t time, uint64_t sInstId, bool syncEc, std::string &error_message_out)
 
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 simulationTimeEvent (uint64_t esId, const iris::IrisValueMap &fields, uint64_t time, uint64_t sInstId, bool syncEc, std::string &error_message_out)
 
iris::IrisErrorCode breakpointHit (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)
 
iris::IrisCppAdapter & call () const
 
iris::IrisCppAdapter & noThrow () const
 
bool translateAddress (Addr &paddr, iris::MemorySpaceId p_space, Addr vaddr, iris::MemorySpaceId v_space)
 

Protected Attributes

::BaseCPU_cpu
 
int _threadId
 
ContextID _contextId
 
System_system
 
::BaseTLB_dtb
 
::BaseTLB_itb
 
std::string _irisPath
 
iris::InstanceId _instId = iris::IRIS_UINT64_MAX
 
std::vector< ArmISA::VecRegContainervecRegs
 
std::vector< ArmISA::VecPredRegContainervecPredRegs
 
Status _status = Active
 
EventenableAfterPseudoEvent
 
ResourceIds miscRegIds
 
ResourceIds intReg32Ids
 
ResourceIds intReg64Ids
 
ResourceIds flattenedIntIds
 
ResourceIds ccRegIds
 
iris::ResourceId pcRscId = iris::IRIS_UINT64_MAX
 
iris::ResourceId icountRscId
 
ResourceIds vecRegIds
 
ResourceIds vecPredRegIds
 
std::vector< iris::MemorySpaceInfo > memorySpaces
 
std::vector< iris::MemorySupportedAddressTranslationResult > translations
 
std::unique_ptr< PortProxyvirtProxy = nullptr
 
std::unique_ptr< PortProxyphysProxy = nullptr
 
EventQueue comInstEventQueue
 
BpInfoMap bps
 
iris::EventStreamId regEventStreamId
 
iris::EventStreamId initEventStreamId
 
iris::EventStreamId timeEventStreamId
 
iris::EventStreamId breakpointEventStreamId
 
iris::EventStreamId semihostingEventStreamId
 
iris::IrisInstance client
 

Additional Inherited Members

- Static Public Member Functions inherited from ThreadContext
static void compare (ThreadContext *one, ThreadContext *two)
 function to compare two thread contexts (for debugging) More...
 
- Public Attributes inherited from ThreadContext
int intResult = DefaultIntResult
 
double floatResult = DefaultFloatResult
 
int intOffset = 0
 
- Static Public Attributes inherited from ThreadContext
static const int ints []
 
static const double floats []
 
static const int DefaultIntResult = 0
 
static const double DefaultFloatResult = 0.0
 

Detailed Description

Definition at line 47 of file thread_context.hh.

Member Typedef Documentation

◆ BpId

using Iris::ThreadContext::BpId = uint64_t
protected

Definition at line 109 of file thread_context.hh.

◆ BpInfoIt

using Iris::ThreadContext::BpInfoIt = BpInfoMap::iterator
protected

Definition at line 126 of file thread_context.hh.

◆ BpInfoMap

using Iris::ThreadContext::BpInfoMap = std::map<Addr, BpInfoPtr>
protected

Definition at line 125 of file thread_context.hh.

◆ BpInfoPtr

using Iris::ThreadContext::BpInfoPtr = std::unique_ptr<BpInfo>
protected

Definition at line 124 of file thread_context.hh.

◆ IdxNameMap

typedef std::map<int, std::string> Iris::ThreadContext::IdxNameMap

Definition at line 53 of file thread_context.hh.

◆ ResourceIds

typedef std::vector<iris::ResourceId> Iris::ThreadContext::ResourceIds

Definition at line 52 of file thread_context.hh.

◆ ResourceMap

typedef std::map<std::string, iris::ResourceInfo> Iris::ThreadContext::ResourceMap

Definition at line 50 of file thread_context.hh.

Constructor & Destructor Documentation

◆ ThreadContext()

ThreadContext::ThreadContext ( ::BaseCPU cpu,
int  id,
System system,
::BaseTLB dtb,
::BaseTLB itb,
iris::IrisConnectionInterface *  iris_if,
const std::string &  iris_path 
)

◆ ~ThreadContext()

ThreadContext::~ThreadContext ( )
virtual

Member Function Documentation

◆ activate()

void Iris::ThreadContext::activate ( )
inlineoverridevirtual

Set the status to Active.

Implements ThreadContext.

Definition at line 242 of file thread_context.hh.

References ThreadContext::Active, and setStatus().

◆ breakpointHit()

iris::IrisErrorCode ThreadContext::breakpointHit ( uint64_t  esId,
const iris::IrisValueMap &  fields,
uint64_t  time,
uint64_t  sInstId,
bool  syncEc,
std::string &  error_message_out 
)
protected

Definition at line 239 of file thread_context.cc.

References ArmISA::e, getOrAllocBp(), MipsISA::pc, and PCEvent::process().

◆ call()

iris::IrisCppAdapter& Iris::ThreadContext::call ( ) const
inlineprotected

◆ clearArchRegs()

void Iris::ThreadContext::clearArchRegs ( )
inlineoverridevirtual

Implements ThreadContext.

Definition at line 296 of file thread_context.hh.

References readIntReg(), and warn.

◆ contextId()

int Iris::ThreadContext::contextId ( ) const
inlineoverridevirtual

Implements ThreadContext.

Definition at line 191 of file thread_context.hh.

References _contextId.

◆ copyArchRegs()

void Iris::ThreadContext::copyArchRegs ( ::ThreadContext tc)
inlineoverride

Definition at line 290 of file thread_context.hh.

References panic.

◆ cpuId()

int Iris::ThreadContext::cpuId ( ) const
inlineoverridevirtual

Implements ThreadContext.

Definition at line 185 of file thread_context.hh.

References BaseCPU::cpuId().

◆ delBp()

void ThreadContext::delBp ( BpInfoIt  it)
protected

Definition at line 166 of file thread_context.cc.

References bps, panic_if, and uninstallBp().

Referenced by remove().

◆ descheduleInstCountEvent()

void ThreadContext::descheduleInstCountEvent ( Event event)
overridevirtual

Implements ThreadContext.

Definition at line 435 of file thread_context.cc.

References comInstEventQueue, EventQueue::deschedule(), and maintainStepping().

Referenced by noThrow().

◆ dumpFuncProfile()

void Iris::ThreadContext::dumpFuncProfile ( )
inlineoverridevirtual

Implements ThreadContext.

Definition at line 247 of file thread_context.hh.

References panic.

◆ extractResourceId()

iris::ResourceId ThreadContext::extractResourceId ( const ResourceMap resources,
const std::string &  name 
)
protected

◆ extractResourceMap()

void ThreadContext::extractResourceMap ( ResourceIds ids,
const ResourceMap resources,
const IdxNameMap idx_names 
)
protected

Definition at line 88 of file thread_context.cc.

References extractResourceId(), and name().

Referenced by FastModel::CortexA76TC::initFromIrisInstance().

◆ flattenRegId()

RegId Iris::ThreadContext::flattenRegId ( const RegId regId) const
inlineoverridevirtual

Implements ThreadContext.

Definition at line 450 of file thread_context.hh.

References panic.

◆ getBpSpaceIds()

virtual const std::vector<iris::MemorySpaceId>& Iris::ThreadContext::getBpSpaceIds ( ) const
protectedpure virtual

Implemented in FastModel::CortexA76TC.

Referenced by installBp().

◆ getCheckerCpuPtr()

CheckerCPU* Iris::ThreadContext::getCheckerCpuPtr ( )
inlineoverridevirtual

Implements ThreadContext.

Definition at line 204 of file thread_context.hh.

◆ getCpuPtr()

::BaseCPU* Iris::ThreadContext::getCpuPtr ( )
inlineoverridevirtual

Implements ThreadContext.

Definition at line 184 of file thread_context.hh.

References _cpu.

Referenced by semihostingEvent(), setStatus(), and ~ThreadContext().

◆ getCurrentInstCount()

Tick ThreadContext::getCurrentInstCount ( )
overridevirtual

Implements ThreadContext.

Definition at line 442 of file thread_context.cc.

References _instId, call(), X86ISA::count, and panic_if.

Referenced by maintainStepping(), noThrow(), and scheduleInstCountEvent().

◆ getDecoderPtr()

ArmISA::Decoder* Iris::ThreadContext::getDecoderPtr ( )
inlineoverridevirtual

Implements ThreadContext.

Definition at line 206 of file thread_context.hh.

References panic.

◆ getDTBPtr()

BaseTLB* Iris::ThreadContext::getDTBPtr ( )
inlineoverridevirtual

Implements ThreadContext.

Definition at line 200 of file thread_context.hh.

References _dtb.

◆ getIsaPtr()

BaseISA* Iris::ThreadContext::getIsaPtr ( )
inlineoverridevirtual

Implements ThreadContext.

Definition at line 214 of file thread_context.hh.

References panic.

◆ getITBPtr()

BaseTLB* Iris::ThreadContext::getITBPtr ( )
inlineoverridevirtual

Implements ThreadContext.

Definition at line 195 of file thread_context.hh.

References _itb.

◆ getKernelStats()

Kernel::Statistics* Iris::ThreadContext::getKernelStats ( )
inlineoverridevirtual

Implements ThreadContext.

Definition at line 220 of file thread_context.hh.

References panic.

◆ getOrAllocBp()

ThreadContext::BpInfoIt ThreadContext::getOrAllocBp ( Addr  pc)
protected

Definition at line 133 of file thread_context.cc.

References bps, and panic_if.

Referenced by breakpointHit(), remove(), and schedule().

◆ getPhysProxy()

PortProxy& Iris::ThreadContext::getPhysProxy ( )
inlineoverridevirtual

Implements ThreadContext.

Definition at line 225 of file thread_context.hh.

References physProxy.

◆ getProcessPtr()

Process* Iris::ThreadContext::getProcessPtr ( )
inlineoverridevirtual

Implements ThreadContext.

Definition at line 230 of file thread_context.hh.

References panic.

◆ getQuiesceEvent()

EndQuiesceEvent* Iris::ThreadContext::getQuiesceEvent ( )
inlineoverridevirtual

Implements ThreadContext.

Definition at line 261 of file thread_context.hh.

References panic.

◆ getSystemPtr()

System* Iris::ThreadContext::getSystemPtr ( )
inlineoverridevirtual

Implements ThreadContext.

Definition at line 211 of file thread_context.hh.

References BaseCPU::system.

◆ getVirtProxy()

PortProxy& Iris::ThreadContext::getVirtProxy ( )
inlineoverridevirtual

Implements ThreadContext.

Definition at line 226 of file thread_context.hh.

References initMemProxies(), and virtProxy.

◆ getWritableVecPredReg()

VecPredRegContainer& Iris::ThreadContext::getWritableVecPredReg ( const RegId reg)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 383 of file thread_context.hh.

References panic.

◆ getWritableVecPredRegFlat()

VecPredRegContainer& Iris::ThreadContext::getWritableVecPredRegFlat ( RegIndex  idx)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 534 of file thread_context.hh.

References panic.

◆ getWritableVecReg()

VecRegContainer& Iris::ThreadContext::getWritableVecReg ( const RegId reg)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 314 of file thread_context.hh.

References panic.

◆ getWritableVecRegFlat()

VecRegContainer& Iris::ThreadContext::getWritableVecRegFlat ( RegIndex  idx)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 510 of file thread_context.hh.

References panic.

◆ halt()

void Iris::ThreadContext::halt ( )
inlineoverridevirtual

Set the status to Halted.

Implements ThreadContext.

Definition at line 244 of file thread_context.hh.

References ThreadContext::Halted, and setStatus().

◆ initFromIrisInstance()

void ThreadContext::initFromIrisInstance ( const ResourceMap resources)
protectedvirtual

◆ initMemProxies()

void ThreadContext::initMemProxies ( ::ThreadContext tc)
override

◆ instAddr()

Addr ThreadContext::instAddr ( ) const
overridevirtual

Implements ThreadContext.

Definition at line 525 of file thread_context.cc.

References pcState().

Referenced by microPC().

◆ installBp()

void ThreadContext::installBp ( BpInfoIt  it)
protected

Definition at line 146 of file thread_context.cc.

References _instId, call(), getBpSpaceIds(), ArmISA::id, and MipsISA::pc.

Referenced by initFromIrisInstance(), and schedule().

◆ instanceRegistryChanged()

iris::IrisErrorCode ThreadContext::instanceRegistryChanged ( uint64_t  esId,
const iris::IrisValueMap &  fields,
uint64_t  time,
uint64_t  sInstId,
bool  syncEc,
std::string &  error_message_out 
)
protected

Definition at line 178 of file thread_context.cc.

References _instId, _irisPath, MipsISA::event, ArmISA::id, name(), and panic.

◆ maintainStepping()

void ThreadContext::maintainStepping ( )
protected

◆ microPC()

MicroPC Iris::ThreadContext::microPC ( ) const
inlineoverridevirtual

Implements ThreadContext.

Definition at line 428 of file thread_context.hh.

References instAddr(), nextInstAddr(), pcState(), and readMiscRegNoEffect().

◆ nextInstAddr()

Addr ThreadContext::nextInstAddr ( ) const
overridevirtual

Implements ThreadContext.

Definition at line 531 of file thread_context.cc.

References pcState().

Referenced by microPC().

◆ noThrow()

iris::IrisCppAdapter& Iris::ThreadContext::noThrow ( ) const
inlineprotected

◆ pcState() [1/2]

ArmISA::PCState ThreadContext::pcState ( ) const
overridevirtual

◆ pcState() [2/2]

void ThreadContext::pcState ( const ArmISA::PCState &  val)
override

◆ pcStateNoRecord()

void Iris::ThreadContext::pcStateNoRecord ( const ArmISA::PCState &  val)
inlineoverride

Definition at line 427 of file thread_context.hh.

References pcState().

◆ phaseInitLeave()

iris::IrisErrorCode ThreadContext::phaseInitLeave ( uint64_t  esId,
const iris::IrisValueMap &  fields,
uint64_t  time,
uint64_t  sInstId,
bool  syncEc,
std::string &  error_message_out 
)
protected

Definition at line 200 of file thread_context.cc.

References _instId, call(), and initFromIrisInstance().

◆ profileClear()

void Iris::ThreadContext::profileClear ( )
inlineoverridevirtual

Implements ThreadContext.

Definition at line 279 of file thread_context.hh.

References panic.

◆ profileSample()

void Iris::ThreadContext::profileSample ( )
inlineoverridevirtual

Implements ThreadContext.

Definition at line 284 of file thread_context.hh.

References panic.

◆ readCCReg()

RegVal Iris::ThreadContext::readCCReg ( RegIndex  reg_idx) const
inlineoverridevirtual

Implements ThreadContext.

Definition at line 389 of file thread_context.hh.

References readCCRegFlat(), setIntReg(), and X86ISA::val.

◆ readCCRegFlat()

RegVal ThreadContext::readCCRegFlat ( RegIndex  idx) const
overridevirtual

Implements ThreadContext.

Definition at line 606 of file thread_context.cc.

References _instId, call(), and ccRegIds.

Referenced by readCCReg(), FastModel::CortexA76TC::readCCRegFlat(), and setVecPredRegFlat().

◆ readFloatReg()

RegVal Iris::ThreadContext::readFloatReg ( RegIndex  reg_idx) const
inlineoverridevirtual

Implements ThreadContext.

Definition at line 307 of file thread_context.hh.

References panic, readVecReg(), and X86ISA::reg.

◆ readFloatRegFlat()

RegVal Iris::ThreadContext::readFloatRegFlat ( RegIndex  idx) const
inlineoverridevirtual

Implements ThreadContext.

Definition at line 498 of file thread_context.hh.

References panic.

◆ readFuncExeInst()

Counter Iris::ThreadContext::readFuncExeInst ( ) const
inlineoverridevirtual

Implements ThreadContext.

Definition at line 471 of file thread_context.hh.

References panic.

◆ readIntReg()

RegVal ThreadContext::readIntReg ( RegIndex  reg_idx) const
overridevirtual

◆ readIntRegFlat()

RegVal ThreadContext::readIntRegFlat ( RegIndex  idx) const
overridevirtual

Flat register interfaces.

Some architectures have different registers visible in different modes. Such architectures "flatten" a register (see flattenRegId()) to map it into the gem5 register file. This interface provides a flat interface to the underlying register file, which allows for example serialization code to access all registers.

Implements ThreadContext.

Definition at line 581 of file thread_context.cc.

References _instId, call(), and flattenedIntIds.

Referenced by syscall().

◆ readLastActivate()

Tick Iris::ThreadContext::readLastActivate ( )
inlineoverridevirtual

Implements ThreadContext.

Definition at line 269 of file thread_context.hh.

References panic.

◆ readLastSuspend()

Tick Iris::ThreadContext::readLastSuspend ( )
inlineoverridevirtual

Implements ThreadContext.

Definition at line 273 of file thread_context.hh.

References panic.

◆ readMiscReg()

RegVal Iris::ThreadContext::readMiscReg ( RegIndex  misc_reg)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 437 of file thread_context.hh.

References readMiscRegNoEffect(), and setMiscRegNoEffect().

◆ readMiscRegNoEffect()

RegVal ThreadContext::readMiscRegNoEffect ( RegIndex  misc_reg) const
overridevirtual

◆ readStCondFailures()

unsigned Iris::ThreadContext::readStCondFailures ( ) const
inlineoverridevirtual

Implements ThreadContext.

Definition at line 458 of file thread_context.hh.

References panic.

◆ readVec16BitLaneReg()

ConstVecLane16 Iris::ThreadContext::readVec16BitLaneReg ( const RegId reg) const
inlineoverridevirtual

Reads source vector 16bit operand.

Implements ThreadContext.

Definition at line 330 of file thread_context.hh.

References panic.

◆ readVec32BitLaneReg()

ConstVecLane32 Iris::ThreadContext::readVec32BitLaneReg ( const RegId reg) const
inlineoverridevirtual

Reads source vector 32bit operand.

Implements ThreadContext.

Definition at line 337 of file thread_context.hh.

References panic.

◆ readVec64BitLaneReg()

ConstVecLane64 Iris::ThreadContext::readVec64BitLaneReg ( const RegId reg) const
inlineoverridevirtual

Reads source vector 64bit operand.

Implements ThreadContext.

Definition at line 344 of file thread_context.hh.

References panic.

◆ readVec8BitLaneReg()

ConstVecLane8 Iris::ThreadContext::readVec8BitLaneReg ( const RegId reg) const
inlineoverridevirtual

Vector Register Lane Interfaces.

Reads source vector 8bit operand.

Implements ThreadContext.

Definition at line 323 of file thread_context.hh.

References panic.

◆ readVecElem()

const VecElem& Iris::ThreadContext::readVecElem ( const RegId reg) const
inlineoverridevirtual

Implements ThreadContext.

Definition at line 376 of file thread_context.hh.

References panic, and readVecPredReg().

◆ readVecElemFlat()

const VecElem& Iris::ThreadContext::readVecElemFlat ( RegIndex  idx,
const ElemIndex elemIdx 
) const
inlineoverridevirtual

Implements ThreadContext.

Definition at line 521 of file thread_context.hh.

References panic.

◆ readVecPredReg()

const ArmISA::VecPredRegContainer & ThreadContext::readVecPredReg ( const RegId reg) const
overridevirtual

Implements ThreadContext.

Definition at line 653 of file thread_context.cc.

References _instId, call(), RegId::index(), ArmISA::offset, X86ISA::reg, vecPredRegIds, and vecPredRegs.

Referenced by readVecElem(), and readVecPredRegFlat().

◆ readVecPredRegFlat()

const ArmISA::VecPredRegContainer & ThreadContext::readVecPredRegFlat ( RegIndex  idx) const
overridevirtual

Implements ThreadContext.

Definition at line 682 of file thread_context.cc.

References readVecPredReg(), and VecPredRegClass.

Referenced by setVecElemFlat().

◆ readVecReg()

const ArmISA::VecRegContainer & ThreadContext::readVecReg ( const RegId reg) const
overridevirtual

Implements ThreadContext.

Definition at line 625 of file thread_context.cc.

References _instId, call(), RegId::index(), X86ISA::reg, vecRegIds, and vecRegs.

Referenced by readFloatReg(), and readVecRegFlat().

◆ readVecRegFlat()

const ArmISA::VecRegContainer & ThreadContext::readVecRegFlat ( RegIndex  idx) const
overridevirtual

Implements ThreadContext.

Definition at line 647 of file thread_context.cc.

References readVecReg(), and VecRegClass.

Referenced by setFloatRegFlat().

◆ regStats()

void Iris::ThreadContext::regStats ( const std::string &  name)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 258 of file thread_context.hh.

◆ remove()

bool ThreadContext::remove ( PCEvent e)
overridevirtual

Implements PCEventScope.

Definition at line 382 of file thread_context.cc.

References delBp(), getOrAllocBp(), and PCEvent::pc().

◆ schedule()

bool ThreadContext::schedule ( PCEvent e)
overridevirtual

Implements PCEventScope.

Definition at line 370 of file thread_context.cc.

References _instId, getOrAllocBp(), installBp(), and PCEvent::pc().

Referenced by noThrow().

◆ scheduleInstCountEvent()

void ThreadContext::scheduleInstCountEvent ( Event event,
Tick  count 
)
overridevirtual

Implements ThreadContext.

Definition at line 424 of file thread_context.cc.

References call(), comInstEventQueue, getCurrentInstCount(), maintainStepping(), and EventQueue::schedule().

Referenced by noThrow().

◆ semihostingEvent()

iris::IrisErrorCode ThreadContext::semihostingEvent ( uint64_t  esId,
const iris::IrisValueMap &  fields,
uint64_t  time,
uint64_t  sInstId,
bool  syncEc,
std::string &  error_message_out 
)
protected

◆ setCCReg()

void Iris::ThreadContext::setCCReg ( RegIndex  reg_idx,
RegVal  val 
)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 422 of file thread_context.hh.

References setCCRegFlat().

◆ setCCRegFlat()

void ThreadContext::setCCRegFlat ( RegIndex  idx,
RegVal  val 
)
overridevirtual

◆ setContextId()

void Iris::ThreadContext::setContextId ( int  id)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 192 of file thread_context.hh.

References ArmISA::id.

◆ setFloatReg()

void Iris::ThreadContext::setFloatReg ( RegIndex  reg_idx,
RegVal  val 
)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 397 of file thread_context.hh.

References panic.

◆ setFloatRegFlat()

void Iris::ThreadContext::setFloatRegFlat ( RegIndex  idx,
RegVal  val 
)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 503 of file thread_context.hh.

References panic, and readVecRegFlat().

◆ setIntReg()

void ThreadContext::setIntReg ( RegIndex  reg_idx,
RegVal  val 
)
overridevirtual

Implements ThreadContext.

Definition at line 565 of file thread_context.cc.

References _instId, call(), intReg32Ids, intReg64Ids, ArmISA::MISCREG_CPSR, readMiscRegNoEffect(), and X86ISA::val.

Referenced by readCCReg().

◆ setIntRegFlat()

void ThreadContext::setIntRegFlat ( RegIndex  idx,
uint64_t  val 
)
overridevirtual

Implements ThreadContext.

Definition at line 594 of file thread_context.cc.

References _instId, call(), flattenedIntIds, panic_if, and X86ISA::val.

Referenced by syscall().

◆ setMiscReg()

void Iris::ThreadContext::setMiscReg ( RegIndex  misc_reg,
const RegVal  val 
)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 444 of file thread_context.hh.

References setMiscRegNoEffect().

Referenced by FastModel::CortexA76TC::setIntRegFlat().

◆ setMiscRegNoEffect()

void ThreadContext::setMiscRegNoEffect ( RegIndex  misc_reg,
const RegVal  val 
)
overridevirtual

Implements ThreadContext.

Definition at line 545 of file thread_context.cc.

References _instId, call(), miscRegIds, and X86ISA::val.

Referenced by readMiscReg(), and setMiscReg().

◆ setProcessPtr()

void Iris::ThreadContext::setProcessPtr ( Process p)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 235 of file thread_context.hh.

References panic, setStatus(), and status().

◆ setStatus()

void ThreadContext::setStatus ( Status  new_status)
overridevirtual

◆ setStCondFailures()

void Iris::ThreadContext::setStCondFailures ( unsigned  sc_failures)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 464 of file thread_context.hh.

References panic.

◆ setThreadId()

void Iris::ThreadContext::setThreadId ( int  id)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 189 of file thread_context.hh.

References ArmISA::id.

◆ setVecElem()

void Iris::ThreadContext::setVecElem ( const RegId reg,
const VecElem val 
)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 409 of file thread_context.hh.

References panic.

◆ setVecElemFlat()

void Iris::ThreadContext::setVecElemFlat ( RegIndex  idx,
const ElemIndex elemIdx,
const VecElem val 
)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 526 of file thread_context.hh.

References panic, and readVecPredRegFlat().

◆ setVecLane() [1/4]

void Iris::ThreadContext::setVecLane ( const RegId reg,
const LaneData< LaneSize::Byte > &  val 
)
inlineoverridevirtual

Write a lane of the destination vector register.

Implements ThreadContext.

Definition at line 351 of file thread_context.hh.

References panic.

◆ setVecLane() [2/4]

void Iris::ThreadContext::setVecLane ( const RegId reg,
const LaneData< LaneSize::TwoByte > &  val 
)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 356 of file thread_context.hh.

References panic.

◆ setVecLane() [3/4]

void Iris::ThreadContext::setVecLane ( const RegId reg,
const LaneData< LaneSize::FourByte > &  val 
)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 362 of file thread_context.hh.

References panic.

◆ setVecLane() [4/4]

void Iris::ThreadContext::setVecLane ( const RegId reg,
const LaneData< LaneSize::EightByte > &  val 
)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 368 of file thread_context.hh.

References panic.

◆ setVecPredReg()

void Iris::ThreadContext::setVecPredReg ( const RegId reg,
const VecPredRegContainer val 
)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 415 of file thread_context.hh.

References panic.

◆ setVecPredRegFlat()

void Iris::ThreadContext::setVecPredRegFlat ( RegIndex  idx,
const VecPredRegContainer val 
)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 539 of file thread_context.hh.

References panic, readCCRegFlat(), and setCCRegFlat().

◆ setVecReg()

void Iris::ThreadContext::setVecReg ( const RegId reg,
const VecRegContainer val 
)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 403 of file thread_context.hh.

References panic.

◆ setVecRegFlat()

void Iris::ThreadContext::setVecRegFlat ( RegIndex  idx,
const VecRegContainer val 
)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 515 of file thread_context.hh.

References panic.

◆ simulationTimeEvent()

iris::IrisErrorCode ThreadContext::simulationTimeEvent ( uint64_t  esId,
const iris::IrisValueMap &  fields,
uint64_t  time,
uint64_t  sInstId,
bool  syncEc,
std::string &  error_message_out 
)
protected

Definition at line 217 of file thread_context.cc.

References call(), and maintainStepping().

◆ socketId()

uint32_t Iris::ThreadContext::socketId ( ) const
inlineoverridevirtual

Implements ThreadContext.

Definition at line 186 of file thread_context.hh.

References BaseCPU::socketId().

◆ status()

ThreadContext::Status ThreadContext::status ( ) const
overridevirtual

Implements ThreadContext.

Definition at line 466 of file thread_context.cc.

References _status.

Referenced by setProcessPtr().

◆ suspend()

void Iris::ThreadContext::suspend ( )
inlineoverridevirtual

Set the status to Suspended.

Implements ThreadContext.

Definition at line 243 of file thread_context.hh.

References setStatus(), and ThreadContext::Suspended.

Referenced by initFromIrisInstance().

◆ syscall()

void Iris::ThreadContext::syscall ( Fault fault)
inlineoverridevirtual

Implements ThreadContext.

Definition at line 477 of file thread_context.hh.

References panic, readIntRegFlat(), and setIntRegFlat().

◆ takeOverFrom()

void Iris::ThreadContext::takeOverFrom ( ::ThreadContext old_context)
inlineoverride

Definition at line 253 of file thread_context.hh.

References panic.

◆ threadId()

int Iris::ThreadContext::threadId ( ) const
inlineoverridevirtual

Implements ThreadContext.

Definition at line 188 of file thread_context.hh.

References _threadId.

◆ translateAddress() [1/2]

bool ThreadContext::translateAddress ( Addr paddr,
iris::MemorySpaceId  p_space,
Addr  vaddr,
iris::MemorySpaceId  v_space 
)
protected

Definition at line 394 of file thread_context.cc.

References _instId, noThrow(), panic, translations, and warn.

Referenced by noThrow().

◆ translateAddress() [2/2]

virtual bool Iris::ThreadContext::translateAddress ( Addr paddr,
Addr  vaddr 
)
pure virtual

Implemented in FastModel::CortexA76TC.

◆ uninstallBp()

void ThreadContext::uninstallBp ( BpInfoIt  it)
protected

Definition at line 158 of file thread_context.cc.

References _instId, and call().

Referenced by delBp().

Member Data Documentation

◆ _contextId

ContextID Iris::ThreadContext::_contextId
protected

Definition at line 58 of file thread_context.hh.

Referenced by contextId().

◆ _cpu

::BaseCPU* Iris::ThreadContext::_cpu
protected

Definition at line 56 of file thread_context.hh.

Referenced by getCpuPtr(), and initMemProxies().

◆ _dtb

::BaseTLB* Iris::ThreadContext::_dtb
protected

Definition at line 60 of file thread_context.hh.

Referenced by getDTBPtr().

◆ _instId

iris::InstanceId Iris::ThreadContext::_instId = iris::IRIS_UINT64_MAX
protected

◆ _irisPath

std::string Iris::ThreadContext::_irisPath
protected

Definition at line 63 of file thread_context.hh.

Referenced by instanceRegistryChanged().

◆ _itb

::BaseTLB* Iris::ThreadContext::_itb
protected

Definition at line 61 of file thread_context.hh.

Referenced by getITBPtr().

◆ _status

Status Iris::ThreadContext::_status = Active
protected

Definition at line 71 of file thread_context.hh.

Referenced by initFromIrisInstance(), setStatus(), and status().

◆ _system

System* Iris::ThreadContext::_system
protected

Definition at line 59 of file thread_context.hh.

◆ _threadId

int Iris::ThreadContext::_threadId
protected

Definition at line 57 of file thread_context.hh.

Referenced by threadId().

◆ bps

BpInfoMap Iris::ThreadContext::bps
protected

Definition at line 128 of file thread_context.hh.

Referenced by delBp(), getOrAllocBp(), and initFromIrisInstance().

◆ breakpointEventStreamId

iris::EventStreamId Iris::ThreadContext::breakpointEventStreamId
protected

Definition at line 158 of file thread_context.hh.

Referenced by initFromIrisInstance(), and ThreadContext().

◆ ccRegIds

ResourceIds Iris::ThreadContext::ccRegIds
protected

◆ client

iris::IrisInstance Iris::ThreadContext::client
mutableprotected

Definition at line 161 of file thread_context.hh.

Referenced by initFromIrisInstance(), ThreadContext(), and ~ThreadContext().

◆ comInstEventQueue

EventQueue Iris::ThreadContext::comInstEventQueue
protected

◆ enableAfterPseudoEvent

Event* Iris::ThreadContext::enableAfterPseudoEvent
protected

Definition at line 72 of file thread_context.hh.

Referenced by semihostingEvent(), setStatus(), ThreadContext(), and ~ThreadContext().

◆ flattenedIntIds

ResourceIds Iris::ThreadContext::flattenedIntIds
protected

◆ icountRscId

iris::ResourceId Iris::ThreadContext::icountRscId
protected

Definition at line 89 of file thread_context.hh.

◆ initEventStreamId

iris::EventStreamId Iris::ThreadContext::initEventStreamId
protected

Definition at line 156 of file thread_context.hh.

Referenced by ThreadContext(), and ~ThreadContext().

◆ intReg32Ids

ResourceIds Iris::ThreadContext::intReg32Ids
protected

◆ intReg64Ids

ResourceIds Iris::ThreadContext::intReg64Ids
protected

◆ memorySpaces

std::vector<iris::MemorySpaceInfo> Iris::ThreadContext::memorySpaces
protected

◆ miscRegIds

ResourceIds Iris::ThreadContext::miscRegIds
protected

◆ pcRscId

iris::ResourceId Iris::ThreadContext::pcRscId = iris::IRIS_UINT64_MAX
protected

Definition at line 88 of file thread_context.hh.

Referenced by FastModel::CortexA76TC::initFromIrisInstance(), and pcState().

◆ physProxy

std::unique_ptr<PortProxy> Iris::ThreadContext::physProxy = nullptr
protected

Definition at line 98 of file thread_context.hh.

Referenced by getPhysProxy(), and initMemProxies().

◆ regEventStreamId

iris::EventStreamId Iris::ThreadContext::regEventStreamId
protected

Definition at line 155 of file thread_context.hh.

Referenced by ThreadContext(), and ~ThreadContext().

◆ semihostingEventStreamId

iris::EventStreamId Iris::ThreadContext::semihostingEventStreamId
protected

Definition at line 159 of file thread_context.hh.

Referenced by initFromIrisInstance(), and ThreadContext().

◆ timeEventStreamId

iris::EventStreamId Iris::ThreadContext::timeEventStreamId
protected

Definition at line 157 of file thread_context.hh.

Referenced by ThreadContext(), and ~ThreadContext().

◆ translations

std::vector<iris::MemorySupportedAddressTranslationResult> Iris::ThreadContext::translations
protected

Definition at line 95 of file thread_context.hh.

Referenced by initFromIrisInstance(), and translateAddress().

◆ vecPredRegIds

ResourceIds Iris::ThreadContext::vecPredRegIds
protected

Definition at line 92 of file thread_context.hh.

Referenced by readVecPredReg().

◆ vecPredRegs

std::vector<ArmISA::VecPredRegContainer> Iris::ThreadContext::vecPredRegs
mutableprotected

Definition at line 69 of file thread_context.hh.

Referenced by readVecPredReg().

◆ vecRegIds

ResourceIds Iris::ThreadContext::vecRegIds
protected

Definition at line 91 of file thread_context.hh.

Referenced by FastModel::CortexA76TC::initFromIrisInstance(), and readVecReg().

◆ vecRegs

std::vector<ArmISA::VecRegContainer> Iris::ThreadContext::vecRegs
mutableprotected

Definition at line 68 of file thread_context.hh.

Referenced by readVecReg().

◆ virtProxy

std::unique_ptr<PortProxy> Iris::ThreadContext::virtProxy = nullptr
protected

Definition at line 97 of file thread_context.hh.

Referenced by getVirtProxy(), and initMemProxies().


The documentation for this class was generated from the following files:

Generated on Mon Jun 8 2020 15:45:58 for gem5 by doxygen 1.8.13