]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - arch/arm/kernel/setup.c
ARM: elf: add new hwcap for identifying atomic ldrd/strd instructions
[karo-tx-linux.git] / arch / arm / kernel / setup.c
index 1522c7ae31b0c239901237569bad5cbb4ec7b02e..bdcd4dd13230a3e05f3176f0a146bad7c3b4df48 100644 (file)
@@ -355,7 +355,7 @@ void __init early_print(const char *str, ...)
 
 static void __init cpuid_init_hwcaps(void)
 {
-       unsigned int divide_instrs;
+       unsigned int divide_instrs, vmsa;
 
        if (cpu_architecture() < CPU_ARCH_ARMv7)
                return;
@@ -368,6 +368,11 @@ static void __init cpuid_init_hwcaps(void)
        case 1:
                elf_hwcap |= HWCAP_IDIVT;
        }
+
+       /* LPAE implies atomic ldrd/strd instructions */
+       vmsa = (read_cpuid_ext(CPUID_EXT_MMFR0) & 0xf) >> 0;
+       if (vmsa >= 5)
+               elf_hwcap |= HWCAP_LPAE;
 }
 
 static void __init feat_v6_fixup(void)
@@ -872,6 +877,7 @@ static const char *hwcap_str[] = {
        "vfpv4",
        "idiva",
        "idivt",
+       "lpae",
        NULL
 };