diff --git a/dlls/wow64/syscall.c b/dlls/wow64/syscall.c index 952b862a37d..74fc8d9905e 100644 --- a/dlls/wow64/syscall.c +++ b/dlls/wow64/syscall.c @@ -79,6 +79,7 @@ static const SYSTEM_SERVICE_TABLE *psdwhwin32; static void * (WINAPI *pBTCpuGetBopCode)(void); static void (WINAPI *pBTCpuProcessInit)(void); static void (WINAPI *pBTCpuSimulate)(void); +static NTSTATUS (WINAPI *pBTCpuResetToConsistentState)( EXCEPTION_POINTERS * ); void *dummy = RtlUnwind; @@ -534,6 +535,7 @@ static DWORD WINAPI process_init( RTL_RUN_ONCE *once, void *param, void **contex module = load_64bit_module( get_cpu_dll_name() ); GET_PTR( BTCpuGetBopCode ); GET_PTR( BTCpuProcessInit ); + GET_PTR( BTCpuResetToConsistentState ); GET_PTR( BTCpuSimulate ); module = load_64bit_module( L"wow64win.dll" ); @@ -769,3 +771,14 @@ void WINAPI Wow64LdrpInitialize( CONTEXT *context ) thread_init(); pBTCpuSimulate(); } + + +/********************************************************************** + * Wow64PrepareForException (wow64.@) + */ +void WINAPI Wow64PrepareForException( EXCEPTION_RECORD *rec, CONTEXT *context ) +{ + EXCEPTION_POINTERS ptrs = { rec, context }; + + pBTCpuResetToConsistentState( &ptrs ); +} diff --git a/dlls/wow64/wow64.spec b/dlls/wow64/wow64.spec index 69275b2580f..5c3f39c50f1 100644 --- a/dlls/wow64/wow64.spec +++ b/dlls/wow64/wow64.spec @@ -15,7 +15,7 @@ @ stub Wow64NotifyUnsimulateComplete @ stdcall Wow64PassExceptionToGuest(ptr) @ stub Wow64PrepareForDebuggerAttach -@ stub Wow64PrepareForException +@ stdcall Wow64PrepareForException(ptr ptr) @ stub Wow64RaiseException @ stub Wow64ShallowThunkAllocObjectAttributes32TO64_FNC @ stub Wow64ShallowThunkAllocSecurityQualityOfService32TO64_FNC