gem5  v22.0.0.2
Public Member Functions | Public Attributes | List of all members
gem5::minor::ExecContext Class Reference

ExecContext bears the exec_context interface for Minor. More...

#include <exec_context.hh>

Inheritance diagram for gem5::minor::ExecContext:
gem5::ExecContext

Public Member Functions

 ExecContext (MinorCPU &cpu_, SimpleThread &thread_, Execute &execute_, MinorDynInstPtr inst_)
 
 ~ExecContext ()
 
Fault initiateMemRead (Addr addr, unsigned int size, Request::Flags flags, const std::vector< bool > &byte_enable) override
 Initiate a timing memory read operation. More...
 
Fault initiateMemMgmtCmd (Request::Flags flags) override
 Initiate a memory management command with no valid address. More...
 
Fault writeMem (uint8_t *data, unsigned int size, Addr addr, Request::Flags flags, uint64_t *res, const std::vector< bool > &byte_enable) override
 For atomic-mode contexts, perform an atomic memory write operation. More...
 
Fault initiateMemAMO (Addr addr, unsigned int size, Request::Flags flags, AtomicOpFunctorPtr amo_op) override
 For timing-mode contexts, initiate an atomic AMO (atomic read-modify-write memory operation) More...
 
RegVal getRegOperand (const StaticInst *si, int idx) override
 
void getRegOperand (const StaticInst *si, int idx, void *val) override
 
void * getWritableRegOperand (const StaticInst *si, int idx) override
 
void setRegOperand (const StaticInst *si, int idx, RegVal val) override
 
void setRegOperand (const StaticInst *si, int idx, const void *val) override
 
bool readPredicate () const override
 
void setPredicate (bool val) override
 
bool readMemAccPredicate () const override
 
void setMemAccPredicate (bool val) override
 
uint64_t getHtmTransactionUid () const override
 
uint64_t newHtmTransactionUid () const override
 
bool inHtmTransactionalState () const override
 
uint64_t getHtmTransactionalDepth () const override
 
const PCStateBasepcState () const override
 
void pcState (const PCStateBase &val) override
 
RegVal readMiscRegNoEffect (int misc_reg) const
 
RegVal readMiscReg (int misc_reg) override
 Reads a miscellaneous register, handling any architectural side effects due to reading that register. More...
 
void setMiscReg (int misc_reg, RegVal val) override
 Sets a miscellaneous register, handling any architectural side effects due to writing that register. More...
 
RegVal readMiscRegOperand (const StaticInst *si, int idx) override
 
void setMiscRegOperand (const StaticInst *si, int idx, RegVal val) override
 
ThreadContexttcBase () const override
 Returns a pointer to the ThreadContext. More...
 
unsigned int readStCondFailures () const override
 Returns the number of consecutive store conditional failures. More...
 
void setStCondFailures (unsigned int st_cond_failures) override
 Sets the number of consecutive store conditional failures. More...
 
ContextID contextId ()
 
void demapPage (Addr vaddr, uint64_t asn) override
 Invalidate a page in the DTLB and ITLB. More...
 
BaseCPU * getCpuPtr ()
 
void armMonitor (Addr address) override
 
bool mwait (PacketPtr pkt) override
 
void mwaitAtomic (ThreadContext *tc) override
 
AddressMonitor * getAddrMonitor () override
 
- Public Member Functions inherited from gem5::ExecContext
virtual Fault readMem (Addr addr, uint8_t *data, unsigned int size, Request::Flags flags, const std::vector< bool > &byte_enable)
 Perform an atomic memory read operation. More...
 
virtual Fault amoMem (Addr addr, uint8_t *data, unsigned int size, Request::Flags flags, AtomicOpFunctorPtr amo_op)
 For atomic-mode contexts, perform an atomic AMO (a.k.a., Atomic Read-Modify-Write Memory Operation) More...
 

Public Attributes

MinorCPUcpu
 
SimpleThreadthread
 ThreadState object, provides all the architectural state. More...
 
