diff options
author | Josh Boyer <jwboyer@linux.vnet.ibm.com> | 2007-11-16 18:29:56 +0100 |
---|---|---|
committer | Josh Boyer <jwboyer@linux.vnet.ibm.com> | 2007-11-19 15:22:20 +0100 |
commit | 3d1d662ef423adf6947a37e230f4d7e8ed7c9544 (patch) | |
tree | a94fc24a021377e4b654101caa6104470405966d /arch/ppc/kernel | |
parent | [POWERPC] 4xx: UIC add mask_ack callback (diff) | |
download | linux-3d1d662ef423adf6947a37e230f4d7e8ed7c9544.tar.xz linux-3d1d662ef423adf6947a37e230f4d7e8ed7c9544.zip |
[POWERPC] 4xx: Use virtual PVR value to init FPU on arch/ppc 440EP
This fixes arch/ppc 440EP platforms to setup the FPU correctly. A virtual
PVR is used, as 440GR platforms share an identical hardware PVR value and do
not have an FPU.
Signed-off-by: Josh Boyer <jwboyer@linux.vnet.ibm.com>
Diffstat (limited to 'arch/ppc/kernel')
-rw-r--r-- | arch/ppc/kernel/setup.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/arch/ppc/kernel/setup.c b/arch/ppc/kernel/setup.c index aac88c2f3db9..5255bd80aa6b 100644 --- a/arch/ppc/kernel/setup.c +++ b/arch/ppc/kernel/setup.c @@ -312,7 +312,14 @@ early_init(int r3, int r4, int r5) * Identify the CPU type and fix up code sections * that depend on which cpu we have. */ +#if defined(CONFIG_440EP) && defined(CONFIG_PPC_FPU) + /* We pass the virtual PVR here for 440EP as 440EP and 440GR have + * identical PVRs and there is no reliable way to check for the FPU + */ + spec = identify_cpu(offset, (mfspr(SPRN_PVR) | 0x8)); +#else spec = identify_cpu(offset, mfspr(SPRN_PVR)); +#endif do_feature_fixups(spec->cpu_features, PTRRELOC(&__start___ftr_fixup), PTRRELOC(&__stop___ftr_fixup)); |