diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2007-12-20 23:39:21 -0500 |
---|---|---|
committer | Josh Boyer <jwboyer@linux.vnet.ibm.com> | 2007-12-23 14:11:59 -0500 |
commit | 47c0bd1ae24c34e851cf0f2b02ef2a6847d7ae15 (patch) | |
tree | 86fab68618a4afa03660cc576c9e7da3e5a0b520 /arch/powerpc/kernel/cpu_setup_44x.S | |
parent | c2a7dcad9f0d92d7a96e735abb8bec7b9c621536 (diff) |
[POWERPC] Reworking machine check handling and Fix 440/440A
This adds a cputable function pointer for the CPU-side machine
check handling. The semantic is still the same as the old one,
the one in ppc_md. overrides the one in cputable, though
ultimately we'll want to change that so the CPU gets first.
This removes CONFIG_440A which was a problem for multiplatform
kernels and instead fixes up the IVOR at runtime from a setup_cpu
function. The "A" version of the machine check also tweaks the
regs->trap value to differenciate the 2 versions at the C level.
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
Diffstat (limited to 'arch/powerpc/kernel/cpu_setup_44x.S')
-rw-r--r-- | arch/powerpc/kernel/cpu_setup_44x.S | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/cpu_setup_44x.S b/arch/powerpc/kernel/cpu_setup_44x.S index 8e1812e2f3ee..0de3edbd4bb8 100644 --- a/arch/powerpc/kernel/cpu_setup_44x.S +++ b/arch/powerpc/kernel/cpu_setup_44x.S | |||
@@ -23,11 +23,20 @@ _GLOBAL(__setup_cpu_440epx) | |||
23 | mflr r4 | 23 | mflr r4 |
24 | bl __init_fpu_44x | 24 | bl __init_fpu_44x |
25 | bl __plb_disable_wrp | 25 | bl __plb_disable_wrp |
26 | bl __fixup_440A_mcheck | ||
26 | mtlr r4 | 27 | mtlr r4 |
27 | blr | 28 | blr |
28 | _GLOBAL(__setup_cpu_440grx) | 29 | _GLOBAL(__setup_cpu_440grx) |
29 | b __plb_disable_wrp | 30 | b __plb_disable_wrp |
31 | _GLOBAL(__setup_cpu_440gx) | ||
32 | _GLOBAL(__setup_cpu_440spe) | ||
33 | b __fixup_440A_mcheck | ||
30 | 34 | ||
35 | /* Temporary fixup for arch/ppc until we kill the whole thing */ | ||
36 | #ifndef CONFIG_PPC_MERGE | ||
37 | _GLOBAL(__fixup_440A_mcheck) | ||
38 | blr | ||
39 | #endif | ||
31 | 40 | ||
32 | /* enable APU between CPU and FPU */ | 41 | /* enable APU between CPU and FPU */ |
33 | _GLOBAL(__init_fpu_44x) | 42 | _GLOBAL(__init_fpu_44x) |