]> rtime.felk.cvut.cz Git - l4.git/blobdiff - kernel/fiasco/src/kern/arm/bsp/realview/boot_mp-arm-realview.cpp
Inital import
[l4.git] / kernel / fiasco / src / kern / arm / bsp / realview / boot_mp-arm-realview.cpp
diff --git a/kernel/fiasco/src/kern/arm/bsp/realview/boot_mp-arm-realview.cpp b/kernel/fiasco/src/kern/arm/bsp/realview/boot_mp-arm-realview.cpp
new file mode 100644 (file)
index 0000000..7095fdb
--- /dev/null
@@ -0,0 +1,30 @@
+INTERFACE [arm && mp && realview]:
+
+#include "types.h"
+
+class Boot_mp
+{
+};
+
+IMPLEMENTATION [arm && mp && realview]:
+
+#include "io.h"
+#include "ipi.h"
+#include "platform.h"
+
+PUBLIC
+void
+Boot_mp::start_ap_cpus(Address phys_tramp_mp_addr)
+{
+  // set physical start address for AP CPUs
+  Platform::write(Platform::Sys::Flags_clr, 0xffffffff);
+  Platform::write(Platform::Sys::Flags, phys_tramp_mp_addr);
+
+  // wake up AP CPUs
+  Ipi::bcast(Ipi::Global_request);
+}
+
+PUBLIC
+void
+Boot_mp::cleanup()
+{}