https://git.reactos.org/?p=reactos.git;a=commitdiff;h=3f4c98a425fb42f346ec0…
commit 3f4c98a425fb42f346ec01007860133e849330ca
Author: Stanislav Motylkov <x86corez(a)gmail.com>
AuthorDate: Thu Sep 9 18:56:32 2021 +0300
Commit: Stanislav Motylkov <x86corez(a)gmail.com>
CommitDate: Thu Sep 9 19:40:20 2021 +0300
[ARM] Fix some compilation errors for ARM
CORE-17634 CORE-17604
---
dll/ntdll/def/ntdll.spec | 10 +++++-----
dll/win32/msvcrt/msvcrt.spec | 4 ++--
dll/win32/rpcrt4/CMakeLists.txt | 2 +-
dll/win32/rpcrt4/msvc.S | 26 +++++++++++++++++++++++++-
ntoskrnl/ntoskrnl.spec | 2 +-
sdk/lib/crt/except/arm/chkstk_ms.s | 27 ---------------------------
6 files changed, 34 insertions(+), 37 deletions(-)
diff --git a/dll/ntdll/def/ntdll.spec b/dll/ntdll/def/ntdll.spec
index 63fd851dc8d..3db2bf08b82 100644
--- a/dll/ntdll/def/ntdll.spec
+++ b/dll/ntdll/def/ntdll.spec
@@ -611,7 +611,7 @@
@ stdcall -stub -version=0x600+ RtlAcquireSRWLockShared(ptr)
@ stdcall RtlActivateActivationContext(long ptr ptr)
@ stdcall RtlActivateActivationContextEx(long ptr ptr ptr)
-@ stdcall -arch=x86_64 RtlActivateActivationContextUnsafeFast(ptr ptr)
+@ stdcall -arch=x86_64,arm RtlActivateActivationContextUnsafeFast(ptr ptr)
@ stdcall RtlAddAccessAllowedAce(ptr long long ptr)
@ stdcall RtlAddAccessAllowedAceEx(ptr long long long ptr)
@ stdcall RtlAddAccessAllowedObjectAce(ptr long long long ptr ptr ptr)
@@ -743,7 +743,7 @@
@ stub -version=0x600+ RtlDeCommitDebugInfo
@ stdcall RtlDeNormalizeProcessParams(ptr)
@ stdcall RtlDeactivateActivationContext(long long)
-@ stdcall -arch=x86_64 RtlDeactivateActivationContextUnsafeFast(ptr)
+@ stdcall -arch=x86_64,arm RtlDeactivateActivationContextUnsafeFast(ptr)
@ stdcall -stub RtlDebugPrintTimes()
@ stdcall RtlDecodePointer(ptr)
@ stdcall RtlDecodeSystemPointer(ptr)
@@ -1757,7 +1757,7 @@
@ cdecl -arch=i386 _CIsin()
@ cdecl -arch=i386 _CIsqrt()
@ cdecl -arch=x86_64,arm __C_specific_handler(ptr long ptr ptr)
-@ cdecl -arch=x86_64 __chkstk()
+@ cdecl -arch=x86_64,arm __chkstk()
@ cdecl __isascii(long)
@ cdecl __iscsym(long)
@ cdecl __iscsymf(long)
@@ -1791,8 +1791,8 @@
@ cdecl _ltow(long ptr long)
@ cdecl _memccpy(ptr ptr long long)
@ cdecl _memicmp(str str long)
-@ cdecl -arch=x86_64 _setjmp(ptr ptr)
-@ cdecl -arch=x86_64 _setjmpex(ptr ptr)
+@ cdecl -arch=x86_64,arm _setjmp(ptr ptr)
+@ cdecl -arch=x86_64,arm _setjmpex(ptr ptr)
@ varargs _snprintf(ptr long str)
@ varargs _snwprintf(ptr long wstr)
@ cdecl _splitpath(str ptr ptr ptr ptr)
diff --git a/dll/win32/msvcrt/msvcrt.spec b/dll/win32/msvcrt/msvcrt.spec
index 62295ac46a3..adff7f8bf98 100644
--- a/dll/win32/msvcrt/msvcrt.spec
+++ b/dll/win32/msvcrt/msvcrt.spec
@@ -164,7 +164,7 @@
;@ cdecl -arch=arm __ExceptionPtrRethrow()
;@ cdecl -arch=arm __ExceptionPtrSwap()
;@ cdecl -arch=arm __ExceptionPtrToBool()
-@ cdecl -arch=arm __uncaught_exception()
+@ cdecl -arch=arm __uncaught_exception(ptr) MSVCRT___uncaught_exception
@ cdecl -arch=arm ?_query_new_handler@@YAP6AHI@ZXZ() MSVCRT__query_new_handler # int
(__cdecl*__cdecl _query_new_handler(void))(unsigned int)
@ cdecl -arch=arm ?_set_new_handler@@YAP6AHI@ZP6AHI@Z@Z() MSVCRT__set_new_handler # int
(__cdecl*__cdecl _set_new_handler(int (__cdecl*)(unsigned int)))(unsigned int)
@ cdecl -arch=arm ?_set_new_mode@@YAHH@Z() MSVCRT__set_new_mode # int __cdecl
_set_new_mode(int)
@@ -947,7 +947,7 @@
@ cdecl _seterrormode(long)
@ cdecl -norelay _setjmp(ptr)
@ cdecl -arch=i386 -norelay _setjmp3(ptr long)
-@ cdecl -arch=x86_64 -norelay _setjmpex(ptr ptr)
+@ cdecl -arch=x86_64,arm -norelay _setjmpex(ptr ptr)
@ cdecl _setmaxstdio(long)
@ cdecl _setmbcp(long)
@ cdecl _setmode(long long)
diff --git a/dll/win32/rpcrt4/CMakeLists.txt b/dll/win32/rpcrt4/CMakeLists.txt
index 90c9225847a..d2a7e0f2702 100644
--- a/dll/win32/rpcrt4/CMakeLists.txt
+++ b/dll/win32/rpcrt4/CMakeLists.txt
@@ -41,7 +41,7 @@ list(APPEND SOURCE
unix_func.c
${CMAKE_CURRENT_BINARY_DIR}/epm_c.c)
-if(MSVC AND NOT ARCH STREQUAL "arm")
+if(MSVC)
add_asm_files(rpcrt4_asm msvc.S)
endif()
diff --git a/dll/win32/rpcrt4/msvc.S b/dll/win32/rpcrt4/msvc.S
index c45ccc68853..ca7d77430aa 100644
--- a/dll/win32/rpcrt4/msvc.S
+++ b/dll/win32/rpcrt4/msvc.S
@@ -1,5 +1,9 @@
+#if defined(_M_IX86) || defined(_M_AMD64)
#include <asm.inc>
+#elif defined(_M_ARM)
+#include <kxarm.h>
+#endif
#ifdef _M_IX86
.code32
@@ -29,7 +33,8 @@ _call_stubless_func:
mov ecx, [esp] /* return address */
add esp, edx
jmp ecx
-#else
+
+#elif _M_AMD64
.code64
EXTERN ndr_client_call:PROC
@@ -141,6 +146,25 @@ FUNC NdrAsyncClientCall
ret
ENDFUNC
+#elif _M_ARM
+TEXTAREA
+
+ LEAF_ENTRY call_stubless_func
+
+ /* Unimplemented */
+ __assertfail
+ bx lr
+
+ LEAF_END call_stubless_func
+
+ LEAF_ENTRY call_server_func
+
+ /* Unimplemented */
+ __assertfail
+ bx lr
+
+ LEAF_END call_server_func
+
#endif
END
diff --git a/ntoskrnl/ntoskrnl.spec b/ntoskrnl/ntoskrnl.spec
index 8d2dc6f4b23..ced05f9a8bd 100644
--- a/ntoskrnl/ntoskrnl.spec
+++ b/ntoskrnl/ntoskrnl.spec
@@ -1559,7 +1559,7 @@
@ cdecl -arch=x86_64 _local_unwind()
@ cdecl _purecall()
@ cdecl -arch=x86_64,arm _setjmp(ptr ptr)
-@ cdecl -arch=x86_64 _setjmpex(ptr ptr)
+@ cdecl -arch=x86_64,arm _setjmpex(ptr ptr)
@ cdecl _snprintf()
@ cdecl _snwprintf()
@ cdecl _stricmp()
diff --git a/sdk/lib/crt/except/arm/chkstk_ms.s b/sdk/lib/crt/except/arm/chkstk_ms.s
deleted file mode 100644
index dcad0ca87e1..00000000000
--- a/sdk/lib/crt/except/arm/chkstk_ms.s
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- * COPYRIGHT: BSD - See COPYING.ARM in the top level directory
- * PROJECT: ReactOS CRT librariy
- * PURPOSE: Implementation of _chkstk and _alloca_probe
- * PROGRAMMER: Timo Kreuzer (timo.kreuzer(a)reactos.org)
- * Yuntian Zhang (yuntian.zh(a)gmail.com)
- */
-
-/* INCLUDES ******************************************************************/
-
-#include <kxarm.h>
-
-/* CODE **********************************************************************/
- TEXTAREA
-
- LEAF_ENTRY ___chkstk_ms
- __assertfail
- bx lr
- LEAF_END __chkstk_ms
-
- LEAF_ENTRY __alloca_probe
- __assertfail
- bx lr
- LEAF_END __alloca_probe
-
- END
-/* EOF */