mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-06 17:54:05 +00:00
ntdll: Implement KiUserCallbackDispatcher for ARM64EC.
This commit is contained in:
parent
3c94236186
commit
9e0f2e3b92
|
@ -1694,10 +1694,35 @@ void WINAPI KiUserApcDispatcher( CONTEXT *context, ULONG_PTR arg1, ULONG_PTR arg
|
||||||
/*******************************************************************
|
/*******************************************************************
|
||||||
* KiUserCallbackDispatcher (NTDLL.@)
|
* KiUserCallbackDispatcher (NTDLL.@)
|
||||||
*/
|
*/
|
||||||
void WINAPI KiUserCallbackDispatcher( ULONG id, void *args, ULONG len )
|
void WINAPI dispatch_callback( void *args, ULONG len, ULONG id )
|
||||||
{
|
{
|
||||||
FIXME( "not implemented\n" );
|
NTSTATUS status;
|
||||||
|
|
||||||
|
__TRY
|
||||||
|
{
|
||||||
|
NTSTATUS (WINAPI *func)(void *, ULONG) = ((void **)NtCurrentTeb()->Peb->KernelCallbackTable)[id];
|
||||||
|
status = NtCallbackReturn( NULL, 0, func( args, len ));
|
||||||
|
}
|
||||||
|
__EXCEPT_ALL
|
||||||
|
{
|
||||||
|
ERR_(seh)( "ignoring exception\n" );
|
||||||
|
status = NtCallbackReturn( 0, 0, 0 );
|
||||||
|
}
|
||||||
|
__ENDTRY
|
||||||
|
|
||||||
|
RtlRaiseStatus( status );
|
||||||
}
|
}
|
||||||
|
__ASM_GLOBAL_FUNC( "#KiUserCallbackDispatcher",
|
||||||
|
__ASM_SEH(".seh_pushframe\n\t")
|
||||||
|
"nop\n\t"
|
||||||
|
__ASM_SEH(".seh_stackalloc 0x20\n\t")
|
||||||
|
"nop\n\t"
|
||||||
|
__ASM_SEH(".seh_save_reg lr, 0x18\n\t")
|
||||||
|
__ASM_SEH(".seh_endprologue\n\t")
|
||||||
|
"ldr x0, [sp]\n\t" /* args */
|
||||||
|
"ldp w1, w2, [sp, #0x08]\n\t" /* len, id */
|
||||||
|
"bl " __ASM_NAME("dispatch_callback") "\n\t"
|
||||||
|
"brk #1" )
|
||||||
|
|
||||||
|
|
||||||
/**************************************************************************
|
/**************************************************************************
|
||||||
|
|
Loading…
Reference in a new issue