浏览代码

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.
Timo Teräs 9 年之前
父节点
当前提交
d8be1bc019
共有 4 个文件被更改,包括 36 次插入0 次删除
  1. 9 0
      arch/arm/src/__aeabi_memclr.c
  2. 9 0
      arch/arm/src/__aeabi_memcpy.c
  3. 9 0
      arch/arm/src/__aeabi_memmove.c
  4. 9 0
      arch/arm/src/__aeabi_memset.c

+ 9 - 0
arch/arm/src/__aeabi_memclr.c

@@ -0,0 +1,9 @@
+#include <string.h>
+#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);

+ 9 - 0
arch/arm/src/__aeabi_memcpy.c

@@ -0,0 +1,9 @@
+#include <string.h>
+#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);

+ 9 - 0
arch/arm/src/__aeabi_memmove.c

@@ -0,0 +1,9 @@
+#include <string.h>
+#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);

+ 9 - 0
arch/arm/src/__aeabi_memset.c

@@ -0,0 +1,9 @@
+#include <string.h>
+#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);