diff options
| author | Catalin Marinas <catalin.marinas@arm.com> | 2006-01-12 11:28:16 -0500 | 
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2006-01-12 11:28:16 -0500 | 
| commit | 6b090a25fe58067e4bf4515d5056df1f07b64849 (patch) | |
| tree | de48a1d78c55f5ec119d6c8d2a31b72748a3bf60 | |
| parent | 37134cd55d57e95d3f606c6f2a57fa496bdad333 (diff) | |
[ARM] 3234/1: Update cpu_architecture() to deal with the new ID format
Patch from Catalin Marinas
Since ARM1176, the CPU ID format has changed and it will also be used for
future ARM architectures.
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
| -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); | 
