summaryrefslogtreecommitdiffstats
path: root/src/kernel/scheduler.C
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2010-07-07 17:24:25 -0500
committerPatrick Williams <iawillia@us.ibm.com>2010-07-07 17:24:25 -0500
commit2c2101232adf2b134cf408f05f00a21dc5b8b0f3 (patch)
treea9710129f768bce446b05cab9dac44c9846bb39b /src/kernel/scheduler.C
parentce785ea353070d14462e3c3395bf89d47c896461 (diff)
downloadtalos-hostboot-2c2101232adf2b134cf408f05f00a21dc5b8b0f3.tar.gz
talos-hostboot-2c2101232adf2b134cf408f05f00a21dc5b8b0f3.zip
SMT support.
Diffstat (limited to 'src/kernel/scheduler.C')
-rw-r--r--src/kernel/scheduler.C10
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);
OpenPOWER on IntegriCloud