]> rtime.felk.cvut.cz Git - l4.git/blobdiff - kernel/fiasco/src/kern/arm/bsp/exynos/thread-arm-exynos.cpp
Update
[l4.git] / kernel / fiasco / src / kern / arm / bsp / exynos / thread-arm-exynos.cpp
index 0c1d0600131160d64081553af26a9fcf30f3bf13..d8949d25a8851f594715e0fdf28eebe549c6e273 100644 (file)
@@ -14,12 +14,15 @@ IMPLEMENTATION [mp && irregular_gic]:
 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;
@@ -30,9 +33,9 @@ public:
 
 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);
 }