Martin Storsjo : ntdll: Implement a no-op __chkstk for arm64.

Alexandre Julliard julliard at winehq.org
Mon Dec 21 15:49:52 CST 2020


Module: wine
Branch: master
Commit: a1955bfb6e49209568eef561e6ead0376a2162e5
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=a1955bfb6e49209568eef561e6ead0376a2162e5

Author: Martin Storsjo <martin at martin.st>
Date:   Sat Dec 19 00:33:52 2020 +0200

ntdll: Implement a no-op __chkstk for arm64.

Signed-off-by: Martin Storsjo <martin at martin.st>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/kernel32/kernel32.spec         |  2 +-
 dlls/kernelbase/kernelbase.spec     |  2 +-
 dlls/ntdll/ntdll.spec               |  2 +-
 dlls/ntdll/signal_arm64.c           |  8 ++++++++
 dlls/ntoskrnl.exe/ntoskrnl.c        | 18 ++++++------------
 dlls/ntoskrnl.exe/ntoskrnl.exe.spec |  2 +-
 6 files changed, 18 insertions(+), 16 deletions(-)

diff --git a/dlls/kernel32/kernel32.spec b/dlls/kernel32/kernel32.spec
index 949b262a592..ee2e3f8ad31 100644
--- a/dlls/kernel32/kernel32.spec
+++ b/dlls/kernel32/kernel32.spec
@@ -1647,7 +1647,7 @@
 @ stdcall WriteTapemark(ptr long long long)
 @ stdcall -import ZombifyActCtx(ptr)
 @ stdcall -arch=x86_64 -private __C_specific_handler(ptr long ptr ptr) ntdll.__C_specific_handler
-@ cdecl -arch=arm,x86_64 -norelay __chkstk() ntdll.__chkstk
+@ cdecl -arch=arm,arm64,x86_64 -norelay __chkstk() ntdll.__chkstk
 @ stub _DebugOut
 @ stub _DebugPrintf
 @ stdcall _hread(long ptr long)
diff --git a/dlls/kernelbase/kernelbase.spec b/dlls/kernelbase/kernelbase.spec
index 36d0492857f..b02737f045b 100644
--- a/dlls/kernelbase/kernelbase.spec
+++ b/dlls/kernelbase/kernelbase.spec
@@ -1742,7 +1742,7 @@
 # @ stub _GetMUIStringFromCache
 # @ stub _OpenMuiStringCache
 @ stdcall -arch=x86_64 -private __C_specific_handler(ptr long ptr ptr) ntdll.__C_specific_handler
-@ cdecl -arch=arm,x86_64 -norelay __chkstk() ntdll.__chkstk
+@ cdecl -arch=arm,arm64,x86_64 -norelay __chkstk() ntdll.__chkstk
 # @ stub __dllonexit3
 @ stub __misaligned_access
 # @ stub __wgetmainargs
diff --git a/dlls/ntdll/ntdll.spec b/dlls/ntdll/ntdll.spec
index b9acb120844..f3ec8fd9e39 100644
--- a/dlls/ntdll/ntdll.spec
+++ b/dlls/ntdll/ntdll.spec
@@ -1445,7 +1445,7 @@
 @ cdecl -private -arch=i386 _CIsin()
 @ cdecl -private -arch=i386 _CIsqrt()
 @ stdcall -arch=x86_64,arm64 __C_specific_handler(ptr long ptr ptr)
-@ cdecl -arch=arm,x86_64 -norelay __chkstk()
+@ cdecl -arch=arm,arm64,x86_64 -norelay __chkstk()
 @ cdecl __isascii(long)
 @ cdecl __iscsym(long)
 @ cdecl __iscsymf(long)
diff --git a/dlls/ntdll/signal_arm64.c b/dlls/ntdll/signal_arm64.c
index 4c4694959f0..9db8a8b17b4 100644
--- a/dlls/ntdll/signal_arm64.c
+++ b/dlls/ntdll/signal_arm64.c
@@ -100,6 +100,14 @@ static inline BOOL is_valid_frame( ULONG_PTR frame )
 }
 
 
+/**************************************************************************
+ *		__chkstk (NTDLL.@)
+ *
+ * Supposed to touch all the stack pages, but we shouldn't need that.
+ */
+__ASM_GLOBAL_FUNC( __chkstk, "ret")
+
+
 /***********************************************************************
  *		RtlCaptureContext (NTDLL.@)
  */
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.c b/dlls/ntoskrnl.exe/ntoskrnl.c
index 4092e33db43..2e6131c32c7 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.c
+++ b/dlls/ntoskrnl.exe/ntoskrnl.c
@@ -3831,18 +3831,13 @@ PKEVENT WINAPI IoCreateNotificationEvent(UNICODE_STRING *name, HANDLE *handle)
 }
 
 
-#ifdef __x86_64__
 /**************************************************************************
  *		__chkstk (NTOSKRNL.@)
- *
- * Supposed to touch all the stack pages, but we shouldn't need that.
  */
+#ifdef __x86_64__
+/* Supposed to touch all the stack pages, but we shouldn't need that. */
 __ASM_GLOBAL_FUNC( __chkstk, "ret" );
-
 #elif defined(__i386__)
-/**************************************************************************
- *           _chkstk   (NTOSKRNL.@)
- */
 __ASM_GLOBAL_FUNC( _chkstk,
                    "negl %eax\n\t"
                    "addl %esp,%eax\n\t"
@@ -3851,13 +3846,12 @@ __ASM_GLOBAL_FUNC( _chkstk,
                    "movl %eax,0(%esp)\n\t"
                    "ret" )
 #elif defined(__arm__)
-/**************************************************************************
- *		__chkstk (NTDLL.@)
- *
- * Incoming r4 contains words to allocate, converting to bytes then return
- */
+/* Incoming r4 contains words to allocate, converting to bytes then return */
 __ASM_GLOBAL_FUNC( __chkstk, "lsl r4, r4, #2\n\t"
                              "bx lr" )
+#elif defined(__aarch64__)
+/* Supposed to touch all the stack pages, but we shouldn't need that. */
+__ASM_GLOBAL_FUNC( __chkstk, "ret" );
 #endif
 
 /*********************************************************************
diff --git a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
index 6ac70c718f1..d57a2f81df6 100644
--- a/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
+++ b/dlls/ntoskrnl.exe/ntoskrnl.exe.spec
@@ -1522,7 +1522,7 @@
 @ stdcall ZwWriteFile(long long ptr ptr ptr ptr long ptr ptr) NtWriteFile
 @ stdcall -private ZwYieldExecution() NtYieldExecution
 @ stdcall -arch=x86_64 __C_specific_handler(ptr long ptr ptr)
-@ cdecl -arch=arm,x86_64 -norelay __chkstk()
+@ cdecl -arch=arm,arm64,x86_64 -norelay __chkstk()
 @ cdecl -private -arch=i386 _CIcos()
 @ cdecl -private -arch=i386 _CIsin()
 @ cdecl -private -arch=i386 _CIsqrt()




More information about the wine-cvs mailing list