kernelbase: Send cross process notifications in FlushInstructionCache on ARM64.

This commit is contained in:
Alexandre Julliard 2024-06-18 12:55:41 +02:00
parent 2c7f4181bc
commit 9c6fb2b30c
3 changed files with 16 additions and 10 deletions

View file

@ -122,6 +122,22 @@ BOOL WINAPI DECLSPEC_HOTPATCH FlushViewOfFile( const void *base, SIZE_T size )
}
/****************************************************************************
* FlushInstructionCache (kernelbase.@)
*/
BOOL WINAPI DECLSPEC_HOTPATCH FlushInstructionCache( HANDLE process, LPCVOID addr, SIZE_T size )
{
CROSS_PROCESS_WORK_LIST *list;
if ((list = open_cross_process_connection( process )))
{
send_cross_process_notification( list, CrossProcessFlushCache, addr, size, 0 );
close_cross_process_connection( list );
}
return set_ntstatus( NtFlushInstructionCache( process, addr, size ));
}
/***********************************************************************
* GetLargePageMinimum (kernelbase.@)
*/

View file

@ -737,15 +737,6 @@ BOOL WINAPI DECLSPEC_HOTPATCH DuplicateHandle( HANDLE source_process, HANDLE sou
}
/****************************************************************************
* FlushInstructionCache (kernelbase.@)
*/
BOOL WINAPI DECLSPEC_HOTPATCH FlushInstructionCache( HANDLE process, LPCVOID addr, SIZE_T size )
{
return set_ntstatus( NtFlushInstructionCache( process, addr, size ));
}
/***********************************************************************
* GetApplicationRestartSettings (kernelbase.@)
*/

View file

@ -713,7 +713,6 @@ static void test_cross_process_notifications( HANDLE process, ULONG_PTR section,
FlushInstructionCache( process, addr, 0x1234 );
entry = pop_from_work_list( &list->work_list );
todo_wine_if (current_machine == IMAGE_FILE_MACHINE_ARM64)
entry = expect_cross_work_entry( list, entry, CrossProcessFlushCache, addr, 0x1234,
0xcccccccc, 0xcccccccc, 0xcccccccc, 0xcccccccc );
ok( !entry, "not at end of list\n" );