sparc64: fix readout of cpu/fpu type

Meelis reported that on his box /proc/cpuinfo started
to reported "Unknow CPU" and the same did the boot messages.

It was a stupid bug I introduced when merging
cpu.c for 32 and 64 bit.

The code did an array reference where it had to search
for the right index.

Reported-by: Meelis Roos <mroos@linux.ee>
Tested-by: Meelis Roos <mroos@linux.ee>
Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Sam Ravnborg 2009-01-17 23:10:35 -08:00 committed by David S. Miller
parent f3b8436ad9
commit c275ce4492
1 changed files with 15 additions and 3 deletions

View File

@ -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) {