diff options
| -rw-r--r-- | arch/arm/kernel/setup.c | 15 |
1 files changed, 9 insertions, 6 deletions
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index 2cab741ad0f8..c45d10d07bde 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
| @@ -205,7 +205,7 @@ static const char *proc_arch[] = { | |||
| 205 | "5TE", | 205 | "5TE", |
| 206 | "5TEJ", | 206 | "5TEJ", |
| 207 | "6TEJ", | 207 | "6TEJ", |
| 208 | "?(10)", | 208 | "7", |
| 209 | "?(11)", | 209 | "?(11)", |
| 210 | "?(12)", | 210 | "?(12)", |
| 211 | "?(13)", | 211 | "?(13)", |
| @@ -258,14 +258,17 @@ int cpu_architecture(void) | |||
| 258 | { | 258 | { |
| 259 | int cpu_arch; | 259 | int cpu_arch; |
| 260 | 260 | ||
| 261 | if ((processor_id & 0x0000f000) == 0) { | 261 | if ((processor_id & 0x0008f000) == 0) { |
| 262 | cpu_arch = CPU_ARCH_UNKNOWN; | 262 | cpu_arch = CPU_ARCH_UNKNOWN; |
| 263 | } else if ((processor_id & 0x0000f000) == 0x00007000) { | 263 | } else if ((processor_id & 0x0008f000) == 0x00007000) { |
| 264 | cpu_arch = (processor_id & (1 << 23)) ? CPU_ARCH_ARMv4T : CPU_ARCH_ARMv3; | 264 | cpu_arch = (processor_id & (1 << 23)) ? CPU_ARCH_ARMv4T : CPU_ARCH_ARMv3; |
| 265 | } else { | 265 | } else if ((processor_id & 0x00080000) == 0x00000000) { |
| 266 | cpu_arch = (processor_id >> 16) & 7; | 266 | cpu_arch = (processor_id >> 16) & 7; |
| 267 | if (cpu_arch) | 267 | if (cpu_arch) |
| 268 | cpu_arch += CPU_ARCH_ARMv3; | 268 | cpu_arch += CPU_ARCH_ARMv3; |
| 269 | } else { | ||
| 270 | /* the revised CPUID */ | ||
| 271 | cpu_arch = ((processor_id >> 12) & 0xf) - 0xb + CPU_ARCH_ARMv6; | ||
| 269 | } | 272 | } |
| 270 | 273 | ||
| 271 | return cpu_arch; | 274 | return cpu_arch; |
| @@ -863,11 +866,11 @@ static int c_show(struct seq_file *m, void *v) | |||
| 863 | seq_printf(m, "\nCPU implementer\t: 0x%02x\n", processor_id >> 24); | 866 | seq_printf(m, "\nCPU implementer\t: 0x%02x\n", processor_id >> 24); |
| 864 | seq_printf(m, "CPU architecture: %s\n", proc_arch[cpu_architecture()]); | 867 | seq_printf(m, "CPU architecture: %s\n", proc_arch[cpu_architecture()]); |
| 865 | 868 | ||
| 866 | if ((processor_id & 0x0000f000) == 0x00000000) { | 869 | if ((processor_id & 0x0008f000) == 0x00000000) { |
| 867 | /* pre-ARM7 */ | 870 | /* pre-ARM7 */ |
| 868 | seq_printf(m, "CPU part\t\t: %07x\n", processor_id >> 4); | 871 | seq_printf(m, "CPU part\t\t: %07x\n", processor_id >> 4); |
| 869 | } else { | 872 | } else { |
| 870 | if ((processor_id & 0x0000f000) == 0x00007000) { | 873 | if ((processor_id & 0x0008f000) == 0x00007000) { |
| 871 | /* ARM7 */ | 874 | /* ARM7 */ |
| 872 | seq_printf(m, "CPU variant\t: 0x%02x\n", | 875 | seq_printf(m, "CPU variant\t: 0x%02x\n", |
| 873 | (processor_id >> 16) & 127); | 876 | (processor_id >> 16) & 127); |
