From 5ddd25df980a68e4c16725f5d8b75a61524ba8f1 Mon Sep 17 00:00:00 2001 From: Taku Shimosawa Date: Fri, 4 Nov 2011 01:56:45 +0900 Subject: [PATCH] AP booting added --- kernel/ap.c | 43 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 kernel/ap.c diff --git a/kernel/ap.c b/kernel/ap.c new file mode 100644 index 00000000..945d486d --- /dev/null +++ b/kernel/ap.c @@ -0,0 +1,43 @@ +#include +#include +#include +#include +#include + +void ap_idle(void) +{ + int id = aal_mc_get_hardware_processor_id(); + + kprintf(" %d", id); + while (1) { + cpu_halt(); + } +} + +void ap_init(void) +{ + struct aal_mc_cpu_info *cpu_info; + int i; + int bsp_hw_id; + + aal_mc_init_ap(); + + cpu_info = aal_mc_get_cpu_info(); + bsp_hw_id = aal_mc_get_hardware_processor_id(); + + /* If no information exists, UP mode */ + if (!cpu_info) { + return; + } + + kprintf("BSP HW ID = %d\n", bsp_hw_id); + kprintf("AP Booting :"); + for (i = 0; i < cpu_info->ncpus; i++) { + if (cpu_info->hw_ids[i] == bsp_hw_id) { + continue; + } + aal_mc_boot_cpu(cpu_info->hw_ids[i], (unsigned long)ap_idle); + } + kprintf(" .. Done\n"); +} +