30#ifndef __ARCH_RISCV_STATIC_INST_HH__
31#define __ARCH_RISCV_STATIC_INST_HH__
67 template <
typename T32,
typename T64>
91 std::unique_ptr<PCStateBase>
98 return std::unique_ptr<PCStateBase>{ret_pc_ptr};
120 flags[IsMacroop] =
true;
134 panic(
"Tried to execute a macroop directly!\n");
141 panic(
"Tried to execute a macroop directly!\n");
147 panic(
"Tried to execute a macroop directly!\n");
150 void size(
size_t newSize)
override
170 flags[IsMicroop] =
true;
The ExecContext is an abstract base class the provides the interface used by the ISA to manipulate th...
virtual PCStateBase * clone() const =0
void size(size_t newSize) override
std::vector< StaticInstPtr > microops
Fault initiateAcc(ExecContext *xc, trace::InstRecord *traceData) const override
Fault completeAcc(PacketPtr pkt, ExecContext *xc, trace::InstRecord *traceData) const override
RiscvMacroInst(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
StaticInstPtr fetchMicroop(MicroPC upc) const override
Return the microop that goes with a particular micropc.
Fault execute(ExecContext *xc, trace::InstRecord *traceData) const override
RiscvMicroInst(const char *mnem, ExtMachInst _machInst, OpClass __opClass)
void advancePC(PCStateBase &pcState) const override
size_t asBytes(void *buf, size_t size) override
Instruction classes can override this function to return a a representation of themselves as a blob o...
std::unique_ptr< PCStateBase > buildRetPC(const PCStateBase &cur_pc, const PCStateBase &call_pc) const override
void advancePC(ThreadContext *tc) const override
int64_t rvSext(int64_t x) const
T rvSelect(T v32, T v64) const
void advancePC(PCStateBase &pc) const override
uint64_t rvZext(uint64_t x) const
RiscvStaticInst(const char *_mnemonic, ExtMachInst _machInst, OpClass __opClass)
uint64_t getEMI() const override
StaticInst(const char *_mnemonic, OpClass op_class)
Constructor.
size_t simpleAsBytes(void *buf, size_t max_size, const T &t)
size_t _size
Instruction size in bytes.
std::bitset< Num_Flags > flags
Flag values for this instruction.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
virtual const PCStateBase & pcState() const =0
#define panic(...)
This implements a cprintf based panic() function.
constexpr enums::RiscvType RV32
Copyright (c) 2024 Arm Limited All rights reserved.
std::shared_ptr< FaultBase > Fault
RefCountingPtr< StaticInst > StaticInstPtr
Declaration of the Packet class.