Module: wine Branch: master Commit: 9f24bc44bcb5e147e46a74de4e8d570641aa1377 URL: https://source.winehq.org/git/wine.git/?a=commit;h=9f24bc44bcb5e147e46a74de4...
Author: Alexandre Julliard julliard@winehq.org Date: Wed Aug 4 12:06:27 2021 +0200
wow64: Make the syscall dispatcher point to the wow64cpu syscall wrapper.
Signed-off-by: Alexandre Julliard julliard@winehq.org
---
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();