diff options
author | Patrick Williams <iawillia@us.ibm.com> | 2010-06-03 16:37:47 -0500 |
---|---|---|
committer | Patrick Williams <iawillia@us.ibm.com> | 2010-06-03 16:37:47 -0500 |
commit | 278f85151d8b34ea14920371564a3b81acf3a43c (patch) | |
tree | 3d0f0b4c996cff0f81df31b402200fade221db9e /src/include | |
parent | 5ca625e2e6882201ced9a97d8f4128a0dea27ef4 (diff) | |
download | talos-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.H | 2 | ||||
-rw-r--r-- | src/include/kernel/ppcconsts.S | 45 | ||||
-rw-r--r-- | src/include/kernel/task.H | 1 |
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; }; |