diff options
author | Kumar Gala <galak@kernel.crashing.org> | 2008-04-28 02:21:22 -0400 |
---|---|---|
committer | Paul Mackerras <paulus@samba.org> | 2008-04-29 01:57:34 -0400 |
commit | 85218827cc4ca900867807f19345418164ffc108 (patch) | |
tree | 1813b7fadb7c077acd0ef62f57385b7424ca0121 /arch/powerpc/kernel/asm-offsets.c | |
parent | dd18434ff0b7d9b9ad3d596985fc84b329d2f9a8 (diff) |
[POWERPC] Add IRQSTACKS support on ppc32
This makes it possible to use separate stacks for hard and soft IRQs
on 32-bit powerpc as well as on 64-bit. The code for 32-bit is just
the 32-bit analog of the 64-bit code.
* Added allocation and initialization of the irq stacks. We limit the
stacks to be in lowmem for ppc32.
* Implemented ppc32 versions of call_do_softirq() and call_handle_irq()
to switch the stack pointers
* Reworked how we do stack overflow detection. We now keep around the
limit of the stack in the thread_struct and compare against the limit
to see if we've overflowed. We can now use this on ppc64 if desired.
[ paulus@samba.org: Fixed bug on 6xx where we need to reload r9 with the
thread_info pointer. ]
Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
Signed-off-by: Paul Mackerras <paulus@samba.org>
Diffstat (limited to 'arch/powerpc/kernel/asm-offsets.c')
-rw-r--r-- | arch/powerpc/kernel/asm-offsets.c | 1 |
1 files changed, 1 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/asm-offsets.c b/arch/powerpc/kernel/asm-offsets.c index 62134845af08..af1d2c894ee1 100644 --- a/arch/powerpc/kernel/asm-offsets.c +++ b/arch/powerpc/kernel/asm-offsets.c | |||
@@ -67,6 +67,7 @@ int main(void) | |||
67 | #endif /* CONFIG_PPC64 */ | 67 | #endif /* CONFIG_PPC64 */ |
68 | 68 | ||
69 | DEFINE(KSP, offsetof(struct thread_struct, ksp)); | 69 | DEFINE(KSP, offsetof(struct thread_struct, ksp)); |
70 | DEFINE(KSP_LIMIT, offsetof(struct thread_struct, ksp_limit)); | ||
70 | DEFINE(PT_REGS, offsetof(struct thread_struct, regs)); | 71 | DEFINE(PT_REGS, offsetof(struct thread_struct, regs)); |
71 | DEFINE(THREAD_FPEXC_MODE, offsetof(struct thread_struct, fpexc_mode)); | 72 | DEFINE(THREAD_FPEXC_MODE, offsetof(struct thread_struct, fpexc_mode)); |
72 | DEFINE(THREAD_FPR0, offsetof(struct thread_struct, fpr[0])); | 73 | DEFINE(THREAD_FPR0, offsetof(struct thread_struct, fpr[0])); |