Go to the documentation of this file.
42 #ifndef __CPU_EXEC_CONTEXT_HH__
43 #define __CPU_EXEC_CONTEXT_HH__
45 #include "arch/registers.hh"
47 #include "config/the_isa.hh"
238 panic(
"ExecContext::readMem() should be overridden\n");
252 panic(
"ExecContext::initiateMemRead() should be overridden\n");
277 panic(
"ExecContext::amoMem() should be overridden\n");
288 panic(
"ExecContext::initiateMemAMO() should be overridden\n");
353 #endif // __CPU_EXEC_CONTEXT_HH__
virtual void setPredicate(bool val)=0
std::unique_ptr< AtomicOpFunctor > AtomicOpFunctorPtr
virtual Fault initiateMemRead(Addr addr, unsigned int size, Request::Flags flags, const std::vector< bool > &byte_enable=std::vector< bool >())
Initiate a timing memory read operation.
virtual ConstVecLane8 readVec8BitLaneOperand(const StaticInst *si, int idx) const =0
Vector Register Lane Interfaces.
virtual uint64_t newHtmTransactionUid() const =0
Generic predicate register container.
virtual RegVal readIntRegOperand(const StaticInst *si, int idx)=0
Reads an integer register.
VecReg::Container VecRegContainer
virtual VecRegContainer & getWritableVecRegOperand(const StaticInst *si, int idx)=0
Gets destination vector register operand for modification.
virtual void demapPage(Addr vaddr, uint64_t asn)=0
Invalidate a page in the DTLB and ITLB.
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)
Base, ISA-independent static instruction class.
virtual void setMiscRegOperand(const StaticInst *si, int idx, RegVal val)=0
virtual VecElem readVecElemOperand(const StaticInst *si, int idx) const =0
Vector Elem Interfaces.
virtual ConstVecLane32 readVec32BitLaneOperand(const StaticInst *si, int idx) const =0
Reads source vector 32bit operand.
virtual bool inHtmTransactionalState() const =0
virtual bool mwait(PacketPtr pkt)=0
VecPredReg::Container VecPredRegContainer
virtual void setFloatRegOperandBits(const StaticInst *si, int idx, RegVal val)=0
Sets the bits of a floating point register of single width to a binary value.
virtual void setStCondFailures(unsigned int sc_failures)=0
Sets the number of consecutive store conditional failures.
virtual Fault writeMem(uint8_t *data, unsigned int size, Addr addr, Request::Flags flags, uint64_t *res, const std::vector< bool > &byte_enable=std::vector< bool >())=0
For atomic-mode contexts, perform an atomic memory write operation.
virtual void setVecElemOperand(const StaticInst *si, int idx, const VecElem val)=0
Sets a vector register to a value.
virtual PCState pcState() const =0
virtual RegVal readCCRegOperand(const StaticInst *si, int idx)=0
virtual VecPredRegContainer & getWritableVecPredRegOperand(const StaticInst *si, int idx)=0
Gets destination predicate register operand for modification.
virtual void armMonitor(Addr address)=0
virtual void setCCRegOperand(const StaticInst *si, int idx, RegVal val)=0
virtual void mwaitAtomic(ThreadContext *tc)=0
ThreadContext is the external interface to all thread state for anything outside of the CPU.
virtual const VecRegContainer & readVecRegOperand(const StaticInst *si, int idx) const =0
Vector Register Interfaces.
Vector Lane abstraction Another view of a container.
virtual void setVecLaneOperand(const StaticInst *si, int idx, const LaneData< LaneSize::Byte > &val)=0
Write a lane of the destination vector operand.
std::shared_ptr< FaultBase > Fault
The ExecContext is an abstract base class the provides the interface used by the ISA to manipulate th...
virtual void syscall()=0
Executes a syscall.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
virtual AddressMonitor * getAddrMonitor()=0
virtual RegVal readMiscRegOperand(const StaticInst *si, int idx)=0
virtual ConstVecLane16 readVec16BitLaneOperand(const StaticInst *si, int idx) const =0
Reads source vector 16bit operand.
virtual ThreadContext * tcBase() const =0
Returns a pointer to the ThreadContext.
virtual unsigned int readStCondFailures() const =0
Returns the number of consecutive store conditional failures.
virtual void setMemAccPredicate(bool val)=0
GenericISA::DelaySlotPCState< MachInst > PCState
A Packet is used to encapsulate a transfer between two objects in the memory system (e....
virtual RegVal readMiscReg(int misc_reg)=0
Reads a miscellaneous register, handling any architectural side effects due to reading that register.
virtual void setVecRegOperand(const StaticInst *si, int idx, const VecRegContainer &val)=0
Sets a destination vector register operand to a value.
virtual uint64_t getHtmTransactionUid() const =0
virtual uint64_t getHtmTransactionalDepth() const =0
virtual const VecPredRegContainer & readVecPredRegOperand(const StaticInst *si, int idx) const =0
Predicate registers interface.
virtual void setVecPredRegOperand(const StaticInst *si, int idx, const VecPredRegContainer &val)=0
Sets a destination predicate register operand to a value.
virtual bool readPredicate() const =0
virtual RegVal readFloatRegOperandBits(const StaticInst *si, int idx)=0
Reads a floating point register in its binary format, instead of by value.
virtual void setIntRegOperand(const StaticInst *si, int idx, RegVal val)=0
Sets an integer register to a value.
virtual Fault initiateMemAMO(Addr addr, unsigned int size, Request::Flags flags, AtomicOpFunctorPtr amo_op)
For timing-mode contexts, initiate an atomic AMO (atomic read-modify-write memory operation)
virtual ConstVecLane64 readVec64BitLaneOperand(const StaticInst *si, int idx) const =0
Reads source vector 64bit operand.
virtual bool readMemAccPredicate() const =0
LaneSize is an abstraction of a LS byte value for the execution and thread contexts to handle values ...
virtual Fault readMem(Addr addr, uint8_t *data, unsigned int size, Request::Flags flags, const std::vector< bool > &byte_enable=std::vector< bool >())
Perform an atomic memory read operation.
Vector Register Abstraction This generic class is the model in a particularization of MVC,...
virtual Fault initiateHtmCmd(Request::Flags flags)=0
Initiate an HTM command, e.g.
#define panic(...)
This implements a cprintf based panic() function.
virtual void setMiscReg(int misc_reg, RegVal val)=0
Sets a miscellaneous register, handling any architectural side effects due to writing that register.
Generated on Wed Sep 30 2020 14:02:08 for gem5 by doxygen 1.8.17