include: Use the __fastcall attribute directly for the Windows build.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
stable
Alexandre Julliard 2019-05-16 10:15:26 +02:00
parent e755ea2374
commit 10584d2057
8 changed files with 59 additions and 47 deletions

View File

@ -37,39 +37,46 @@ WINE_DEFAULT_DEBUG_CHANNEL(ntoskrnl);
#ifdef __i386__ #ifdef __i386__
extern void * WINAPI call_fastcall_func1( void *func, const void *a ); #ifndef _WIN32
__ASM_STDCALL_FUNC( call_fastcall_func1, 8,
extern void * WINAPI wrap_fastcall_func1( void *func, const void *a );
__ASM_STDCALL_FUNC( wrap_fastcall_func1, 8,
"popl %ecx\n\t" "popl %ecx\n\t"
"popl %eax\n\t" "popl %eax\n\t"
"xchgl (%esp),%ecx\n\t" "xchgl (%esp),%ecx\n\t"
"jmp *%eax" ); "jmp *%eax" );
extern void * WINAPI wrap_fastcall_func2( void *func, const void *a, const void *b );
extern void * WINAPI call_fastcall_func2( void *func, const void *a, const void *b ); __ASM_STDCALL_FUNC( wrap_fastcall_func2, 12,
__ASM_STDCALL_FUNC( call_fastcall_func2, 12,
"popl %edx\n\t" "popl %edx\n\t"
"popl %eax\n\t" "popl %eax\n\t"
"popl %ecx\n\t" "popl %ecx\n\t"
"xchgl (%esp),%edx\n\t" "xchgl (%esp),%edx\n\t"
"jmp *%eax" ); "jmp *%eax" );
extern void WINAPI ExAcquireFastMutexUnsafe( FAST_MUTEX * ); #define call_fastcall_func1(func,a) wrap_fastcall_func1(func,a)
#define call_fastcall_func2(func,a,b) wrap_fastcall_func2(func,a,b)
#else /* _WIN32 */
#define call_fastcall_func1(func,a) func(a)
#define call_fastcall_func2(func,a,b) func(a,b)
#endif /* _WIN32 */
DEFINE_FASTCALL1_WRAPPER( ExAcquireFastMutex ) DEFINE_FASTCALL1_WRAPPER( ExAcquireFastMutex )
void WINAPI ExAcquireFastMutex( FAST_MUTEX *mutex ) void FASTCALL ExAcquireFastMutex( FAST_MUTEX *mutex )
{ {
call_fastcall_func1( ExAcquireFastMutexUnsafe, mutex ); call_fastcall_func1( ExAcquireFastMutexUnsafe, mutex );
} }
extern void WINAPI ExReleaseFastMutexUnsafe( FAST_MUTEX * );
DEFINE_FASTCALL1_WRAPPER( ExReleaseFastMutex ) DEFINE_FASTCALL1_WRAPPER( ExReleaseFastMutex )
void WINAPI ExReleaseFastMutex( FAST_MUTEX *mutex ) void FASTCALL ExReleaseFastMutex( FAST_MUTEX *mutex )
{ {
call_fastcall_func1( ExReleaseFastMutexUnsafe, mutex ); call_fastcall_func1( ExReleaseFastMutexUnsafe, mutex );
} }
DEFINE_FASTCALL1_WRAPPER( ExTryToAcquireFastMutex ) DEFINE_FASTCALL1_WRAPPER( ExTryToAcquireFastMutex )
BOOLEAN WINAPI ExTryToAcquireFastMutex( FAST_MUTEX *mutex ) BOOLEAN FASTCALL ExTryToAcquireFastMutex( FAST_MUTEX *mutex )
{ {
TRACE("mutex %p.\n", mutex); TRACE("mutex %p.\n", mutex);
@ -77,7 +84,7 @@ BOOLEAN WINAPI ExTryToAcquireFastMutex( FAST_MUTEX *mutex )
} }
DEFINE_FASTCALL1_WRAPPER( KfAcquireSpinLock ) DEFINE_FASTCALL1_WRAPPER( KfAcquireSpinLock )
KIRQL WINAPI KfAcquireSpinLock( KSPIN_LOCK *lock ) KIRQL FASTCALL KfAcquireSpinLock( KSPIN_LOCK *lock )
{ {
KIRQL irql; KIRQL irql;
KeAcquireSpinLock( lock, &irql ); KeAcquireSpinLock( lock, &irql );
@ -92,7 +99,7 @@ void WINAPI KeAcquireSpinLock( KSPIN_LOCK *lock, KIRQL *irql )
} }
DEFINE_FASTCALL_WRAPPER( KfReleaseSpinLock, 8 ) DEFINE_FASTCALL_WRAPPER( KfReleaseSpinLock, 8 )
void WINAPI KfReleaseSpinLock( KSPIN_LOCK *lock, KIRQL irql ) void FASTCALL KfReleaseSpinLock( KSPIN_LOCK *lock, KIRQL irql )
{ {
KeReleaseSpinLock( lock, irql ); KeReleaseSpinLock( lock, irql );
} }
@ -103,18 +110,14 @@ void WINAPI KeReleaseSpinLock( KSPIN_LOCK *lock, KIRQL irql )
KeReleaseSpinLockFromDpcLevel( lock ); KeReleaseSpinLockFromDpcLevel( lock );
} }
extern void WINAPI KeAcquireInStackQueuedSpinLockAtDpcLevel( KSPIN_LOCK *, KLOCK_QUEUE_HANDLE * );
DEFINE_FASTCALL_WRAPPER( KeAcquireInStackQueuedSpinLock, 8 ) DEFINE_FASTCALL_WRAPPER( KeAcquireInStackQueuedSpinLock, 8 )
void WINAPI KeAcquireInStackQueuedSpinLock( KSPIN_LOCK *lock, KLOCK_QUEUE_HANDLE *queue ) void FASTCALL KeAcquireInStackQueuedSpinLock( KSPIN_LOCK *lock, KLOCK_QUEUE_HANDLE *queue )
{ {
call_fastcall_func2( KeAcquireInStackQueuedSpinLockAtDpcLevel, lock, queue ); call_fastcall_func2( KeAcquireInStackQueuedSpinLockAtDpcLevel, lock, queue );
} }
extern void WINAPI KeReleaseInStackQueuedSpinLockFromDpcLevel( KLOCK_QUEUE_HANDLE * );
DEFINE_FASTCALL1_WRAPPER( KeReleaseInStackQueuedSpinLock ) DEFINE_FASTCALL1_WRAPPER( KeReleaseInStackQueuedSpinLock )
void WINAPI KeReleaseInStackQueuedSpinLock( KLOCK_QUEUE_HANDLE *queue ) void FASTCALL KeReleaseInStackQueuedSpinLock( KLOCK_QUEUE_HANDLE *queue )
{ {
call_fastcall_func1( KeReleaseInStackQueuedSpinLockFromDpcLevel, queue ); call_fastcall_func1( KeReleaseInStackQueuedSpinLockFromDpcLevel, queue );
} }
@ -123,13 +126,13 @@ void WINAPI KeReleaseInStackQueuedSpinLock( KLOCK_QUEUE_HANDLE *queue )
#if defined(__i386__) || defined(__arm__) || defined(__aarch64__) #if defined(__i386__) || defined(__arm__) || defined(__aarch64__)
DEFINE_FASTCALL1_WRAPPER( KfLowerIrql ) DEFINE_FASTCALL1_WRAPPER( KfLowerIrql )
VOID WINAPI KfLowerIrql(KIRQL NewIrql) VOID FASTCALL KfLowerIrql(KIRQL NewIrql)
{ {
FIXME( "(%u) stub!\n", NewIrql ); FIXME( "(%u) stub!\n", NewIrql );
} }
DEFINE_FASTCALL1_WRAPPER( KfRaiseIrql ) DEFINE_FASTCALL1_WRAPPER( KfRaiseIrql )
KIRQL WINAPI KfRaiseIrql(KIRQL NewIrql) KIRQL FASTCALL KfRaiseIrql(KIRQL NewIrql)
{ {
FIXME( "(%u) stub!\n", NewIrql ); FIXME( "(%u) stub!\n", NewIrql );

View File

@ -1247,8 +1247,8 @@ PSLIST_ENTRY WINAPI RtlInterlockedPushListSListEx(PSLIST_HEADER list, PSLIST_ENT
* RtlInterlockedPushListSList [NTDLL.@] * RtlInterlockedPushListSList [NTDLL.@]
*/ */
DEFINE_FASTCALL_WRAPPER(RtlInterlockedPushListSList, 16) DEFINE_FASTCALL_WRAPPER(RtlInterlockedPushListSList, 16)
PSLIST_ENTRY WINAPI RtlInterlockedPushListSList(PSLIST_HEADER list, PSLIST_ENTRY first, PSLIST_ENTRY FASTCALL RtlInterlockedPushListSList(PSLIST_HEADER list, PSLIST_ENTRY first,
PSLIST_ENTRY last, ULONG count) PSLIST_ENTRY last, ULONG count)
{ {
return RtlInterlockedPushListSListEx(list, first, last, count); return RtlInterlockedPushListSListEx(list, first, last, count);
} }

View File

@ -1946,7 +1946,7 @@ NTSTATUS WINAPI IoCallDriver( DEVICE_OBJECT *device, IRP *irp )
* IofCallDriver (NTOSKRNL.EXE.@) * IofCallDriver (NTOSKRNL.EXE.@)
*/ */
DEFINE_FASTCALL_WRAPPER( IofCallDriver, 8 ) DEFINE_FASTCALL_WRAPPER( IofCallDriver, 8 )
NTSTATUS WINAPI IofCallDriver( DEVICE_OBJECT *device, IRP *irp ) NTSTATUS FASTCALL IofCallDriver( DEVICE_OBJECT *device, IRP *irp )
{ {
TRACE( "%p %p\n", device, irp ); TRACE( "%p %p\n", device, irp );
return IoCallDriver( device, irp ); return IoCallDriver( device, irp );
@ -2278,7 +2278,7 @@ VOID WINAPI IoCompleteRequest( IRP *irp, UCHAR priority_boost )
* IofCompleteRequest (NTOSKRNL.EXE.@) * IofCompleteRequest (NTOSKRNL.EXE.@)
*/ */
DEFINE_FASTCALL_WRAPPER( IofCompleteRequest, 8 ) DEFINE_FASTCALL_WRAPPER( IofCompleteRequest, 8 )
void WINAPI IofCompleteRequest( IRP *irp, UCHAR priority_boost ) void FASTCALL IofCompleteRequest( IRP *irp, UCHAR priority_boost )
{ {
TRACE( "%p %u\n", irp, priority_boost ); TRACE( "%p %u\n", irp, priority_boost );
IoCompleteRequest( irp, priority_boost ); IoCompleteRequest( irp, priority_boost );
@ -2314,7 +2314,7 @@ BOOLEAN WINAPI IoCancelIrp( IRP *irp )
* InterlockedCompareExchange (NTOSKRNL.EXE.@) * InterlockedCompareExchange (NTOSKRNL.EXE.@)
*/ */
DEFINE_FASTCALL_WRAPPER( NTOSKRNL_InterlockedCompareExchange, 12 ) DEFINE_FASTCALL_WRAPPER( NTOSKRNL_InterlockedCompareExchange, 12 )
LONG WINAPI NTOSKRNL_InterlockedCompareExchange( LONG volatile *dest, LONG xchg, LONG compare ) LONG FASTCALL NTOSKRNL_InterlockedCompareExchange( LONG volatile *dest, LONG xchg, LONG compare )
{ {
return InterlockedCompareExchange( dest, xchg, compare ); return InterlockedCompareExchange( dest, xchg, compare );
} }
@ -2324,7 +2324,7 @@ LONG WINAPI NTOSKRNL_InterlockedCompareExchange( LONG volatile *dest, LONG xchg,
* InterlockedDecrement (NTOSKRNL.EXE.@) * InterlockedDecrement (NTOSKRNL.EXE.@)
*/ */
DEFINE_FASTCALL1_WRAPPER( NTOSKRNL_InterlockedDecrement ) DEFINE_FASTCALL1_WRAPPER( NTOSKRNL_InterlockedDecrement )
LONG WINAPI NTOSKRNL_InterlockedDecrement( LONG volatile *dest ) LONG FASTCALL NTOSKRNL_InterlockedDecrement( LONG volatile *dest )
{ {
return InterlockedDecrement( dest ); return InterlockedDecrement( dest );
} }
@ -2334,7 +2334,7 @@ LONG WINAPI NTOSKRNL_InterlockedDecrement( LONG volatile *dest )
* InterlockedExchange (NTOSKRNL.EXE.@) * InterlockedExchange (NTOSKRNL.EXE.@)
*/ */
DEFINE_FASTCALL_WRAPPER( NTOSKRNL_InterlockedExchange, 8 ) DEFINE_FASTCALL_WRAPPER( NTOSKRNL_InterlockedExchange, 8 )
LONG WINAPI NTOSKRNL_InterlockedExchange( LONG volatile *dest, LONG val ) LONG FASTCALL NTOSKRNL_InterlockedExchange( LONG volatile *dest, LONG val )
{ {
return InterlockedExchange( dest, val ); return InterlockedExchange( dest, val );
} }
@ -2344,7 +2344,7 @@ LONG WINAPI NTOSKRNL_InterlockedExchange( LONG volatile *dest, LONG val )
* InterlockedExchangeAdd (NTOSKRNL.EXE.@) * InterlockedExchangeAdd (NTOSKRNL.EXE.@)
*/ */
DEFINE_FASTCALL_WRAPPER( NTOSKRNL_InterlockedExchangeAdd, 8 ) DEFINE_FASTCALL_WRAPPER( NTOSKRNL_InterlockedExchangeAdd, 8 )
LONG WINAPI NTOSKRNL_InterlockedExchangeAdd( LONG volatile *dest, LONG incr ) LONG FASTCALL NTOSKRNL_InterlockedExchangeAdd( LONG volatile *dest, LONG incr )
{ {
return InterlockedExchangeAdd( dest, incr ); return InterlockedExchangeAdd( dest, incr );
} }
@ -2354,7 +2354,7 @@ LONG WINAPI NTOSKRNL_InterlockedExchangeAdd( LONG volatile *dest, LONG incr )
* InterlockedIncrement (NTOSKRNL.EXE.@) * InterlockedIncrement (NTOSKRNL.EXE.@)
*/ */
DEFINE_FASTCALL1_WRAPPER( NTOSKRNL_InterlockedIncrement ) DEFINE_FASTCALL1_WRAPPER( NTOSKRNL_InterlockedIncrement )
LONG WINAPI NTOSKRNL_InterlockedIncrement( LONG volatile *dest ) LONG FASTCALL NTOSKRNL_InterlockedIncrement( LONG volatile *dest )
{ {
return InterlockedIncrement( dest ); return InterlockedIncrement( dest );
} }
@ -3061,7 +3061,7 @@ NTSTATUS WINAPI ObReferenceObjectByPointer(void *obj, ACCESS_MASK access,
* ObfReferenceObject (NTOSKRNL.EXE.@) * ObfReferenceObject (NTOSKRNL.EXE.@)
*/ */
DEFINE_FASTCALL1_WRAPPER( ObfReferenceObject ) DEFINE_FASTCALL1_WRAPPER( ObfReferenceObject )
void WINAPI ObfReferenceObject( void *obj ) void FASTCALL ObfReferenceObject( void *obj )
{ {
ObReferenceObject( obj ); ObReferenceObject( obj );
} }
@ -3071,7 +3071,7 @@ void WINAPI ObfReferenceObject( void *obj )
* ObfDereferenceObject (NTOSKRNL.EXE.@) * ObfDereferenceObject (NTOSKRNL.EXE.@)
*/ */
DEFINE_FASTCALL1_WRAPPER( ObfDereferenceObject ) DEFINE_FASTCALL1_WRAPPER( ObfDereferenceObject )
void WINAPI ObfDereferenceObject( void *obj ) void FASTCALL ObfDereferenceObject( void *obj )
{ {
ObDereferenceObject( obj ); ObDereferenceObject( obj );
} }
@ -4395,7 +4395,7 @@ typedef struct _EX_PUSH_LOCK_WAIT_BLOCK *PEX_PUSH_LOCK_WAIT_BLOCK;
* ExfUnblockPushLock (NTOSKRNL.@) * ExfUnblockPushLock (NTOSKRNL.@)
*/ */
DEFINE_FASTCALL_WRAPPER( ExfUnblockPushLock, 8 ) DEFINE_FASTCALL_WRAPPER( ExfUnblockPushLock, 8 )
void WINAPI ExfUnblockPushLock( EX_PUSH_LOCK *lock, PEX_PUSH_LOCK_WAIT_BLOCK block ) void FASTCALL ExfUnblockPushLock( EX_PUSH_LOCK *lock, PEX_PUSH_LOCK_WAIT_BLOCK block )
{ {
FIXME( "stub: %p, %p\n", lock, block ); FIXME( "stub: %p, %p\n", lock, block );
} }

View File

@ -515,7 +515,7 @@ void WINAPI KeReleaseSpinLockFromDpcLevel( KSPIN_LOCK *lock )
* KeAcquireInStackQueuedSpinLockAtDpcLevel (NTOSKRNL.EXE.@) * KeAcquireInStackQueuedSpinLockAtDpcLevel (NTOSKRNL.EXE.@)
*/ */
DEFINE_FASTCALL_WRAPPER( KeAcquireInStackQueuedSpinLockAtDpcLevel, 8 ) DEFINE_FASTCALL_WRAPPER( KeAcquireInStackQueuedSpinLockAtDpcLevel, 8 )
void WINAPI KeAcquireInStackQueuedSpinLockAtDpcLevel( KSPIN_LOCK *lock, KLOCK_QUEUE_HANDLE *queue ) void FASTCALL KeAcquireInStackQueuedSpinLockAtDpcLevel( KSPIN_LOCK *lock, KLOCK_QUEUE_HANDLE *queue )
{ {
KSPIN_LOCK_QUEUE *tail; KSPIN_LOCK_QUEUE *tail;
@ -542,7 +542,7 @@ void WINAPI KeAcquireInStackQueuedSpinLockAtDpcLevel( KSPIN_LOCK *lock, KLOCK_QU
* KeReleaseInStackQueuedSpinLockFromDpcLevel (NTOSKRNL.EXE.@) * KeReleaseInStackQueuedSpinLockFromDpcLevel (NTOSKRNL.EXE.@)
*/ */
DEFINE_FASTCALL1_WRAPPER( KeReleaseInStackQueuedSpinLockFromDpcLevel ) DEFINE_FASTCALL1_WRAPPER( KeReleaseInStackQueuedSpinLockFromDpcLevel )
void WINAPI KeReleaseInStackQueuedSpinLockFromDpcLevel( KLOCK_QUEUE_HANDLE *queue ) void FASTCALL KeReleaseInStackQueuedSpinLockFromDpcLevel( KLOCK_QUEUE_HANDLE *queue )
{ {
KSPIN_LOCK *lock = (KSPIN_LOCK *)((ULONG_PTR)queue->LockQueue.Lock & ~QUEUED_SPINLOCK_OWNED); KSPIN_LOCK *lock = (KSPIN_LOCK *)((ULONG_PTR)queue->LockQueue.Lock & ~QUEUED_SPINLOCK_OWNED);
KSPIN_LOCK_QUEUE *next; KSPIN_LOCK_QUEUE *next;
@ -629,7 +629,7 @@ void WINAPI IoReleaseCancelSpinLock( KIRQL irql )
* ExfInterlockedRemoveHeadList (NTOSKRNL.EXE.@) * ExfInterlockedRemoveHeadList (NTOSKRNL.EXE.@)
*/ */
DEFINE_FASTCALL_WRAPPER( ExfInterlockedRemoveHeadList, 8 ) DEFINE_FASTCALL_WRAPPER( ExfInterlockedRemoveHeadList, 8 )
PLIST_ENTRY WINAPI ExfInterlockedRemoveHeadList( LIST_ENTRY *list, KSPIN_LOCK *lock ) PLIST_ENTRY FASTCALL ExfInterlockedRemoveHeadList( LIST_ENTRY *list, KSPIN_LOCK *lock )
{ {
return ExInterlockedRemoveHeadList( list, lock ); return ExInterlockedRemoveHeadList( list, lock );
} }
@ -656,7 +656,7 @@ LIST_ENTRY * WINAPI ExInterlockedRemoveHeadList( LIST_ENTRY *list, KSPIN_LOCK *l
* InterlockedPopEntrySList (NTOSKRNL.EXE.@) * InterlockedPopEntrySList (NTOSKRNL.EXE.@)
*/ */
DEFINE_FASTCALL1_WRAPPER( NTOSKRNL_InterlockedPopEntrySList ) DEFINE_FASTCALL1_WRAPPER( NTOSKRNL_InterlockedPopEntrySList )
PSLIST_ENTRY WINAPI NTOSKRNL_InterlockedPopEntrySList( PSLIST_HEADER list ) PSLIST_ENTRY FASTCALL NTOSKRNL_InterlockedPopEntrySList( PSLIST_HEADER list )
{ {
return RtlInterlockedPopEntrySList( list ); return RtlInterlockedPopEntrySList( list );
} }
@ -666,7 +666,7 @@ PSLIST_ENTRY WINAPI NTOSKRNL_InterlockedPopEntrySList( PSLIST_HEADER list )
* InterlockedPushEntrySList (NTOSKRNL.EXE.@) * InterlockedPushEntrySList (NTOSKRNL.EXE.@)
*/ */
DEFINE_FASTCALL_WRAPPER( NTOSKRNL_InterlockedPushEntrySList, 8 ) DEFINE_FASTCALL_WRAPPER( NTOSKRNL_InterlockedPushEntrySList, 8 )
PSLIST_ENTRY WINAPI NTOSKRNL_InterlockedPushEntrySList( PSLIST_HEADER list, PSLIST_ENTRY entry ) PSLIST_ENTRY FASTCALL NTOSKRNL_InterlockedPushEntrySList( PSLIST_HEADER list, PSLIST_ENTRY entry )
{ {
return RtlInterlockedPushEntrySList( list, entry ); return RtlInterlockedPushEntrySList( list, entry );
} }
@ -676,7 +676,7 @@ PSLIST_ENTRY WINAPI NTOSKRNL_InterlockedPushEntrySList( PSLIST_HEADER list, PSLI
* ExInterlockedPopEntrySList (NTOSKRNL.EXE.@) * ExInterlockedPopEntrySList (NTOSKRNL.EXE.@)
*/ */
DEFINE_FASTCALL_WRAPPER( NTOSKRNL_ExInterlockedPopEntrySList, 8 ) DEFINE_FASTCALL_WRAPPER( NTOSKRNL_ExInterlockedPopEntrySList, 8 )
PSLIST_ENTRY WINAPI NTOSKRNL_ExInterlockedPopEntrySList( PSLIST_HEADER list, PKSPIN_LOCK lock ) PSLIST_ENTRY FASTCALL NTOSKRNL_ExInterlockedPopEntrySList( PSLIST_HEADER list, PKSPIN_LOCK lock )
{ {
return RtlInterlockedPopEntrySList( list ); return RtlInterlockedPopEntrySList( list );
} }
@ -686,7 +686,7 @@ PSLIST_ENTRY WINAPI NTOSKRNL_ExInterlockedPopEntrySList( PSLIST_HEADER list, PKS
* ExInterlockedPushEntrySList (NTOSKRNL.EXE.@) * ExInterlockedPushEntrySList (NTOSKRNL.EXE.@)
*/ */
DEFINE_FASTCALL_WRAPPER( NTOSKRNL_ExInterlockedPushEntrySList, 12 ) DEFINE_FASTCALL_WRAPPER( NTOSKRNL_ExInterlockedPushEntrySList, 12 )
PSLIST_ENTRY WINAPI NTOSKRNL_ExInterlockedPushEntrySList( PSLIST_HEADER list, PSLIST_ENTRY entry, PKSPIN_LOCK lock ) PSLIST_ENTRY FASTCALL NTOSKRNL_ExInterlockedPushEntrySList( PSLIST_HEADER list, PSLIST_ENTRY entry, PKSPIN_LOCK lock )
{ {
return RtlInterlockedPushEntrySList( list, entry ); return RtlInterlockedPushEntrySList( list, entry );
} }
@ -696,7 +696,7 @@ PSLIST_ENTRY WINAPI NTOSKRNL_ExInterlockedPushEntrySList( PSLIST_HEADER list, PS
* ExInterlockedFlushSList (NTOSKRNL.EXE.@) * ExInterlockedFlushSList (NTOSKRNL.EXE.@)
*/ */
DEFINE_FASTCALL1_WRAPPER( NTOSKRNL_ExInterlockedFlushSList ) DEFINE_FASTCALL1_WRAPPER( NTOSKRNL_ExInterlockedFlushSList )
PSLIST_ENTRY WINAPI NTOSKRNL_ExInterlockedFlushSList( PSLIST_HEADER list ) PSLIST_ENTRY FASTCALL NTOSKRNL_ExInterlockedFlushSList( PSLIST_HEADER list )
{ {
return RtlInterlockedFlushSList( list ); return RtlInterlockedFlushSList( list );
} }
@ -706,7 +706,7 @@ PSLIST_ENTRY WINAPI NTOSKRNL_ExInterlockedFlushSList( PSLIST_HEADER list )
* ExAcquireFastMutexUnsafe (NTOSKRNL.EXE.@) * ExAcquireFastMutexUnsafe (NTOSKRNL.EXE.@)
*/ */
DEFINE_FASTCALL1_WRAPPER(ExAcquireFastMutexUnsafe) DEFINE_FASTCALL1_WRAPPER(ExAcquireFastMutexUnsafe)
void WINAPI ExAcquireFastMutexUnsafe( FAST_MUTEX *mutex ) void FASTCALL ExAcquireFastMutexUnsafe( FAST_MUTEX *mutex )
{ {
LONG count; LONG count;
@ -721,7 +721,7 @@ void WINAPI ExAcquireFastMutexUnsafe( FAST_MUTEX *mutex )
* ExReleaseFastMutexUnsafe (NTOSKRNL.EXE.@) * ExReleaseFastMutexUnsafe (NTOSKRNL.EXE.@)
*/ */
DEFINE_FASTCALL1_WRAPPER(ExReleaseFastMutexUnsafe) DEFINE_FASTCALL1_WRAPPER(ExReleaseFastMutexUnsafe)
void WINAPI ExReleaseFastMutexUnsafe( FAST_MUTEX *mutex ) void FASTCALL ExReleaseFastMutexUnsafe( FAST_MUTEX *mutex )
{ {
LONG count; LONG count;
@ -1095,7 +1095,7 @@ void WINAPI ExReleaseResourceForThreadLite( ERESOURCE *resource, ERESOURCE_THREA
* ExReleaseResourceLite (NTOSKRNL.EXE.@) * ExReleaseResourceLite (NTOSKRNL.EXE.@)
*/ */
DEFINE_FASTCALL1_WRAPPER( ExReleaseResourceLite ) DEFINE_FASTCALL1_WRAPPER( ExReleaseResourceLite )
void WINAPI ExReleaseResourceLite( ERESOURCE *resource ) void FASTCALL ExReleaseResourceLite( ERESOURCE *resource )
{ {
ExReleaseResourceForThreadLite( resource, (ERESOURCE_THREAD)KeGetCurrentThread() ); ExReleaseResourceForThreadLite( resource, (ERESOURCE_THREAD)KeGetCurrentThread() );
} }

View File

@ -1528,7 +1528,7 @@ static inline void IoMarkIrpPending(IRP *irp)
#define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1) #define SYMBOLIC_LINK_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED | 0x1)
NTSTATUS WINAPI DbgQueryDebugFilterState(ULONG, ULONG); NTSTATUS WINAPI DbgQueryDebugFilterState(ULONG, ULONG);
void WINAPI ExAcquireFastMutexUnsafe(PFAST_MUTEX); void FASTCALL ExAcquireFastMutexUnsafe(PFAST_MUTEX);
BOOLEAN WINAPI ExAcquireResourceExclusiveLite(ERESOURCE*,BOOLEAN); BOOLEAN WINAPI ExAcquireResourceExclusiveLite(ERESOURCE*,BOOLEAN);
BOOLEAN WINAPI ExAcquireResourceSharedLite(ERESOURCE*,BOOLEAN); BOOLEAN WINAPI ExAcquireResourceSharedLite(ERESOURCE*,BOOLEAN);
BOOLEAN WINAPI ExAcquireSharedStarveExclusive(ERESOURCE*,BOOLEAN); BOOLEAN WINAPI ExAcquireSharedStarveExclusive(ERESOURCE*,BOOLEAN);
@ -1551,7 +1551,7 @@ PSLIST_ENTRY WINAPI ExInterlockedPushEntrySList(PSLIST_HEADER,PSLIST_ENTRY,PKSPI
LIST_ENTRY * WINAPI ExInterlockedRemoveHeadList(LIST_ENTRY*,KSPIN_LOCK*); LIST_ENTRY * WINAPI ExInterlockedRemoveHeadList(LIST_ENTRY*,KSPIN_LOCK*);
BOOLEAN WINAPI ExIsResourceAcquiredExclusiveLite(ERESOURCE*); BOOLEAN WINAPI ExIsResourceAcquiredExclusiveLite(ERESOURCE*);
ULONG WINAPI ExIsResourceAcquiredSharedLite(ERESOURCE*); ULONG WINAPI ExIsResourceAcquiredSharedLite(ERESOURCE*);
void WINAPI ExReleaseFastMutexUnsafe(PFAST_MUTEX); void FASTCALL ExReleaseFastMutexUnsafe(PFAST_MUTEX);
void WINAPI ExReleaseResourceForThreadLite(ERESOURCE*,ERESOURCE_THREAD); void WINAPI ExReleaseResourceForThreadLite(ERESOURCE*,ERESOURCE_THREAD);
ULONG WINAPI ExSetTimerResolution(ULONG,BOOLEAN); ULONG WINAPI ExSetTimerResolution(ULONG,BOOLEAN);
@ -1593,6 +1593,7 @@ void WINAPI IoReleaseCancelSpinLock(KIRQL);
NTSTATUS WINAPI IoSetDeviceInterfaceState(UNICODE_STRING*,BOOLEAN); NTSTATUS WINAPI IoSetDeviceInterfaceState(UNICODE_STRING*,BOOLEAN);
NTSTATUS WINAPI IoWMIRegistrationControl(PDEVICE_OBJECT,ULONG); NTSTATUS WINAPI IoWMIRegistrationControl(PDEVICE_OBJECT,ULONG);
void FASTCALL KeAcquireInStackQueuedSpinLockAtDpcLevel(KSPIN_LOCK*,KLOCK_QUEUE_HANDLE*);
#ifdef __i386__ #ifdef __i386__
void WINAPI KeAcquireSpinLock(KSPIN_LOCK*,KIRQL*); void WINAPI KeAcquireSpinLock(KSPIN_LOCK*,KIRQL*);
#else #else
@ -1615,6 +1616,7 @@ void WINAPI KeLeaveCriticalRegion(void);
void WINAPI KeQuerySystemTime(LARGE_INTEGER*); void WINAPI KeQuerySystemTime(LARGE_INTEGER*);
void WINAPI KeQueryTickCount(LARGE_INTEGER*); void WINAPI KeQueryTickCount(LARGE_INTEGER*);
ULONG WINAPI KeQueryTimeIncrement(void); ULONG WINAPI KeQueryTimeIncrement(void);
void FASTCALL KeReleaseInStackQueuedSpinLockFromDpcLevel(KLOCK_QUEUE_HANDLE*);
LONG WINAPI KeReleaseMutex(PRKMUTEX,BOOLEAN); LONG WINAPI KeReleaseMutex(PRKMUTEX,BOOLEAN);
LONG WINAPI KeReleaseSemaphore(PRKSEMAPHORE,KPRIORITY,LONG,BOOLEAN); LONG WINAPI KeReleaseSemaphore(PRKSEMAPHORE,KPRIORITY,LONG,BOOLEAN);
void WINAPI KeReleaseSpinLock(KSPIN_LOCK*,KIRQL); void WINAPI KeReleaseSpinLock(KSPIN_LOCK*,KIRQL);

View File

@ -100,6 +100,12 @@ extern "C" {
# endif # endif
#endif /* __cdecl */ #endif /* __cdecl */
#ifndef __fastcall
# ifndef _MSC_VER
# define __fastcall __stdcall
# endif
#endif
#ifndef __ms_va_list #ifndef __ms_va_list
# if (defined(__x86_64__) || defined(__aarch64__)) && defined (__GNUC__) # if (defined(__x86_64__) || defined(__aarch64__)) && defined (__GNUC__)
# define __ms_va_list __builtin_ms_va_list # define __ms_va_list __builtin_ms_va_list

View File

@ -65,7 +65,7 @@
/* fastcall support */ /* fastcall support */
#ifdef __i386__ #if defined(__i386__) && !defined(_WIN32)
# define DEFINE_FASTCALL1_WRAPPER(func) \ # define DEFINE_FASTCALL1_WRAPPER(func) \
__ASM_STDCALL_FUNC( __fastcall_ ## func, 4, \ __ASM_STDCALL_FUNC( __fastcall_ ## func, 4, \

View File

@ -42,6 +42,7 @@ extern "C" {
#endif #endif
#define NTAPI __stdcall #define NTAPI __stdcall
#define FASTCALL __fastcall
#ifndef MIDL_PASS #ifndef MIDL_PASS
# if defined(_MSC_VER) # if defined(_MSC_VER)