summaryrefslogtreecommitdiffstats
path: root/arch/sparc/kernel/cpu.c
diff options
context:
space:
mode:
authorTakashi Iwai <tiwai@suse.de>2009-02-09 17:20:13 +0100
committerTakashi Iwai <tiwai@suse.de>2009-02-09 17:20:13 +0100
commitd9f8e9c34150ebec2be07bb95b6a23d99ba1f6de (patch)
tree1e8c402df9b1154f4ca37eb5242f960ef7aab747 /arch/sparc/kernel/cpu.c
parent2ebfb8eeb8f244f9d25937d31a947895cf819e26 (diff)
parent8bd4bb7a35e8ebb015a531218614c48e10a3c4ee (diff)
downloadkernel-crypto-d9f8e9c34150ebec2be07bb95b6a23d99ba1f6de.tar.gz
kernel-crypto-d9f8e9c34150ebec2be07bb95b6a23d99ba1f6de.tar.xz
kernel-crypto-d9f8e9c34150ebec2be07bb95b6a23d99ba1f6de.zip
Merge branch 'topic/quirk-cleanup' into topic/misc
Diffstat (limited to 'arch/sparc/kernel/cpu.c')
-rw-r--r--arch/sparc/kernel/cpu.c18
1 files changed, 15 insertions, 3 deletions
diff --git a/arch/sparc/kernel/cpu.c b/arch/sparc/kernel/cpu.c
index f0b825505da..32d32b4824f 100644
--- a/arch/sparc/kernel/cpu.c
+++ b/arch/sparc/kernel/cpu.c
@@ -239,14 +239,26 @@ unsigned int fsr_storage;
static void set_cpu_and_fpu(int psr_impl, int psr_vers, int fpu_vers)
{
+ const struct manufacturer_info *manuf;
+ int i;
+
sparc_cpu_type = NULL;
sparc_fpu_type = NULL;
- if (psr_impl < ARRAY_SIZE(manufacturer_info))
+ manuf = NULL;
+
+ for (i = 0; i < ARRAY_SIZE(manufacturer_info); i++)
+ {
+ if (psr_impl == manufacturer_info[i].psr_impl) {
+ manuf = &manufacturer_info[i];
+ break;
+ }
+ }
+ if (manuf != NULL)
{
const struct cpu_info *cpu;
const struct fpu_info *fpu;
- cpu = &manufacturer_info[psr_impl].cpu_info[0];
+ cpu = &manuf->cpu_info[0];
while (cpu->psr_vers != -1)
{
if (cpu->psr_vers == psr_vers) {
@@ -256,7 +268,7 @@ static void set_cpu_and_fpu(int psr_impl, int psr_vers, int fpu_vers)
}
cpu++;
}
- fpu = &manufacturer_info[psr_impl].fpu_info[0];
+ fpu = &manuf->fpu_info[0];
while (fpu->fp_vers != -1)
{
if (fpu->fp_vers == fpu_vers) {