diff options
author | Keith Owens <kaos@sgi.com> | 2005-09-22 18:49:15 +1000 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2005-09-22 13:24:19 -0700 |
commit | 20bb86852a6b7d9ca8c48ff921ff3904038959cf (patch) | |
tree | 7db40dee86256b322a1036a6187db2e189e0bd0a /include/asm-ia64 | |
parent | 83a78d9ba792660418d692fd6737871aefdbff36 (diff) | |
download | op-kernel-dev-20bb86852a6b7d9ca8c48ff921ff3904038959cf.zip op-kernel-dev-20bb86852a6b7d9ca8c48ff921ff3904038959cf.tar.gz |
[IA64] Wire in the MCA/INIT handler stacks
Wire the MCA/INIT handler stacks into DTR[2] and track them in
IA64_KR(CURRENT_STACK). This gives the MCA/INIT handler stacks the
same TLB status as normal kernel stacks. Reload the old CURRENT_STACK
data on return from OS to SAL.
Signed-off-by: Keith Owens <kaos@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'include/asm-ia64')
-rw-r--r-- | include/asm-ia64/mca.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/include/asm-ia64/mca.h b/include/asm-ia64/mca.h index 97a28b8..c7d9c9e 100644 --- a/include/asm-ia64/mca.h +++ b/include/asm-ia64/mca.h @@ -80,7 +80,12 @@ struct ia64_sal_os_state { u64 sal_ra; /* Return address in SAL, physical */ u64 sal_gp; /* GP of the SAL - physical */ pal_min_state_area_t *pal_min_state; /* from R17. physical in asm, virtual in C */ + /* Previous values of IA64_KR(CURRENT) and IA64_KR(CURRENT_STACK). + * Note: if the MCA/INIT recovery code wants to resume to a new context + * then it must change these values to reflect the new kernel stack. + */ u64 prev_IA64_KR_CURRENT; /* previous value of IA64_KR(CURRENT) */ + u64 prev_IA64_KR_CURRENT_STACK; struct task_struct *prev_task; /* previous task, NULL if it is not useful */ /* Some interrupt registers are not saved in minstate, pt_regs or * switch_stack. Because MCA/INIT can occur when interrupts are |