diff options
author | Keith Owens <kaos@sgi.com> | 2005-09-11 03:22:53 -0400 |
---|---|---|
committer | Tony Luck <tony.luck@intel.com> | 2005-09-11 17:08:41 -0400 |
commit | 7f613c7d2203ae137d98fc1c38abc30fd7048637 (patch) | |
tree | d8155a5cca33e4fe178625396886fcbb81f39e7a /arch/ia64/kernel/asm-offsets.c | |
parent | 289d773ee89ea80dcc364ef97d1be7ad1817387e (diff) |
[PATCH] MCA/INIT: use per cpu stacks
The bulk of the change. Use per cpu MCA/INIT stacks. Change the SAL
to OS state (sos) to be per process. Do all the assembler work on the
MCA/INIT stacks, leaving the original stack alone. Pass per cpu state
data to the C handlers for MCA and INIT, which also means changing the
mca_drv interfaces slightly. Lots of verification on whether the
original stack is usable before converting it to a sleeping process.
Signed-off-by: Keith Owens <kaos@sgi.com>
Signed-off-by: Tony Luck <tony.luck@intel.com>
Diffstat (limited to 'arch/ia64/kernel/asm-offsets.c')
-rw-r--r-- | arch/ia64/kernel/asm-offsets.c | 40 |
1 files changed, 32 insertions, 8 deletions
diff --git a/arch/ia64/kernel/asm-offsets.c b/arch/ia64/kernel/asm-offsets.c index 7d1ae2982c53..f6a234289341 100644 --- a/arch/ia64/kernel/asm-offsets.c +++ b/arch/ia64/kernel/asm-offsets.c | |||
@@ -211,17 +211,41 @@ void foo(void) | |||
211 | #endif | 211 | #endif |
212 | 212 | ||
213 | BLANK(); | 213 | BLANK(); |
214 | DEFINE(IA64_MCA_CPU_PROC_STATE_DUMP_OFFSET, | 214 | DEFINE(IA64_MCA_CPU_MCA_STACK_OFFSET, |
215 | offsetof (struct ia64_mca_cpu, proc_state_dump)); | 215 | offsetof (struct ia64_mca_cpu, mca_stack)); |
216 | DEFINE(IA64_MCA_CPU_STACK_OFFSET, | ||
217 | offsetof (struct ia64_mca_cpu, stack)); | ||
218 | DEFINE(IA64_MCA_CPU_STACKFRAME_OFFSET, | ||
219 | offsetof (struct ia64_mca_cpu, stackframe)); | ||
220 | DEFINE(IA64_MCA_CPU_RBSTORE_OFFSET, | ||
221 | offsetof (struct ia64_mca_cpu, rbstore)); | ||
222 | DEFINE(IA64_MCA_CPU_INIT_STACK_OFFSET, | 216 | DEFINE(IA64_MCA_CPU_INIT_STACK_OFFSET, |
223 | offsetof (struct ia64_mca_cpu, init_stack)); | 217 | offsetof (struct ia64_mca_cpu, init_stack)); |
224 | BLANK(); | 218 | BLANK(); |
219 | DEFINE(IA64_SAL_OS_STATE_COMMON_OFFSET, | ||
220 | offsetof (struct ia64_sal_os_state, sal_ra)); | ||
221 | DEFINE(IA64_SAL_OS_STATE_OS_GP_OFFSET, | ||
222 | offsetof (struct ia64_sal_os_state, os_gp)); | ||
223 | DEFINE(IA64_SAL_OS_STATE_PAL_MIN_STATE_OFFSET, | ||
224 | offsetof (struct ia64_sal_os_state, pal_min_state)); | ||
225 | DEFINE(IA64_SAL_OS_STATE_PROC_STATE_PARAM_OFFSET, | ||
226 | offsetof (struct ia64_sal_os_state, proc_state_param)); | ||
227 | DEFINE(IA64_SAL_OS_STATE_SIZE, | ||
228 | sizeof (struct ia64_sal_os_state)); | ||
229 | DEFINE(IA64_PMSA_GR_OFFSET, | ||
230 | offsetof (struct pal_min_state_area_s, pmsa_gr)); | ||
231 | DEFINE(IA64_PMSA_BANK1_GR_OFFSET, | ||
232 | offsetof (struct pal_min_state_area_s, pmsa_bank1_gr)); | ||
233 | DEFINE(IA64_PMSA_PR_OFFSET, | ||
234 | offsetof (struct pal_min_state_area_s, pmsa_pr)); | ||
235 | DEFINE(IA64_PMSA_BR0_OFFSET, | ||
236 | offsetof (struct pal_min_state_area_s, pmsa_br0)); | ||
237 | DEFINE(IA64_PMSA_RSC_OFFSET, | ||
238 | offsetof (struct pal_min_state_area_s, pmsa_rsc)); | ||
239 | DEFINE(IA64_PMSA_IIP_OFFSET, | ||
240 | offsetof (struct pal_min_state_area_s, pmsa_iip)); | ||
241 | DEFINE(IA64_PMSA_IPSR_OFFSET, | ||
242 | offsetof (struct pal_min_state_area_s, pmsa_ipsr)); | ||
243 | DEFINE(IA64_PMSA_IFS_OFFSET, | ||
244 | offsetof (struct pal_min_state_area_s, pmsa_ifs)); | ||
245 | DEFINE(IA64_PMSA_XIP_OFFSET, | ||
246 | offsetof (struct pal_min_state_area_s, pmsa_xip)); | ||
247 | BLANK(); | ||
248 | |||
225 | /* used by fsys_gettimeofday in arch/ia64/kernel/fsys.S */ | 249 | /* used by fsys_gettimeofday in arch/ia64/kernel/fsys.S */ |
226 | DEFINE(IA64_TIME_INTERPOLATOR_ADDRESS_OFFSET, offsetof (struct time_interpolator, addr)); | 250 | DEFINE(IA64_TIME_INTERPOLATOR_ADDRESS_OFFSET, offsetof (struct time_interpolator, addr)); |
227 | DEFINE(IA64_TIME_INTERPOLATOR_SOURCE_OFFSET, offsetof (struct time_interpolator, source)); | 251 | DEFINE(IA64_TIME_INTERPOLATOR_SOURCE_OFFSET, offsetof (struct time_interpolator, source)); |