diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2008-11-11 11:02:43 -0500 |
---|---|---|
committer | Josh Boyer <jwboyer@linux.vnet.ibm.com> | 2008-11-13 10:11:26 -0500 |
commit | 6612d9b0b8208c2ade3a16b8302a271ec81d45f6 (patch) | |
tree | 8c5ae9d31853b147fe90ac8df8e48ca215e38061 /arch/powerpc/kernel | |
parent | 5907630ffc2b2d133de2db18963ee5a6c5af7878 (diff) |
powerpc/44x: Fix 460EX/460GT machine check handling
Those cores use the 440A type machine check (ie, they have
MCSRR0/MCSRR1). They thus need to call the appropriate fixup
function to hook the right variant of the exception.
Without this, all machine checks become fatal due to loss
of context when entering the exception handler.
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')
-rw-r--r-- | arch/powerpc/kernel/cpu_setup_44x.S | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/arch/powerpc/kernel/cpu_setup_44x.S b/arch/powerpc/kernel/cpu_setup_44x.S index 80cac984d85d..31c18b52affb 100644 --- a/arch/powerpc/kernel/cpu_setup_44x.S +++ b/arch/powerpc/kernel/cpu_setup_44x.S | |||
@@ -34,7 +34,12 @@ _GLOBAL(__setup_cpu_440grx) | |||
34 | blr | 34 | blr |
35 | _GLOBAL(__setup_cpu_460ex) | 35 | _GLOBAL(__setup_cpu_460ex) |
36 | _GLOBAL(__setup_cpu_460gt) | 36 | _GLOBAL(__setup_cpu_460gt) |
37 | b __init_fpu_44x | 37 | mflr r4 |
38 | bl __init_fpu_44x | ||
39 | bl __fixup_440A_mcheck | ||
40 | mtlr r4 | ||
41 | blr | ||
42 | |||
38 | _GLOBAL(__setup_cpu_440gx) | 43 | _GLOBAL(__setup_cpu_440gx) |
39 | _GLOBAL(__setup_cpu_440spe) | 44 | _GLOBAL(__setup_cpu_440spe) |
40 | b __fixup_440A_mcheck | 45 | b __fixup_440A_mcheck |