diff options
Diffstat (limited to 'kern')
-rw-r--r-- | kern/kernel.c | 13 | ||||
-rw-r--r-- | kern/kernel.h | 7 |
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 */ |