summaryrefslogtreecommitdiff
path: root/kern
diff options
context:
space:
mode:
Diffstat (limited to 'kern')
-rw-r--r--kern/kernel.c13
-rw-r--r--kern/kernel.h7
2 files changed, 20 insertions, 0 deletions
diff --git a/kern/kernel.c b/kern/kernel.c
index 9e7f0435..70cc8c71 100644
--- a/kern/kernel.c
+++ b/kern/kernel.c
@@ -37,6 +37,8 @@ kernel_main(void)
struct thread *thread;
int error;
+ assert(!cpu_intr_enabled());
+
task_setup();
thread_setup();
cpu_mp_setup();
@@ -50,3 +52,14 @@ kernel_main(void)
/* Never reached */
}
+
+void __init
+kernel_ap_main(void)
+{
+ assert(cpu_intr_enabled());
+
+ for (;;)
+ cpu_idle();
+
+ /* Never reached */
+}
diff --git a/kern/kernel.h b/kern/kernel.h
index 2505541d..22d5714b 100644
--- a/kern/kernel.h
+++ b/kern/kernel.h
@@ -29,4 +29,11 @@
*/
void kernel_main(void);
+/*
+ * Entry point for APs.
+ *
+ * Interrupts must be enabled when calling this function.
+ */
+void kernel_ap_main(void);
+
#endif /* _KERN_KERNEL_H */