arm64: Expose information about more modern CPU extensions.

Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
Martin Storsjö 2024-03-05 14:21:52 +02:00 committed by Alexandre Julliard
parent c9ffab4602
commit aa78b46e9c
3 changed files with 18 additions and 6 deletions

View file

@ -574,8 +574,12 @@ static void get_cpuinfo( SYSTEM_CPU_INFORMATION *info )
}
if (!strcmp( line, "Features" ))
{
if (strstr(value, "crc32")) features |= CPU_FEATURE_ARM_V8_CRC32;
if (strstr(value, "aes")) features |= CPU_FEATURE_ARM_V8_CRYPTO;
if (strstr(value, "crc32")) features |= CPU_FEATURE_ARM_V8_CRC32;
if (strstr(value, "aes")) features |= CPU_FEATURE_ARM_V8_CRYPTO;
if (strstr(value, "atomics")) features |= CPU_FEATURE_ARM_V81_ATOMIC;
if (strstr(value, "asimddp")) features |= CPU_FEATURE_ARM_V82_DP;
if (strstr(value, "jscvt")) features |= CPU_FEATURE_ARM_V83_JSCVT;
if (strstr(value, "lrcpc")) features |= CPU_FEATURE_ARM_V83_LRCPC;
continue;
}
}

View file

@ -2693,10 +2693,14 @@ typedef struct _SYSTEM_CPU_INFORMATION {
#define CPU_FEATURE_PAE 0x00200000
#define CPU_FEATURE_DAZ 0x00400000
#define CPU_FEATURE_ARM_VFP_32 0x00000001
#define CPU_FEATURE_ARM_NEON 0x00000002
#define CPU_FEATURE_ARM_V8_CRC32 0x00000004
#define CPU_FEATURE_ARM_V8_CRYPTO 0x00000008
#define CPU_FEATURE_ARM_VFP_32 0x00000001
#define CPU_FEATURE_ARM_NEON 0x00000002
#define CPU_FEATURE_ARM_V8_CRC32 0x00000004
#define CPU_FEATURE_ARM_V8_CRYPTO 0x00000008
#define CPU_FEATURE_ARM_V81_ATOMIC 0x00000010
#define CPU_FEATURE_ARM_V82_DP 0x00000020
#define CPU_FEATURE_ARM_V83_JSCVT 0x00000040
#define CPU_FEATURE_ARM_V83_LRCPC 0x00000080
typedef struct _SYSTEM_PROCESSOR_FEATURES_INFORMATION
{

View file

@ -440,6 +440,10 @@ static void create_user_shared_data(void)
features[PF_ARM_V8_INSTRUCTIONS_AVAILABLE] = TRUE;
features[PF_ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE] = !!(sci.ProcessorFeatureBits & CPU_FEATURE_ARM_V8_CRC32);
features[PF_ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE] = !!(sci.ProcessorFeatureBits & CPU_FEATURE_ARM_V8_CRYPTO);
features[PF_ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE]= !!(sci.ProcessorFeatureBits & CPU_FEATURE_ARM_V81_ATOMIC);
features[PF_ARM_V82_DP_INSTRUCTIONS_AVAILABLE] = !!(sci.ProcessorFeatureBits & CPU_FEATURE_ARM_V82_DP);
features[PF_ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE] = !!(sci.ProcessorFeatureBits & CPU_FEATURE_ARM_V83_JSCVT);
features[PF_ARM_V83_LRCPC_INSTRUCTIONS_AVAILABLE] = !!(sci.ProcessorFeatureBits & CPU_FEATURE_ARM_V83_LRCPC);
features[PF_COMPARE_EXCHANGE_DOUBLE] = TRUE;
features[PF_NX_ENABLED] = TRUE;
features[PF_FASTFAIL_AVAILABLE] = TRUE;