31 #ifndef __ARCH_RISCV_INTERRUPT_HH__ 32 #define __ARCH_RISCV_INTERRUPT_HH__ 42 #include "debug/Interrupt.hh" 43 #include "params/RiscvInterrupts.hh" 59 std::bitset<NumInterruptTypes>
ip;
60 std::bitset<NumInterruptTypes>
ie;
63 typedef RiscvInterruptsParams
Params;
68 return dynamic_cast<const Params *
>(
_params);
75 std::bitset<NumInterruptTypes>
81 mask.mei = mask.mti = mask.msi = 1;
83 mask.sei = mask.sti = mask.ssi = 1;
85 mask.uei = mask.uti = mask.usi = 1;
86 return std::bitset<NumInterruptTypes>(
mask);
102 return std::make_shared<InterruptFault>(
c);
111 DPRINTF(Interrupt,
"Interrupt %d:%d posted\n", int_num, index);
118 DPRINTF(Interrupt,
"Interrupt %d:%d cleared\n", int_num, index);
125 DPRINTF(Interrupt,
"All interrupts cleared\n");
129 uint64_t
readIP()
const {
return (uint64_t)ip.to_ulong(); }
130 uint64_t
readIE()
const {
return (uint64_t)ie.to_ulong(); }
137 unsigned long ip_ulong = ip.to_ulong();
138 unsigned long ie_ulong = ie.to_ulong();
146 unsigned long ip_ulong;
147 unsigned long ie_ulong;
157 #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