From: Martin Storsjö martin@martin.st
Signed-off-by: Martin Storsjö martin@martin.st --- dlls/ntdll/unix/system.c | 8 ++++++-- include/winternl.h | 12 ++++++++---- programs/wineboot/wineboot.c | 4 ++++ 3 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/dlls/ntdll/unix/system.c b/dlls/ntdll/unix/system.c index 72bdd6b31a5..4c6c4cd23e2 100644 --- a/dlls/ntdll/unix/system.c +++ b/dlls/ntdll/unix/system.c @@ -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; } } diff --git a/include/winternl.h b/include/winternl.h index f027ef47e2f..6b4009b913e 100644 --- a/include/winternl.h +++ b/include/winternl.h @@ -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 { diff --git a/programs/wineboot/wineboot.c b/programs/wineboot/wineboot.c index c16446cf289..1c1ad858fa4 100644 --- a/programs/wineboot/wineboot.c +++ b/programs/wineboot/wineboot.c @@ -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;