42#include "debug/Faults.hh"
77 "NMI overwriting M-mode trap handler state");
135 panic(
"Unknown privilege mode %d.", prv);
140 uint64_t _cause =
_code;
184 std::unique_ptr<PCState> new_pc(
dynamic_cast<PCState *
>(
186 panic_if(!new_pc,
"Failed create new PCState from ISA pointer");
191 if (mmu ==
nullptr) {
192 warn(
"MMU is not Riscv MMU instance, we can't reset PMP");
195 mmu->getPMP()->pmpReset();
202 panic(
"Unknown instruction 0x%08x at pc %s", rsi->machInst,
210 panic(
"Illegal instruction 0x%08x at pc %s: %s", rsi->machInst,
223 panic(
"Illegal floating-point rounding mode 0x%x at pc %s.",
#define DPRINTFS(x, s,...)
virtual void clearLoadReservation(ContextID cid)
virtual PCStateBase * newPCState(Addr new_inst_addr=0) const =0
Addr instAddr() const
Returns the memory address of the instruction this PC points to.
T * get() const
Directly access the pointer itself without taking a reference.
void invokeSE(ThreadContext *tc, const StaticInstPtr &inst) override
void invokeSE(ThreadContext *tc, const StaticInstPtr &inst) override
void invokeSE(ThreadContext *tc, const StaticInstPtr &inst) override
void invoke(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr) override
virtual void invokeSE(ThreadContext *tc, const StaticInstPtr &inst)
void invoke(ThreadContext *tc, const StaticInstPtr &inst) override
FaultName name() const override
bool isNonMaskableInterrupt() const
virtual RegVal trap_value() const
Base class for all RISC-V static instructions.
void invokeSE(ThreadContext *tc, const StaticInstPtr &inst) override
const std::string instName
void invokeSE(ThreadContext *tc, const StaticInstPtr &inst) override
void invokeSE(ThreadContext *tc, const StaticInstPtr &inst) override
virtual void advancePC(PCStateBase &pc_state) const =0
Workload * workload
OS kernel.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
virtual RegVal readMiscReg(RegIndex misc_reg)=0
virtual void setMiscReg(RegIndex misc_reg, RegVal val)=0
virtual System * getSystemPtr()=0
virtual BaseISA * getIsaPtr() const =0
virtual BaseCPU * getCpuPtr()=0
virtual const PCStateBase & pcState() const =0
virtual BaseMMU * getMMUPtr()=0
virtual ContextID contextId() const =0
virtual void syscall(ThreadContext *tc)
constexpr T bits(T val, unsigned first, unsigned last)
Extract the bitfield from position 'first' to 'last' (inclusive) from 'val' and right justify it.
constexpr T mbits(T val, unsigned first, unsigned last)
Mask off the given bits in place like bits() but without shifting.
#define panic(...)
This implements a cprintf based panic() function.
#define panic_if(cond,...)
Conditional panic macro that checks the supplied condition and only panics if the condition is true a...
#define warn_if(cond,...)
Conditional warning macro that checks the supplied condition and only prints a warning if the conditi...
const RegVal CAUSE_INTERRUPT_MASKS[enums::Num_RiscvType]
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
bool FullSystem
The FullSystem variable can be used to determine the current mode of simulation.
void schedRelBreak(Tick delta)
Cause the simulator to execute a breakpoint relative to the current tick.