diff options
| author | Patrick Williams <iawillia@us.ibm.com> | 2010-07-07 17:24:25 -0500 |
|---|---|---|
| committer | Patrick Williams <iawillia@us.ibm.com> | 2010-07-07 17:24:25 -0500 |
| commit | 2c2101232adf2b134cf408f05f00a21dc5b8b0f3 (patch) | |
| tree | a9710129f768bce446b05cab9dac44c9846bb39b /src/kernel/kernel.C | |
| parent | ce785ea353070d14462e3c3395bf89d47c896461 (diff) | |
| download | blackbird-hostboot-2c2101232adf2b134cf408f05f00a21dc5b8b0f3.tar.gz blackbird-hostboot-2c2101232adf2b134cf408f05f00a21dc5b8b0f3.zip | |
SMT support.
Diffstat (limited to 'src/kernel/kernel.C')
| -rw-r--r-- | src/kernel/kernel.C | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/kernel/kernel.C b/src/kernel/kernel.C index 00f3002e5..7b119d232 100644 --- a/src/kernel/kernel.C +++ b/src/kernel/kernel.C @@ -14,6 +14,7 @@ extern "C" void kernel_dispatch_task(); extern void init_main(void* unused); +extern uint64_t kernel_other_thread_spinlock; class Kernel { @@ -27,6 +28,7 @@ class Kernel Kernel() {}; }; +extern "C" int main() { printk("Booting %s kernel...\n\n", "Chenoo"); @@ -37,12 +39,25 @@ int main() kernel.cpuBootstrap(); kernel.inittaskBootstrap(); + + // Ready to let the other CPUs go. + kernel_other_thread_spinlock = 1; kernel_dispatch_task(); // no return. while(1); return 0; } +extern "C" +int smp_slave_main(cpu_t* cpu) +{ + CpuManager::init_slave_smp(cpu); + VmmManager::init_slb(); + cpu->scheduler->setNextRunnable(); + kernel_dispatch_task(); + return 0; +} + void Kernel::cppBootstrap() { // Call default constructors for any static objects. @@ -73,6 +88,5 @@ void Kernel::inittaskBootstrap() task_t * t = TaskManager::createTask(&init_main, NULL); t->cpu = CpuManager::getCurrentCPU(); TaskManager::setCurrentTask(t); - } |

