Alistair Leslie-Hughes : ntoskrnl.exe: Implement _chkstk.
Alexandre Julliard
julliard at winehq.org
Tue Jun 26 04:44:27 CDT 2018
Module: wine
Branch: stable
Commit: 3b216ff5ded073343b17eef5fc7b317c1b4934c3
URL: https://source.winehq.org/git/wine.git/?a=commit;h=3b216ff5ded073343b17eef5fc7b317c1b4934c3
Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date: Mon Mar 26 22:58:55 2018 +0000
ntoskrnl.exe: Implement _chkstk.
These are just copied from ntdll.
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
(cherry picked from commit 075cbd34747390720e4b28be6b105b1a026c2844)
Signed-off-by: Michael Stefaniuc <mstefani at winehq.org>
---
dlls/ntoskrnl.exe/ntoskrnl.c | 30 ++++++++++++++++++++++++++++++
dlls/ntoskrnl.exe/ntoskrnl.exe.spec | 2 ++
2 files changed, 32 insertions(+)
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index 315402a..5bea991 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -3316,3 +3316,33 @@ INT __cdecl NTOSKRNL_wcsncmp( LPCWSTR str1, LPCWSTR str2, INT n )
{
return strncmpW( str1, str2, n );
}
+
+
+#ifdef __x86_64__
+/**************************************************************************
+ * __chkstk (NTOSKRNL.@)
+ *
+ * Supposed to touch all the stack pages, but we shouldn't need that.
+ */
+__ASM_GLOBAL_FUNC( __chkstk, "ret" );
+
+#elif defined(__i386__)
+/**************************************************************************
+ * _chkstk (NTOSKRNL.@)
+ */
+__ASM_STDCALL_FUNC( _chkstk, 0,
+ "negl %eax\n\t"
+ "addl %esp,%eax\n\t"
+ "xchgl %esp,%eax\n\t"
+ "movl 0(%eax),%eax\n\t" /* copy return address from old location */
+ "movl %eax,0(%esp)\n\t"
+ "ret" )
+#elif defined(__arm__)
+/**************************************************************************
+ * __chkstk (NTDLL.@)
+ *
+ * Incoming r4 contains words to allocate, converting to bytes then return
+ */
+__ASM_GLOBAL_FUNC( __chkstk, "lsl r4, r4, #2\n\t"
+ "bx lr" )
+#endif
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
index e8b8dff..0e4af90 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
@@ -1397,6 +1397,7 @@
@ stdcall -private ZwWaitForSingleObject(long long ptr) NtWaitForSingleObject
@ stdcall -private ZwWriteFile(long long ptr ptr ptr ptr long ptr ptr) NtWriteFile
@ stdcall -private ZwYieldExecution() NtYieldExecution
+@ stdcall -private -arch=arm,x86_64 -norelay __chkstk()
@ cdecl -private -arch=i386 _CIcos() msvcrt._CIcos
@ cdecl -private -arch=i386 _CIsin() msvcrt._CIsin
@ cdecl -private -arch=i386 _CIsqrt() msvcrt._CIsqrt
@@ -1412,6 +1413,7 @@
@ stub _aulldvrm
@ stdcall -private -arch=i386 -ret64 _aullrem(int64 int64)
@ stdcall -private -arch=i386 -ret64 _aullshr(int64 long)
+@ stdcall -private -arch=i386 -norelay _chkstk()
@ cdecl -private -arch=i386 _except_handler2(ptr ptr ptr ptr) msvcrt._except_handler2
@ cdecl -private -arch=i386 _except_handler3(ptr ptr ptr ptr) msvcrt._except_handler3
@ cdecl -private -arch=i386 _global_unwind2(ptr) msvcrt._global_unwind2
More information about the wine-cvs
mailing list