From: Alexandre Julliard <julliard@winehq.org> --- dlls/kernel32/tests/virtual.c | 5 +++++ dlls/kernelbase/memory.c | 3 ++- include/memoryapi.h | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/dlls/kernel32/tests/virtual.c b/dlls/kernel32/tests/virtual.c index c6e8e2306bc..42b52e468d1 100644 --- a/dlls/kernel32/tests/virtual.c +++ b/dlls/kernel32/tests/virtual.c @@ -30,6 +30,7 @@ #include "winerror.h" #include "winuser.h" #include "excpt.h" +#include "ddk/wdm.h" #include "wine/test.h" #define NUM_THREADS 4 @@ -2425,6 +2426,7 @@ static void test_write_watch(void) static void test_largepages(void) { + const KUSER_SHARED_DATA *user_shared_data = (void *)0x7ffe0000; SIZE_T size; if (!pGetLargePageMinimum) { @@ -2435,6 +2437,9 @@ static void test_largepages(void) ok((size == 0) || (size == 2*1024*1024) || (size == 4*1024*1024), "GetLargePageMinimum reports %Id size\n", size); + + ok( user_shared_data->LargePageMinimum == size, "wrong large page minimum %lx / %Ix\n", + user_shared_data->LargePageMinimum, size ); } #if defined(__i386__) || defined(__x86_64__) diff --git a/dlls/kernelbase/memory.c b/dlls/kernelbase/memory.c index ad61f786798..2ce2dcad30e 100644 --- a/dlls/kernelbase/memory.c +++ b/dlls/kernelbase/memory.c @@ -40,6 +40,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(heap); WINE_DECLARE_DEBUG_CHANNEL(virtual); WINE_DECLARE_DEBUG_CHANNEL(globalmem); +static const struct _KUSER_SHARED_DATA *user_shared_data = (struct _KUSER_SHARED_DATA *)0x7ffe0000; static CRITICAL_SECTION memstatus_section; static CRITICAL_SECTION_DEBUG critsect_debug = @@ -150,7 +151,7 @@ BOOL WINAPI DECLSPEC_HOTPATCH FlushInstructionCache( HANDLE process, LPCVOID add */ SIZE_T WINAPI GetLargePageMinimum(void) { - return 2 * 1024 * 1024; + return user_shared_data->LargePageMinimum; } diff --git a/include/memoryapi.h b/include/memoryapi.h index 79c01aaed23..6d48d6126f3 100644 --- a/include/memoryapi.h +++ b/include/memoryapi.h @@ -50,6 +50,7 @@ typedef struct WIN32_MEMORY_REGION_INFORMATION WINBASEAPI HANDLE WINAPI CreateFileMapping2(HANDLE,LPSECURITY_ATTRIBUTES,ULONG,ULONG,ULONG,ULONG64,const WCHAR*,MEM_EXTENDED_PARAMETER*,ULONG); WINBASEAPI DWORD WINAPI DiscardVirtualMemory(void *addr, SIZE_T size); +WINBASEAPI SIZE_T WINAPI GetLargePageMinimum(void); WINBASEAPI BOOL WINAPI QueryVirtualMemoryInformation(HANDLE process,const void *addr, WIN32_MEMORY_INFORMATION_CLASS info_class, void *info, SIZE_T size, SIZE_T *ret_size); #ifdef __cplusplus -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/11728