summaryrefslogtreecommitdiffstats
path: root/src/include
diff options
context:
space:
mode:
authorPatrick Williams <iawillia@us.ibm.com>2010-06-03 16:37:47 -0500
committerPatrick Williams <iawillia@us.ibm.com>2010-06-03 16:37:47 -0500
commit278f85151d8b34ea14920371564a3b81acf3a43c (patch)
tree3d0f0b4c996cff0f81df31b402200fade221db9e /src/include
parent5ca625e2e6882201ced9a97d8f4128a0dea27ef4 (diff)
downloadtalos-hostboot-278f85151d8b34ea14920371564a3b81acf3a43c.tar.gz
talos-hostboot-278f85151d8b34ea14920371564a3b81acf3a43c.zip
Implement task saving and dispatching.
Diffstat (limited to 'src/include')
-rw-r--r--src/include/kernel/cpu.H2
-rw-r--r--src/include/kernel/ppcconsts.S45
-rw-r--r--src/include/kernel/task.H1
3 files changed, 47 insertions, 1 deletions
diff --git a/src/include/kernel/cpu.H b/src/include/kernel/cpu.H
index 6dd513b2c..2e5a489d9 100644
--- a/src/include/kernel/cpu.H
+++ b/src/include/kernel/cpu.H
@@ -7,10 +7,10 @@ class Scheduler;
struct cpu_t
{
+ void* kernel_stack;
cpuid_t cpu;
Scheduler* scheduler;
- void* kernel_stack;
};
#endif
diff --git a/src/include/kernel/ppcconsts.S b/src/include/kernel/ppcconsts.S
index c8346df59..450972026 100644
--- a/src/include/kernel/ppcconsts.S
+++ b/src/include/kernel/ppcconsts.S
@@ -122,3 +122,48 @@
.set HID0,1008
.set IABR,1010
+#*--------------------------------------------------------------------*#
+#* Task offset Constants *#
+#*--------------------------------------------------------------------*#
+
+.set TASK_CPUPTR, 0
+.set TASK_STACKPTR, TASK_CPUPTR+8
+.set TASK_NIP, TASK_STACKPTR+8
+.set TASK_GPR_0, TASK_NIP+8
+.set TASK_GPR_1, TASK_GPR_0+8
+.set TASK_GPR_2, TASK_GPR_1+8
+.set TASK_GPR_3, TASK_GPR_2+8
+.set TASK_GPR_4, TASK_GPR_3+8
+.set TASK_GPR_5, TASK_GPR_4+8
+.set TASK_GPR_6, TASK_GPR_5+8
+.set TASK_GPR_7, TASK_GPR_6+8
+.set TASK_GPR_8, TASK_GPR_7+8
+.set TASK_GPR_9, TASK_GPR_8+8
+.set TASK_GPR_10, TASK_GPR_9+8
+.set TASK_GPR_11, TASK_GPR_10+8
+.set TASK_GPR_12, TASK_GPR_11+8
+.set TASK_GPR_13, TASK_GPR_12+8
+.set TASK_GPR_14, TASK_GPR_13+8
+.set TASK_GPR_15, TASK_GPR_14+8
+.set TASK_GPR_16, TASK_GPR_15+8
+.set TASK_GPR_17, TASK_GPR_16+8
+.set TASK_GPR_18, TASK_GPR_17+8
+.set TASK_GPR_19, TASK_GPR_18+8
+.set TASK_GPR_20, TASK_GPR_19+8
+.set TASK_GPR_21, TASK_GPR_20+8
+.set TASK_GPR_22, TASK_GPR_21+8
+.set TASK_GPR_23, TASK_GPR_22+8
+.set TASK_GPR_24, TASK_GPR_23+8
+.set TASK_GPR_25, TASK_GPR_24+8
+.set TASK_GPR_26, TASK_GPR_25+8
+.set TASK_GPR_27, TASK_GPR_26+8
+.set TASK_GPR_28, TASK_GPR_27+8
+.set TASK_GPR_29, TASK_GPR_28+8
+.set TASK_GPR_30, TASK_GPR_29+8
+.set TASK_GPR_31, TASK_GPR_30+8
+.set TASK_LR, TASK_GPR_31+8
+.set TASK_CR, TASK_LR+8
+.set TASK_CTR, TASK_CR+8
+.set TASK_XER, TASK_CTR+8
+
+
diff --git a/src/include/kernel/task.H b/src/include/kernel/task.H
index c2ae51de1..d9256c365 100644
--- a/src/include/kernel/task.H
+++ b/src/include/kernel/task.H
@@ -9,6 +9,7 @@ struct context_t
void* nip;
uint64_t gprs[32];
uint64_t lr;
+ uint64_t cr;
uint64_t ctr;
uint64_t xer;
};
OpenPOWER on IntegriCloud