Commit a4be1ca6 authored by Sebastian Lackner's avatar Sebastian Lackner Committed by Alexandre Julliard

ntdll: Implement RtlInterlockedPushListSListEx and fix calling convention of…

ntdll: Implement RtlInterlockedPushListSListEx and fix calling convention of RtlInterlockedPushListSList. Signed-off-by: 's avatarSebastian Lackner <sebastian@fds-team.de> Signed-off-by: 's avatarAlexandre Julliard <julliard@winehq.org>
parent d8a2d5eb
...@@ -706,7 +706,8 @@ ...@@ -706,7 +706,8 @@
@ stdcall RtlInterlockedFlushSList(ptr) @ stdcall RtlInterlockedFlushSList(ptr)
@ stdcall RtlInterlockedPopEntrySList(ptr) @ stdcall RtlInterlockedPopEntrySList(ptr)
@ stdcall RtlInterlockedPushEntrySList(ptr ptr) @ stdcall RtlInterlockedPushEntrySList(ptr ptr)
@ stdcall RtlInterlockedPushListSList(ptr ptr ptr long) @ stdcall -norelay RtlInterlockedPushListSList(ptr ptr ptr long)
@ stdcall RtlInterlockedPushListSListEx(ptr ptr ptr long)
# @ stub RtlInvertRangeList # @ stub RtlInvertRangeList
@ stdcall RtlIpv4AddressToStringA(ptr ptr) @ stdcall RtlIpv4AddressToStringA(ptr ptr)
@ stdcall RtlIpv4AddressToStringExA(ptr long ptr ptr) @ stdcall RtlIpv4AddressToStringExA(ptr long ptr ptr)
......
...@@ -58,6 +58,16 @@ static RTL_CRITICAL_SECTION_DEBUG critsect_debug = ...@@ -58,6 +58,16 @@ static RTL_CRITICAL_SECTION_DEBUG critsect_debug =
}; };
static RTL_CRITICAL_SECTION peb_lock = { &critsect_debug, -1, 0, 0, 0, 0 }; static RTL_CRITICAL_SECTION peb_lock = { &critsect_debug, -1, 0, 0, 0, 0 };
#ifdef __i386__
#define DEFINE_FASTCALL4_ENTRYPOINT( name ) \
__ASM_STDCALL_FUNC( name, 16, \
"popl %eax\n\t" \
"pushl %edx\n\t" \
"pushl %ecx\n\t" \
"pushl %eax\n\t" \
"jmp " __ASM_NAME("__regs_") #name __ASM_STDCALL(16))
#endif
/* CRC polynomial 0xedb88320 */ /* CRC polynomial 0xedb88320 */
static const DWORD CRC_table[256] = static const DWORD CRC_table[256] =
{ {
...@@ -1191,9 +1201,9 @@ PSLIST_ENTRY WINAPI RtlInterlockedPopEntrySList(PSLIST_HEADER list) ...@@ -1191,9 +1201,9 @@ PSLIST_ENTRY WINAPI RtlInterlockedPopEntrySList(PSLIST_HEADER list)
} }
/************************************************************************* /*************************************************************************
* RtlInterlockedPushListSList [NTDLL.@] * RtlInterlockedPushListSListEx [NTDLL.@]
*/ */
PSLIST_ENTRY WINAPI RtlInterlockedPushListSList(PSLIST_HEADER list, PSLIST_ENTRY first, PSLIST_ENTRY WINAPI RtlInterlockedPushListSListEx(PSLIST_HEADER list, PSLIST_ENTRY first,
PSLIST_ENTRY last, ULONG count) PSLIST_ENTRY last, ULONG count)
{ {
SLIST_HEADER old, new; SLIST_HEADER old, new;
...@@ -1222,6 +1232,21 @@ PSLIST_ENTRY WINAPI RtlInterlockedPushListSList(PSLIST_HEADER list, PSLIST_ENTRY ...@@ -1222,6 +1232,21 @@ PSLIST_ENTRY WINAPI RtlInterlockedPushListSList(PSLIST_HEADER list, PSLIST_ENTRY
#endif #endif
} }
/*************************************************************************
* RtlInterlockedPushListSList [NTDLL.@]
*/
#ifdef DEFINE_FASTCALL4_ENTRYPOINT
DEFINE_FASTCALL4_ENTRYPOINT(RtlInterlockedPushListSList)
PSLIST_ENTRY WINAPI __regs_RtlInterlockedPushListSList(PSLIST_HEADER list, PSLIST_ENTRY first,
PSLIST_ENTRY last, ULONG count)
#else
PSLIST_ENTRY WINAPI RtlInterlockedPushListSList(PSLIST_HEADER list, PSLIST_ENTRY first,
PSLIST_ENTRY last, ULONG count)
#endif
{
return RtlInterlockedPushListSListEx(list, first, last, count);
}
/****************************************************************************** /******************************************************************************
* RtlGetCompressionWorkSpaceSize [NTDLL.@] * RtlGetCompressionWorkSpaceSize [NTDLL.@]
*/ */
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment