29 #ifndef __ARCH_RISCV_INTERRUPT_HH__ 30 #define __ARCH_RISCV_INTERRUPT_HH__ 40 #include "debug/Interrupt.hh" 41 #include "params/RiscvInterrupts.hh" 57 std::bitset<NumInterruptTypes>
ip;
58 std::bitset<NumInterruptTypes>
ie;
61 typedef RiscvInterruptsParams
Params;
66 return dynamic_cast<const Params *
>(
_params);
73 std::bitset<NumInterruptTypes>
79 mask.mei = mask.mti = mask.msi = 1;
81 mask.sei = mask.sti = mask.ssi = 1;
83 mask.uei = mask.uti = mask.usi = 1;
84 return std::bitset<NumInterruptTypes>(
mask);
100 return std::make_shared<InterruptFault>(
c);
109 DPRINTF(Interrupt,
"Interrupt %d:%d posted\n", int_num, index);
116 DPRINTF(Interrupt,
"Interrupt %d:%d cleared\n", int_num, index);
123 DPRINTF(Interrupt,
"All interrupts cleared\n");
127 uint64_t
readIP()
const {
return (uint64_t)ip.to_ulong(); }
128 uint64_t
readIE()
const {
return (uint64_t)ie.to_ulong(); }
135 unsigned long ip_ulong = ip.to_ulong();
136 unsigned long ie_ulong = ie.to_ulong();
144 unsigned long ip_ulong;
145 unsigned long ie_ulong;
155 #endif // __ARCH_RISCV_INTERRUPT_HH__
std::bitset< NumInterruptTypes > ie
decltype(nullptr) constexpr NoFault
void updateIntrInfo(ThreadContext *tc)
Fault getInterrupt(ThreadContext *tc)
void clear(int int_num, int index)
ThreadContext is the external interface to all thread state for anything outside of the CPU...
bool checkInterrupt(int num) const
#define UNSERIALIZE_SCALAR(scalar)
void setCPU(BaseCPU *_cpu)
RiscvInterruptsParams Params
void post(int int_num, int index)
void setIP(const uint64_t &val)
void serialize(CheckpointOut &cp) const
Serialize an object.
#define SERIALIZE_SCALAR(scalar)
std::bitset< NumInterruptTypes > globalMask(ThreadContext *tc) const
const Params * params() const
std::ostream CheckpointOut
const SimObjectParams * _params
Cached copy of the object parameters.
bool checkInterrupts(ThreadContext *tc) const
void setIE(const uint64_t &val)
void unserialize(CheckpointIn &cp)
Unserialize an object.
virtual RegVal readMiscReg(RegIndex misc_reg)=0
std::shared_ptr< FaultBase > Fault
std::bitset< NumInterruptTypes > ip