class Arm_ipis
{
public:
- Arm_ipis(Cpu_number cpu)
+ Arm_ipis(Cpu_number cpu, bool resume)
{
- check(Pic::gic.cpu(cpu)->alloc(&remote_rq_ipi, Ipi::Request));
- check(Pic::gic.cpu(cpu)->alloc(&glbl_remote_rq_ipi, Ipi::Global_request));
- check(Pic::gic.cpu(cpu)->alloc(&debug_ipi, Ipi::Debug));
- check(Pic::gic.cpu(cpu)->alloc(&timer_ipi, Ipi::Timer));
+ if (!resume)
+ {
+ check(Pic::gic.cpu(cpu)->alloc(&remote_rq_ipi, Ipi::Request));
+ check(Pic::gic.cpu(cpu)->alloc(&glbl_remote_rq_ipi, Ipi::Global_request));
+ check(Pic::gic.cpu(cpu)->alloc(&debug_ipi, Ipi::Debug));
+ check(Pic::gic.cpu(cpu)->alloc(&timer_ipi, Ipi::Timer));
+ }
}
Thread_remote_rq_irq remote_rq_ipi;
DEFINE_PER_CPU static Per_cpu<Static_object<Arm_ipis> > _arm_ipis;
-IMPLEMENT
+IMPLEMENT_OVERRIDE
void
-Thread::init_per_cpu(Cpu_number cpu)
+Thread::init_per_cpu(Cpu_number cpu, bool resume)
{
- _arm_ipis.cpu(cpu).construct(cpu);
+ _arm_ipis.cpu(cpu).construct(cpu, resume);
}