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/scheduler.C | |
parent | ce785ea353070d14462e3c3395bf89d47c896461 (diff) | |
download | talos-hostboot-2c2101232adf2b134cf408f05f00a21dc5b8b0f3.tar.gz talos-hostboot-2c2101232adf2b134cf408f05f00a21dc5b8b0f3.zip |
SMT support.
Diffstat (limited to 'src/kernel/scheduler.C')
-rw-r--r-- | src/kernel/scheduler.C | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/kernel/scheduler.C b/src/kernel/scheduler.C index c7c26448c..36acd20b4 100644 --- a/src/kernel/scheduler.C +++ b/src/kernel/scheduler.C @@ -1,10 +1,13 @@ #include <kernel/task.H> #include <kernel/scheduler.H> #include <kernel/taskmgr.H> +#include <kernel/cpu.H> +#include <kernel/cpumgr.H> +#include <kernel/console.H> void Scheduler::addTask(task_t* t) { - if (iv_idleTask != t) + if (t->cpu->idle_task != t) { iv_taskList.insert(t); } @@ -21,7 +24,10 @@ void Scheduler::setNextRunnable() if (NULL == t) { - t = iv_idleTask; + t = CpuManager::getCurrentCPU()->idle_task; + // Set short decrementer. + register uint64_t decrementer = 0x000f0000; + asm volatile("mtdec %0" :: "r"(decrementer)); } TaskManager::setCurrentTask(t); |