Go to the documentation of this file.
48 #ifndef __CPU_MINOR_EXEC_CONTEXT_HH__
49 #define __CPU_MINOR_EXEC_CONTEXT_HH__
57 #include "debug/MinorExecute.hh"
96 DPRINTF(MinorExecute,
"ExecContext setting PC: %s\n", *
inst->pc);
114 assert(byte_enable.size() == size);
116 size,
addr, flags,
nullptr,
nullptr, byte_enable);
122 panic(
"ExecContext::initiateHtmCmd() not implemented on MinorCPU\n");
132 assert(byte_enable.size() == size);
134 size,
addr, flags, res,
nullptr, byte_enable);
143 size,
addr, flags,
nullptr, std::move(amo_op),
273 panic(
"ExecContext::getHtmTransactionUid() not"
274 "implemented on MinorCPU\n");
281 panic(
"ExecContext::newHtmTransactionUid() not"
282 "implemented on MinorCPU\n");
297 panic(
"ExecContext::getHtmTransactionalDepth() not"
298 "implemented on MinorCPU\n");
bool mwait(PacketPtr pkt) override
RegVal readMiscReg(RegIndex misc_reg) override
bool inHtmTransactionalState() const override
RegVal readIntReg(RegIndex reg_idx) const override
RegVal readIntRegOperand(const StaticInst *si, int idx) override
Reads an integer register.
TheISA::VecRegContainer & getWritableVecRegOperand(const StaticInst *si, int idx) override
Gets destination vector register operand for modification.
constexpr decltype(nullptr) NoFault
void setVecRegOperand(const StaticInst *si, int idx, const TheISA::VecRegContainer &val) override
Sets a destination vector register operand to a value.
RegVal readCCRegOperand(const StaticInst *si, int idx) override
void setIntReg(RegIndex reg_idx, RegVal val) override
VecPredReg::Container VecPredRegContainer
const TheISA::VecRegContainer & readVecReg(const RegId ®) const 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.
@ VecElemClass
Vector Register Native Elem lane.
void armMonitor(Addr address) override
bool readPredicate() const override
@ CCRegClass
Condition-code register.
SimpleThread & thread
ThreadState object, provides all the architectural state.
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.
void setMiscReg(RegIndex misc_reg, RegVal val) override
BaseMMU * getMMUPtr() override
MinorCPU is an in-order CPU model with four fixed pipeline stages:
TheISA::VecPredRegContainer & getWritableVecPredRegOperand(const StaticInst *si, int idx) override
Gets destination predicate register operand for modification.
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)
void setVecReg(const RegId ®, const TheISA::VecRegContainer &val) override
uint64_t newHtmTransactionUid() const override
void setMemAccPredicate(bool val) override
RegVal readCCReg(RegIndex reg_idx) const override
const TheISA::VecRegContainer & readVecRegOperand(const StaticInst *si, int idx) const override
Vector Register Interfaces.
void mwaitAtomic(ThreadContext *tc) override
The SimpleThread object provides a combination of the ThreadState object and the ThreadContext interf...
void setVecPredReg(const RegId ®, const TheISA::VecPredRegContainer &val) override
Fault initiateMemRead(Addr addr, unsigned int size, Request::Flags flags, const std::vector< bool > &byte_enable) override
Initiate a timing memory read operation.
RegVal readMiscRegOperand(const StaticInst *si, int idx) override
LSQ & getLSQ()
To allow ExecContext to find the LSQ.
@ FloatRegClass
Floating-point register.
bool readMemAccPredicate()
void setStCondFailures(unsigned int st_cond_failures) override
Sets the number of consecutive store conditional failures.
void setCCRegOperand(const StaticInst *si, int idx, RegVal val) override
void setIntRegOperand(const StaticInst *si, int idx, RegVal val) override
Sets an integer register to a value.
Base, ISA-independent static instruction class.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
void pcState(const PCStateBase &val) override
std::shared_ptr< FaultBase > Fault
bool readPredicate() const
RegVal readMiscRegNoEffect(RegIndex misc_reg) const override
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
const TheISA::VecPredRegContainer & readVecPredRegOperand(const StaticInst *si, int idx) const override
Predicate registers interface.
const PCStateBase & pcState() const override
void setMemAccPredicate(bool val)
void setVecPredRegOperand(const StaticInst *si, int idx, const TheISA::VecPredRegContainer &val) override
Sets a destination predicate register operand to a value.
void demapPage(Addr vaddr, uint64_t asn)
void setVecElemOperand(const StaticInst *si, int idx, RegVal val) override
Sets a vector register to a value.
void setFloatRegOperandBits(const StaticInst *si, int idx, RegVal val) override
Sets the bits of a floating point register of single width to a binary value.
RegVal readVecElemOperand(const StaticInst *si, int idx) const override
Vector Elem Interfaces.
gem5::VecRegContainer< NumVecElemPerVecReg *sizeof(VecElem)> VecRegContainer
MinorDynInstPtr inst
Instruction for the benefit of memory operations and for PC.
const PCStateBase & pcState() const override
Fault initiateHtmCmd(Request::Flags flags) override
Initiate an HTM command, e.g.
RegVal readVecElem(const RegId ®) const override
void setPredicate(bool val) override
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
ExecContext(MinorCPU &cpu_, SimpleThread &thread_, Execute &execute_, MinorDynInstPtr inst_, RegIndex zeroReg)
GEM5_DEPRECATED_NAMESPACE(GuestABI, guest_abi)
void setFloatReg(RegIndex reg_idx, RegVal val) override
bool readMemAccPredicate() const override
RegVal readFloatReg(RegIndex reg_idx) const override
unsigned int readStCondFailures() const override
Returns the number of consecutive store conditional failures.
ContextID contextId() const override
ThreadContext * getTC()
Returns the pointer to this SimpleThread's ThreadContext.
ExecContext bears the exec_context interface for Minor.
TheISA::VecPredRegContainer & getWritableVecPredReg(const RegId ®) override
Execute & execute
The execute stage so we can peek at its contents.
@ IntRegClass
Integer register.
TheISA::VecRegContainer & getWritableVecReg(const RegId ®) override
void setMiscReg(int misc_reg, RegVal val) override
Sets a miscellaneous register, handling any architectural side effects due to writing that register.
void demapPage(Addr vaddr, uint64_t asn) override
Invalidate a page in the DTLB and ITLB.
const TheISA::VecPredRegContainer & readVecPredReg(const RegId ®) const override
@ MiscRegClass
Control (misc) register.
void setVecElem(const RegId ®, RegVal val) override
int ContextID
Globally unique thread context ID.
RegVal readFloatRegOperandBits(const StaticInst *si, int idx) override
Reads a floating point register in its binary format, instead of by value.
The ExecContext is an abstract base class the provides the interface used by the ISA to manipulate th...
uint64_t getHtmTransactionalDepth() const override
AddressMonitor * getAddrMonitor() override
@ VecRegClass
Vector Register.
Fault pushRequest(MinorDynInstPtr inst, bool isLoad, uint8_t *data, unsigned int size, Addr addr, Request::Flags flags, uint64_t *res, AtomicOpFunctorPtr amo_op, const std::vector< bool > &byte_enable=std::vector< bool >())
Single interface for readMem/writeMem/amoMem to issue requests into the LSQ.
std::unique_ptr< AtomicOpFunctor > AtomicOpFunctorPtr
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
void setMiscRegOperand(const StaticInst *si, int idx, RegVal val) override
void setPredicate(bool val)
void setCCReg(RegIndex reg_idx, RegVal val) override
Register ID: describe an architectural register with its class and index.
#define panic(...)
This implements a cprintf based panic() function.
uint64_t getHtmTransactionUid() const override
ThreadContext * tcBase() const override
Returns a pointer to the ThreadContext.
Generated on Tue Feb 8 2022 11:47:02 for gem5 by doxygen 1.8.17