]> git.baikalelectronics.ru Git - arm-tf.git/commitdiff
fix(deps): add missing aeabi_memset.S
authorBoyan Karatotev <boyan.karatotev@arm.com>
Thu, 9 Feb 2023 15:55:34 +0000 (15:55 +0000)
committerBoyan Karatotev <boyan.karatotev@arm.com>
Mon, 13 Feb 2023 14:37:19 +0000 (14:37 +0000)
This file provides __aeabi_memclr8 builtin which the Ubuntu 22.04
version of clang 14 needs to compile. Add it to prevent this oddity from
failing the build.

Signed-off-by: Boyan Karatotev <boyan.karatotev@arm.com>
Change-Id: Id67aa0abba4a27c51b3ed6bb1be84b4e803b44bf

lib/compiler-rt/builtins/arm/aeabi_memset.S [new file with mode: 0644]
lib/compiler-rt/compiler-rt.mk

diff --git a/lib/compiler-rt/builtins/arm/aeabi_memset.S b/lib/compiler-rt/builtins/arm/aeabi_memset.S
new file mode 100644 (file)
index 0000000..2aa8ec0
--- /dev/null
@@ -0,0 +1,49 @@
+//===-- aeabi_memset.S - EABI memset implementation -----------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "../assembly.h"
+
+//  void __aeabi_memset(void *dest, size_t n, int c) { memset(dest, c, n); }
+//  void __aeabi_memclr(void *dest, size_t n) { __aeabi_memset(dest, n, 0); }
+
+        .syntax unified
+        .p2align 2
+DEFINE_COMPILERRT_FUNCTION(__aeabi_memset)
+        mov     r3, r1
+        mov     r1, r2
+        mov     r2, r3
+#ifdef USE_THUMB_1
+        push    {r7, lr}
+        bl      memset
+        pop     {r7, pc}
+#else
+        b       memset
+#endif
+END_COMPILERRT_FUNCTION(__aeabi_memset)
+
+DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memset4, __aeabi_memset)
+DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memset8, __aeabi_memset)
+
+        .p2align 2
+DEFINE_COMPILERRT_FUNCTION(__aeabi_memclr)
+        mov     r2, r1
+        movs    r1, #0
+#ifdef USE_THUMB_1
+        push    {r7, lr}
+        bl      memset
+        pop     {r7, pc}
+#else
+        b       memset
+#endif
+END_COMPILERRT_FUNCTION(__aeabi_memclr)
+
+DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memclr4, __aeabi_memclr)
+DEFINE_AEABI_FUNCTION_ALIAS(__aeabi_memclr8, __aeabi_memclr)
+
+NO_EXEC_STACK_DIRECTIVE
+
index 2338908f3db41cbe6b80c9fbf802769333b4d0ee..b41c4d037e9b49050978e486e3a549c8c8cd9b35 100644 (file)
@@ -35,6 +35,7 @@ ifeq (${ARCH},aarch32)
 COMPILER_RT_SRCS       +=      lib/compiler-rt/builtins/arm/aeabi_ldivmod.S    \
                                lib/compiler-rt/builtins/arm/aeabi_uldivmod.S   \
                                lib/compiler-rt/builtins/arm/aeabi_memcpy.S     \
+                               lib/compiler-rt/builtins/arm/aeabi_memset.S     \
                                lib/compiler-rt/builtins/ctzdi2.c               \
                                lib/compiler-rt/builtins/divdi3.c               \
                                lib/compiler-rt/builtins/divmoddi4.c            \