diff options
Diffstat (limited to 'arch/arm')
-rw-r--r-- | arch/arm/cpu/cpuinfo.c | 8 | ||||
-rw-r--r-- | arch/arm/include/asm/system_info.h | 8 |
2 files changed, 16 insertions, 0 deletions
diff --git a/arch/arm/cpu/cpuinfo.c b/arch/arm/cpu/cpuinfo.c index 86e19d9780..175475b038 100644 --- a/arch/arm/cpu/cpuinfo.c +++ b/arch/arm/cpu/cpuinfo.c @@ -165,6 +165,14 @@ static int do_cpuinfo(int argc, char *argv[]) } else cpu_arch = CPU_ARCH_UNKNOWN; + /* + * Special case for ARMv6 (K/Z) (has v7 compatible MMU, but is v6 + * otherwise). The below check just matches all ARMv6, as done in the + * Linux kernel. + */ + if ((mainid & 0x7f000) == 0x7b000) + cpu_arch = CPU_ARCH_ARMv6; + switch (cpu_arch) { case CPU_ARCH_ARMv3: architecture = "v3"; diff --git a/arch/arm/include/asm/system_info.h b/arch/arm/include/asm/system_info.h index 25fffd2681..a27b79e6dd 100644 --- a/arch/arm/include/asm/system_info.h +++ b/arch/arm/include/asm/system_info.h @@ -188,6 +188,14 @@ static inline int arm_early_get_cpu_architecture(void) cpu_arch = CPU_ARCH_UNKNOWN; #endif + /* + * Special case for ARMv6 (K/Z) (has v7 compatible MMU, but is v6 + * otherwise). The below check just matches all ARMv6, as done in the + * Linux kernel. + */ + if ((read_cpuid_id() & 0x7f000) == 0x7b000) + cpu_arch = CPU_ARCH_ARMv6; + return cpu_arch; } |