32 #ifndef __ARCH_SPARC_INTERRUPT_HH__ 33 #define __ARCH_SPARC_INTERRUPT_HH__ 40 #include "debug/Interrupt.hh" 41 #include "params/SparcInterrupts.hh" 75 typedef SparcInterruptsParams
Params;
80 return dynamic_cast<const Params *
>(
_params);
91 if (softint & 0x10000 || softint & 0x1)
95 while (level > 0 && !(1 << level & softint))
97 if (1 << level & softint)
105 DPRINTF(Interrupt,
"Interrupt %d:%d posted\n", int_num, index);
107 assert(index >= 0 && index < 64);
109 interrupts[int_num] |=
ULL(1) <<
index;
110 intStatus |=
ULL(1) << int_num;
116 DPRINTF(Interrupt,
"Interrupt %d:%d cleared\n", int_num, index);
118 assert(index >= 0 && index < 64);
120 interrupts[int_num] &= ~(
ULL(1) <<
index);
121 if (!interrupts[int_num])
122 intStatus &= ~(
ULL(1) << int_num);
209 return std::make_shared<HstickMatch>();
213 return std::make_shared<InterruptVector>();
219 return std::make_shared<TrapLevelZero>();
223 return std::make_shared<HstickMatch>();
227 return std::make_shared<InterruptVector>();
231 return std::make_shared<CpuMondo>();
234 return std::make_shared<DevMondo>();
238 return std::make_shared<InterruptLevelN>(
level);
242 return std::make_shared<ResumableError>();
255 return interrupts[int_num];
274 #endif // __ARCH_SPARC_INTERRUPT_HH__
decltype(nullptr) constexpr NoFault
void clear(int int_num, int index) override
SparcInterruptsParams Params
void post(int int_num, int index) override
void unserialize(CheckpointIn &cp) override
Unserialize an object.
ThreadContext is the external interface to all thread state for anything outside of the CPU...
#define UNSERIALIZE_SCALAR(scalar)
bool checkInterrupts(ThreadContext *tc) const override
void updateIntrInfo(ThreadContext *tc) override
uint64_t get_vec(int int_num)
Hyper privileged registers.
#define SERIALIZE_ARRAY(member, size)
Fault getInterrupt(ThreadContext *tc) override
uint64_t interrupts[NumInterruptTypes]
#define ULL(N)
uint64_t constant
#define SERIALIZE_SCALAR(scalar)
void setCPU(BaseCPU *_cpu) override
int InterruptLevel(uint64_t softint)
#define UNSERIALIZE_ARRAY(member, size)
virtual RegVal readMiscRegNoEffect(RegIndex misc_reg) const =0
std::ostream CheckpointOut
const SimObjectParams * _params
Cached copy of the object parameters.
void serialize(CheckpointOut &cp) const override
Serialize an object.
const Params * params() const
std::shared_ptr< FaultBase > Fault