Executeexecute
 The execute stage so we can peek at its contents. More...
 
MinorDynInstPtr inst
 Instruction for the benefit of memory operations and for PC. More...
 

Detailed Description

ExecContext bears the exec_context interface for Minor.

This nicely separates that interface from other classes such as Pipeline, MinorCPU and DynMinorInst and makes it easier to see what state is accessed by it.

Definition at line 73 of file exec_context.hh.

Constructor & Destructor Documentation

◆ ExecContext()

gem5::minor::ExecContext::ExecContext ( MinorCPU cpu_,
SimpleThread thread_,
Execute execute_,
MinorDynInstPtr  inst_ 
)
inline

Definition at line 87 of file exec_context.hh.

References DPRINTF, inst, pcState(), setMemAccPredicate(), and setPredicate().

◆ ~ExecContext()

gem5::minor::ExecContext::~ExecContext ( )
inline

Definition at line 102 of file exec_context.hh.

References inst, readMemAccPredicate(), and readPredicate().

Member Function Documentation

◆ armMonitor()

void gem5::minor::ExecContext::armMonitor ( Addr  address)
inlineoverridevirtual

Implements gem5::ExecContext.

Definition at line 307 of file exec_context.hh.

References getCpuPtr(), and inst.

◆ contextId()

ContextID gem5::minor::ExecContext::contextId ( )
inline

Definition at line 292 of file exec_context.hh.

References gem5::SimpleThread::contextId(), and thread.

◆ demapPage()

void gem5::minor::ExecContext::demapPage ( Addr  vaddr,
uint64_t  asn 
)
inlineoverridevirtual

Invalidate a page in the DTLB and ITLB.

Implements gem5::ExecContext.

Definition at line 297 of file exec_context.hh.

References gem5::BaseMMU::demapPage(), gem5::SimpleThread::getMMUPtr(), thread, and gem5::MipsISA::vaddr.

◆ getAddrMonitor()

AddressMonitor* gem5::minor::ExecContext::getAddrMonitor ( )
inlineoverridevirtual

Implements gem5::ExecContext.

Definition at line 325 of file exec_context.hh.

References getCpuPtr(), and inst.

◆ getCpuPtr()

BaseCPU* gem5::minor::ExecContext::getCpuPtr ( )
inline

Definition at line 302 of file exec_context.hh.

References cpu.

Referenced by armMonitor(), getAddrMonitor(), mwait(), and mwaitAtomic().

◆ getHtmTransactionalDepth()

uint64_t gem5::minor::ExecContext::getHtmTransactionalDepth ( ) const
inlineoverridevirtual

Implements gem5::ExecContext.

Definition at line 233 of file exec_context.hh.

References panic.

◆ getHtmTransactionUid()

uint64_t gem5::minor::ExecContext::getHtmTransactionUid ( ) const
inlineoverridevirtual

Implements gem5::ExecContext.

Definition at line 209 of file exec_context.hh.

References panic.

◆ getRegOperand() [1/2]

RegVal gem5::minor::ExecContext::getRegOperand ( const StaticInst si,
int  idx 
)
inlineoverridevirtual

◆ getRegOperand() [2/2]

void gem5::minor::ExecContext::getRegOperand ( const StaticInst si,
int  idx,
void *  val 
)
inlineoverridevirtual

◆ getWritableRegOperand()

void* gem5::minor::ExecContext::getWritableRegOperand ( const StaticInst si,
int  idx 
)
inlineoverridevirtual

Implements gem5::ExecContext.

Definition at line 163 of file exec_context.hh.

References gem5::SimpleThread::getWritableReg(), gem5::ArmISA::si, and thread.

◆ inHtmTransactionalState()

bool gem5::minor::ExecContext::inHtmTransactionalState ( ) const
inlineoverridevirtual

Implements gem5::ExecContext.

Definition at line 225 of file exec_context.hh.

◆ initiateMemAMO()

Fault gem5::minor::ExecContext::initiateMemAMO ( Addr  addr,
unsigned int  size,
Request::Flags  flags,
AtomicOpFunctorPtr  amo_op 
)
inlineoverridevirtual

