29 #ifndef __ARCH_SPARC_INTERRUPT_HH__ 30 #define __ARCH_SPARC_INTERRUPT_HH__ 37 #include "debug/Interrupt.hh" 38 #include "params/SparcInterrupts.hh" 72 typedef SparcInterruptsParams
Params;
77 return dynamic_cast<const Params *
>(
_params);
88 if (softint & 0x10000 || softint & 0x1)
92 while (level > 0 && !(1 << level & softint))
94 if (1 << level & softint)
102 DPRINTF(Interrupt,
"Interrupt %d:%d posted\n", int_num, index);
104 assert(index >= 0 && index < 64);
106 interrupts[int_num] |=
ULL(1) <<
index;
107 intStatus |=
ULL(1) << int_num;
113 DPRINTF(Interrupt,
"Interrupt %d:%d cleared\n", int_num, index);
115 assert(index >= 0 && index < 64);
117 interrupts[int_num] &= ~(
ULL(1) <<
index);
118 if (!interrupts[int_num])
119 intStatus &= ~(
ULL(1) << int_num);
206 return std::make_shared<HstickMatch>();
210 return std::make_shared<InterruptVector>();
216 return std::make_shared<TrapLevelZero>();
220 return std::make_shared<HstickMatch>();
224 return std::make_shared<InterruptVector>();
228 return std::make_shared<CpuMondo>();
231 return std::make_shared<DevMondo>();
235 return std::make_shared<InterruptLevelN>(
level);
239 return std::make_shared<ResumableError>();
252 return interrupts[int_num];
271 #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.
Fault getInterrupt(ThreadContext *tc) override
uint64_t interrupts[NumInterruptTypes]
#define ULL(N)
uint64_t constant
#define SERIALIZE_ARRAY(member, size)
#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