diff options
Diffstat (limited to 'arch/arm/kernel')
| -rw-r--r-- | arch/arm/kernel/setup.c | 70 | ||||
| -rw-r--r-- | arch/arm/kernel/smp.c | 1 | 
2 files changed, 36 insertions, 35 deletions
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index d15f1c503f3..f739fb1d217 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -843,12 +843,9 @@ static const char *hwcap_str[] = {  static int c_show(struct seq_file *m, void *v)  { -	int i; - -	seq_printf(m, "Processor\t: %s rev %d (%s)\n", -		   cpu_name, read_cpuid_id() & 15, elf_platform); +	int i, j; +	u32 cpuid; -#if defined(CONFIG_SMP)  	for_each_online_cpu(i) {  		/*  		 * glibc reads /proc/cpuinfo to determine the number of @@ -856,45 +853,48 @@ static int c_show(struct seq_file *m, void *v)  		 * "processor".  Give glibc what it expects.  		 */  		seq_printf(m, "processor\t: %d\n", i); -		seq_printf(m, "BogoMIPS\t: %lu.%02lu\n\n", +		cpuid = is_smp() ? per_cpu(cpu_data, i).cpuid : read_cpuid_id(); +		seq_printf(m, "model name\t: %s rev %d (%s)\n", +			   cpu_name, cpuid & 15, elf_platform); + +#if defined(CONFIG_SMP) +		seq_printf(m, "BogoMIPS\t: %lu.%02lu\n",  			   per_cpu(cpu_data, i).loops_per_jiffy / (500000UL/HZ),  			   (per_cpu(cpu_data, i).loops_per_jiffy / (5000UL/HZ)) % 100); -	} -#else /* CONFIG_SMP */ -	seq_printf(m, "BogoMIPS\t: %lu.%02lu\n", -		   loops_per_jiffy / (500000/HZ), -		   (loops_per_jiffy / (5000/HZ)) % 100); +#else +		seq_printf(m, "BogoMIPS\t: %lu.%02lu\n", +			   loops_per_jiffy / (500000/HZ), +			   (loops_per_jiffy / (5000/HZ)) % 100);  #endif +		/* dump out the processor features */ +		seq_puts(m, "Features\t: "); -	/* dump out the processor features */ -	seq_puts(m, "Features\t: "); - -	for (i = 0; hwcap_str[i]; i++) -		if (elf_hwcap & (1 << i)) -			seq_printf(m, "%s ", hwcap_str[i]); +		for (j = 0; hwcap_str[j]; j++) +			if (elf_hwcap & (1 << j)) +				seq_printf(m, "%s ", hwcap_str[j]); -	seq_printf(m, "\nCPU implementer\t: 0x%02x\n", read_cpuid_id() >> 24); -	seq_printf(m, "CPU architecture: %s\n", proc_arch[cpu_architecture()]); +		seq_printf(m, "\nCPU implementer\t: 0x%02x\n", cpuid >> 24); +		seq_printf(m, "CPU architecture: %s\n", +			   proc_arch[cpu_architecture()]); -	if ((read_cpuid_id() & 0x0008f000) == 0x00000000) { -		/* pre-ARM7 */ -		seq_printf(m, "CPU part\t: %07x\n", read_cpuid_id() >> 4); -	} else { -		if ((read_cpuid_id() & 0x0008f000) == 0x00007000) { -			/* ARM7 */ -			seq_printf(m, "CPU variant\t: 0x%02x\n", -				   (read_cpuid_id() >> 16) & 127); +		if ((cpuid & 0x0008f000) == 0x00000000) { +			/* pre-ARM7 */ +			seq_printf(m, "CPU part\t: %07x\n", cpuid >> 4);  		} else { -			/* post-ARM7 */ -			seq_printf(m, "CPU variant\t: 0x%x\n", -				   (read_cpuid_id() >> 20) & 15); +			if ((cpuid & 0x0008f000) == 0x00007000) { +				/* ARM7 */ +				seq_printf(m, "CPU variant\t: 0x%02x\n", +					   (cpuid >> 16) & 127); +			} else { +				/* post-ARM7 */ +				seq_printf(m, "CPU variant\t: 0x%x\n", +					   (cpuid >> 20) & 15); +			} +			seq_printf(m, "CPU part\t: 0x%03x\n", +				   (cpuid >> 4) & 0xfff);  		} -		seq_printf(m, "CPU part\t: 0x%03x\n", -			   (read_cpuid_id() >> 4) & 0xfff); +		seq_printf(m, "CPU revision\t: %d\n\n", cpuid & 15);  	} -	seq_printf(m, "CPU revision\t: %d\n", read_cpuid_id() & 15); - -	seq_puts(m, "\n");  	seq_printf(m, "Hardware\t: %s\n", machine_name);  	seq_printf(m, "Revision\t: %04x\n", system_rev); diff --git a/arch/arm/kernel/smp.c b/arch/arm/kernel/smp.c index fbc8b2623d8..7eacd84cdc9 100644 --- a/arch/arm/kernel/smp.c +++ b/arch/arm/kernel/smp.c @@ -281,6 +281,7 @@ static void __cpuinit smp_store_cpu_info(unsigned int cpuid)  	struct cpuinfo_arm *cpu_info = &per_cpu(cpu_data, cpuid);  	cpu_info->loops_per_jiffy = loops_per_jiffy; +	cpu_info->cpuid = read_cpuid_id();  	store_cpu_topology(cpuid);  }  |