For timing-mode contexts, initiate an atomic AMO (atomic read-modify-write memory operation)

Reimplemented from gem5::ExecContext.

Definition at line 138 of file exec_context.hh.

References gem5::X86ISA::addr, execute, flags, gem5::minor::Execute::getLSQ(), inst, and gem5::minor::LSQ::pushRequest().

◆ initiateMemMgmtCmd()

Fault gem5::minor::ExecContext::initiateMemMgmtCmd ( Request::Flags  flags)
inlineoverridevirtual

Initiate a memory management command with no valid address.

Currently, these instructions need to bypass squashing in the O3 model Examples include HTM commands and TLBI commands. e.g. tell Ruby we're starting/stopping a HTM transaction, or tell Ruby to issue a TLBI operation

Implements gem5::ExecContext.

Definition at line 119 of file exec_context.hh.

References gem5::NoFault, and panic.

◆ initiateMemRead()

Fault gem5::minor::ExecContext::initiateMemRead ( Addr  addr,
unsigned int  size,
Request::Flags  flags,
const std::vector< bool > &  byte_enable 
)
inlineoverridevirtual

Initiate a timing memory read operation.

Must be overridden for exec contexts that support timing memory mode. Not pure virtual since exec contexts that only support atomic memory mode need not override (though in that case this function should never be called).

Reimplemented from gem5::ExecContext.

Definition at line 109 of file exec_context.hh.

References gem5::X86ISA::addr, execute, flags, gem5::minor::Execute::getLSQ(), inst, and gem5::minor::LSQ::pushRequest().

◆ mwait()

bool gem5::minor::ExecContext::mwait ( PacketPtr  pkt)
inlineoverridevirtual

Implements gem5::ExecContext.

Definition at line 313 of file exec_context.hh.

References getCpuPtr(), and inst.

◆ mwaitAtomic()

void gem5::minor::ExecContext::mwaitAtomic ( ThreadContext tc)
inlineoverridevirtual

Implements gem5::ExecContext.

Definition at line 319 of file exec_context.hh.

References getCpuPtr(), inst, gem5::SimpleThread::mmu, and thread.

◆ newHtmTransactionUid()

uint64_t gem5::minor::ExecContext::newHtmTransactionUid ( ) const
inlineoverridevirtual

Implements gem5::ExecContext.

Definition at line 217 of file exec_context.hh.

References panic.

◆ pcState() [1/2]

const PCStateBase& gem5::minor::ExecContext::pcState ( ) const
inlineoverridevirtual

Implements gem5::ExecContext.

Definition at line 241 of file exec_context.hh.

References gem5::SimpleThread::pcState(), and thread.

Referenced by ExecContext().

◆ pcState() [2/2]

void gem5::minor::ExecContext::pcState ( const PCStateBase val)
inlineoverridevirtual

Implements gem5::ExecContext.

Definition at line 247 of file exec_context.hh.

References gem5::SimpleThread::pcState(), thread, and gem5::X86ISA::val.

◆ readMemAccPredicate()

bool gem5::minor::ExecContext::readMemAccPredicate ( ) const
inlineoverridevirtual

◆ readMiscReg()

RegVal gem5::minor::ExecContext::readMiscReg ( int  misc_reg)
inlineoverridevirtual

Reads a miscellaneous register, handling any architectural side effects due to reading that register.

Implements gem5::ExecContext.

Definition at line 259 of file exec_context.hh.

References gem5::SimpleThread::readMiscReg(), and thread.

◆ readMiscRegNoEffect()

RegVal gem5::minor::ExecContext::readMiscRegNoEffect ( int  misc_reg) const
inline

Definition at line 253 of file exec_context.hh.

References gem5::SimpleThread::readMiscRegNoEffect(), and thread.

◆ readMiscRegOperand()

RegVal gem5::minor::ExecContext::readMiscRegOperand ( const StaticInst si,
int  idx 
)
inlineoverridevirtual

