linux/arch/powerpc
Paul Mackerras 1977b50212 powerpc: Save register r9-r13 values accurately on interrupt with bad stack
When we take an interrupt or exception from kernel mode and the stack
pointer is obviously not a kernel address (i.e. the top bit is 0), we
switch to an emergency stack, save register values and panic.  However,
on 64-bit server machines, we don't actually save the values of r9 - r13
at the time of the interrupt, but rather values corrupted by the
exception entry code for r12-r13, and nothing at all for r9-r11.

This fixes it by passing a pointer to the register save area in the paca
through to the bad_stack code in r3.  The register values are saved in
one of the paca register save areas (depending on which exception this
is).  Using the pointer in r3, the bad_stack code now retrieves the
saved values of r9 - r13 and stores them in the exception frame on the
emergency stack.  This also stores the normal exception frame marker
("regshere") in the exception frame.

Signed-off-by: Paul Mackerras <paulus@samba.org>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
2011-05-04 15:19:27 +10:00
..
boot powerpc/boot: Add an ePAPR compliant boot wrapper 2011-04-20 16:59:21 +10:00
configs powerpc: Fix build warning of the defconfigs 2011-04-27 14:18:41 +10:00
include/asm powerpc: Save register r9-r13 values accurately on interrupt with bad stack 2011-05-04 15:19:27 +10:00
kernel powerpc: Save register r9-r13 values accurately on interrupt with bad stack 2011-05-04 15:19:27 +10:00
kvm powerpc: Always use SPRN_SPRG_HSCRATCH0 when running in HV mode 2011-04-20 11:03:23 +10:00
lib powerpc: Use MSR_64BIT in sstep.c, fix kprobes on BOOK3E 2011-04-27 14:18:46 +10:00
math-emu powerpc/85xx: Fix SPE float to integer conversion failure 2011-03-15 13:48:15 -05:00
mm powerpc: Add Initiate Coprocessor Store Word (icswx) support 2011-05-04 15:19:26 +10:00
oprofile Fix common misspellings 2011-03-31 11:26:23 -03:00
platforms powerpc: Add Initiate Coprocessor Store Word (icswx) support 2011-05-04 15:19:26 +10:00
sysdev powerpc/irq: Stop exporting irq_map 2011-05-04 15:02:15 +10:00
xmon powerpc: Free up some CPU feature bits by moving out MMU-related features 2011-04-27 14:18:52 +10:00
Kconfig powerpc/boot: Add an ePAPR compliant boot wrapper 2011-04-20 16:59:21 +10:00
Kconfig.debug powerpc: Unconditionally enabled irq stacks 2010-06-15 15:02:37 +10:00
Makefile powerpc: Fix typo in uImage target 2010-08-24 15:26:32 +10:00
relocs_check.pl powerpc: Check for unsupported relocs when using CONFIG_RELOCATABLE 2009-09-24 15:31:40 +10:00