static void __init cpuid_init_hwcaps(void)
 {
        int block;
+       u32 isar5;
 
        if (cpu_architecture() < CPU_ARCH_ARMv7)
                return;
        block = cpuid_feature_extract(CPUID_EXT_MMFR0, 0);
        if (block >= 5)
                elf_hwcap |= HWCAP_LPAE;
+
+       /* check for supported v8 Crypto instructions */
+       isar5 = read_cpuid_ext(CPUID_EXT_ISAR5);
+
+       block = cpuid_feature_extract_field(isar5, 4);
+       if (block >= 2)
+               elf_hwcap2 |= HWCAP2_PMULL;
+       if (block >= 1)
+               elf_hwcap2 |= HWCAP2_AES;
+
+       block = cpuid_feature_extract_field(isar5, 8);
+       if (block >= 1)
+               elf_hwcap2 |= HWCAP2_SHA1;
+
+       block = cpuid_feature_extract_field(isar5, 12);
+       if (block >= 1)
+               elf_hwcap2 |= HWCAP2_SHA2;
+
+       block = cpuid_feature_extract_field(isar5, 16);
+       if (block >= 1)
+               elf_hwcap2 |= HWCAP2_CRC32;
 }
 
 static void __init elf_hwcap_fixup(void)