◆ readPredicate()

bool gem5::minor::ExecContext::readPredicate ( ) const
inlineoverridevirtual

◆ readStCondFailures()

unsigned int gem5::minor::ExecContext::readStCondFailures ( ) const
inlineoverridevirtual

Returns the number of consecutive store conditional failures.

Implements gem5::ExecContext.

Definition at line 289 of file exec_context.hh.

◆ setMemAccPredicate()

void gem5::minor::ExecContext::setMemAccPredicate ( bool  val)
inlineoverridevirtual

◆ setMiscReg()

void gem5::minor::ExecContext::setMiscReg ( int  misc_reg,
RegVal  val 
)
inlineoverridevirtual

Sets a miscellaneous register, handling any architectural side effects due to writing that register.

Implements gem5::ExecContext.

Definition at line 265 of file exec_context.hh.

References gem5::SimpleThread::setMiscReg(), thread, and gem5::X86ISA::val.

◆ setMiscRegOperand()

void gem5::minor::ExecContext::setMiscRegOperand ( const StaticInst si,
int  idx,
RegVal  val 
)
inlineoverridevirtual

◆ setPredicate()

void gem5::minor::ExecContext::setPredicate ( bool  val)
inlineoverridevirtual

Implements gem5::ExecContext.

Definition at line 190 of file exec_context.hh.

References gem5::SimpleThread::setPredicate(), thread, and gem5::X86ISA::val.

Referenced by ExecContext().

◆ setRegOperand() [1/2]

void gem5::minor::ExecContext::setRegOperand ( const StaticInst si,
int  idx,
const void *  val 
)
inlineoverridevirtual

◆ setRegOperand() [2/2]

void gem5::minor::ExecContext::setRegOperand ( const StaticInst si,
int  idx,
RegVal  val 
)
inlineoverridevirtual

◆ setStCondFailures()

void gem5::minor::ExecContext::setStCondFailures ( unsigned int  sc_failures)
inlineoverridevirtual

Sets the number of consecutive store conditional failures.

Implements gem5::ExecContext.

Definition at line 290 of file exec_context.hh.

◆ tcBase()

ThreadContext* gem5::minor::ExecContext::tcBase ( ) const
inlineoverridevirtual

Returns a pointer to the ThreadContext.

Implements gem5::ExecContext.

Definition at line 286 of file exec_context.hh.

References gem5::SimpleThread::getTC(), and thread.

◆ writeMem()

Fault gem5::minor::ExecContext::writeMem ( uint8_t *  data,
unsigned int  size,
Addr  addr,
Request::Flags  flags,
uint64_t *  res,
const std::vector< bool > &  byte_enable 
)
inlineoverridevirtual

For atomic-mode contexts, perform an atomic memory write operation.

For timing-mode contexts, initiate a timing memory write operation.

Implements gem5::ExecContext.

Definition at line 127 of file exec_context.hh.

References gem5::X86ISA::addr, data, execute, flags, gem5::minor::Execute::getLSQ(), inst, and gem5::minor::LSQ::pushRequest().

Member Data Documentation

◆ cpu

MinorCPU& gem5::minor::ExecContext::cpu

Definition at line 76 of file exec_context.hh.

Referenced by getCpuPtr().

◆ execute

Execute& gem5::minor::ExecContext::execute

The execute stage so we can peek at its contents.

Definition at line 82 of file exec_context.hh.

Referenced by initiateMemAMO(), initiateMemRead(), and writeMem().

◆ inst

MinorDynInstPtr gem5::minor::ExecContext::inst

Instruction for the benefit of memory operations and for PC.

Definition at line 85 of file exec_context.hh.

Referenced by armMonitor(), ExecContext(), getAddrMonitor(), initiateMemAMO(), initiateMemRead(), mwait(), mwaitAtomic(), writeMem(), and ~ExecContext().

◆ thread

SimpleThread& gem5::minor::ExecContext::thread

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

Generated on Thu Jul 28 2022 13:34:09 for gem5 by doxygen 1.8.17