From d8be1bc0193f45d3900f8466f26d1411b7f919c3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Timo=20Ter=C3=A4s?= Date: Sun, 30 Aug 2015 18:58:26 +0300 Subject: [PATCH] implement arm eabi mem* functions these functions are part of the ARM EABI, meaning compilers may generate references to them. known versions of gcc do not use them, but llvm does. they are not provided by libgcc, and the de facto standard seems to be that libc provides them. --- arch/arm/src/__aeabi_memclr.c | 9 +++++++++ arch/arm/src/__aeabi_memcpy.c | 9 +++++++++ arch/arm/src/__aeabi_memmove.c | 9 +++++++++ arch/arm/src/__aeabi_memset.c | 9 +++++++++ 4 files changed, 36 insertions(+) create mode 100644 arch/arm/src/__aeabi_memclr.c create mode 100644 arch/arm/src/__aeabi_memcpy.c create mode 100644 arch/arm/src/__aeabi_memmove.c create mode 100644 arch/arm/src/__aeabi_memset.c diff --git a/arch/arm/src/__aeabi_memclr.c b/arch/arm/src/__aeabi_memclr.c new file mode 100644 index 00000000..a25306d7 --- /dev/null +++ b/arch/arm/src/__aeabi_memclr.c @@ -0,0 +1,9 @@ +#include +#include "libc.h" + +void __aeabi_memclr(void *dest, size_t n) +{ + memset(dest, 0, n); +} +weak_alias(__aeabi_memclr, __aeabi_memclr4); +weak_alias(__aeabi_memclr, __aeabi_memclr8); diff --git a/arch/arm/src/__aeabi_memcpy.c b/arch/arm/src/__aeabi_memcpy.c new file mode 100644 index 00000000..4ae5c777 --- /dev/null +++ b/arch/arm/src/__aeabi_memcpy.c @@ -0,0 +1,9 @@ +#include +#include "libc.h" + +void __aeabi_memcpy(void *restrict dest, const void *restrict src, size_t n) +{ + memcpy(dest, src, n); +} +weak_alias(__aeabi_memcpy, __aeabi_memcpy4); +weak_alias(__aeabi_memcpy, __aeabi_memcpy8); diff --git a/arch/arm/src/__aeabi_memmove.c b/arch/arm/src/__aeabi_memmove.c new file mode 100644 index 00000000..951e7d39 --- /dev/null +++ b/arch/arm/src/__aeabi_memmove.c @@ -0,0 +1,9 @@ +#include +#include "libc.h" + +void __aeabi_memmove(void *dest, const void *src, size_t n) +{ + memmove(dest, src, n); +} +weak_alias(__aeabi_memmove, __aeabi_memmove4); +weak_alias(__aeabi_memmove, __aeabi_memmove8); diff --git a/arch/arm/src/__aeabi_memset.c b/arch/arm/src/__aeabi_memset.c new file mode 100644 index 00000000..89299757 --- /dev/null +++ b/arch/arm/src/__aeabi_memset.c @@ -0,0 +1,9 @@ +#include +#include "libc.h" + +void __aeabi_memset(void *dest, size_t n, int c) +{ + memset(dest, c, n); +} +weak_alias(__aeabi_memset, __aeabi_memset4); +weak_alias(__aeabi_memset, __aeabi_memset8); -- 2.25.1