[3/3] ntdll: Check for ARMv7 architecture dynamically when loading a PE
André Hentschel
nerv at dawncrow.de
Sun Jun 24 17:25:28 CDT 2012
fill_cpu_info always gets called before check_architecture and checking this dynamically ensures that Wine compiled with non-armv7 toolchains still can run win8 PEs when the cpu supports it.
---
dlls/ntdll/virtual.c | 10 +++++++---
1 files changed, 7 insertions(+), 3 deletions(-)
diff --git a/dlls/ntdll/virtual.c b/dlls/ntdll/virtual.c
index d67f2d5..806b7a9 100644
--- a/dlls/ntdll/virtual.c
+++ b/dlls/ntdll/virtual.c
@@ -1061,11 +1061,15 @@ static NTSTATUS check_architecture( const IMAGE_NT_HEADERS *nt )
}
#elif defined(__arm__) && !defined(__ARMEB__)
if (nt->FileHeader.Machine == IMAGE_FILE_MACHINE_ARM ||
-#if defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || defined(__ARM_ARCH_7R__)
- nt->FileHeader.Machine == IMAGE_FILE_MACHINE_ARMV7 ||
-#endif
nt->FileHeader.Machine == IMAGE_FILE_MACHINE_THUMB)
return STATUS_SUCCESS;
+ if (nt->FileHeader.Machine == IMAGE_FILE_MACHINE_ARMV7)
+ {
+ SYSTEM_CPU_INFORMATION sci;
+ if (SUCCEEDED(NtQuerySystemInformation( SystemCpuInformation, &sci, sizeof(sci), NULL )) &&
+ sci.Architecture == PROCESSOR_ARCHITECTURE_ARM && sci.Level >= 7)
+ return STATUS_SUCCESS;
+ }
#endif
switch (nt->FileHeader.Machine)
--
1.7.4.1
--
Best Regards, André Hentschel
More information about the wine-patches
mailing list