From 9f24bc44bcb5e147e46a74de4e8d570641aa1377 Mon Sep 17 00:00:00 2001 From: Alexandre Julliard Date: Wed, 4 Aug 2021 12:06:27 +0200 Subject: [PATCH] wow64: Make the syscall dispatcher point to the wow64cpu syscall wrapper. Signed-off-by: Alexandre Julliard --- dlls/wow64/syscall.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/dlls/wow64/syscall.c b/dlls/wow64/syscall.c index 2fd9f309b1b..e120ed022cd 100644 --- a/dlls/wow64/syscall.c +++ b/dlls/wow64/syscall.c @@ -62,8 +62,16 @@ struct mem_header BYTE data[1]; }; +static void **pWow64Transition; +static void **p__wine_syscall_dispatcher; static SYSTEM_DLL_INIT_BLOCK *pLdrSystemDllInitBlock; +/* cpu backend dll functions */ +static void * (WINAPI *pBTCpuGetBopCode)(void); +static void (WINAPI *pBTCpuProcessInit)(void); +static void (WINAPI *pBTCpuSimulate)(void); + + void *dummy = RtlUnwind; BOOL WINAPI DllMain( HINSTANCE inst, DWORD reason, void *reserved ) @@ -400,9 +408,17 @@ static void process_init(void) GET_PTR( LdrSystemDllInitBlock ); module = (HMODULE)(ULONG_PTR)pLdrSystemDllInitBlock->ntdll_handle; + GET_PTR( Wow64Transition ); + GET_PTR( __wine_syscall_dispatcher ); init_syscall_table( module ); - load_cpu_dll(); + module = load_cpu_dll(); + GET_PTR( BTCpuGetBopCode ); + GET_PTR( BTCpuProcessInit ); + GET_PTR( BTCpuSimulate ); + + pBTCpuProcessInit(); + *pWow64Transition = *p__wine_syscall_dispatcher = pBTCpuGetBopCode(); init_file_redirects();