summaryrefslogtreecommitdiffstats
path: root/src/arch/arm32
diff options
context:
space:
mode:
authorMichael Brown2016-05-09 17:03:19 +0200
committerMichael Brown2016-05-11 09:15:52 +0200
commit95716ece91a29f1d122741ec3dd307765d96e314 (patch)
treea1667c0153611091b46b5a765d97f4dda9505ba6 /src/arch/arm32
parent[libc] Avoid implicit assumptions about potentially-optimised memcpy() (diff)
downloadipxe-95716ece91a29f1d122741ec3dd307765d96e314.tar.gz
ipxe-95716ece91a29f1d122741ec3dd307765d96e314.tar.xz
ipxe-95716ece91a29f1d122741ec3dd307765d96e314.zip
[arm] Add optimised string functions for 64-bit ARM
Signed-off-by: Michael Brown <mcb30@ipxe.org>
Diffstat (limited to 'src/arch/arm32')
-rw-r--r--src/arch/arm32/include/bits/string.h60
1 files changed, 60 insertions, 0 deletions
diff --git a/src/arch/arm32/include/bits/string.h b/src/arch/arm32/include/bits/string.h
new file mode 100644
index 00000000..5b1c1505
--- /dev/null
+++ b/src/arch/arm32/include/bits/string.h
@@ -0,0 +1,60 @@
+#ifndef BITS_STRING_H
+#define BITS_STRING_H
+
+FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL );
+
+/** @file
+ *
+ * String functions
+ *
+ */
+
+/**
+ * Fill memory region
+ *
+ * @v dest Destination region
+ * @v character Fill character
+ * @v len Length
+ * @ret dest Destination region
+ */
+static inline __attribute__ (( always_inline )) void *
+memset ( void *dest, int character, size_t len ) {
+
+ /* Not yet optimised */
+ generic_memset ( dest, character, len );
+ return dest;
+}
+
+/**
+ * Copy memory region
+ *
+ * @v dest Destination region
+ * @v src Source region
+ * @v len Length
+ * @ret dest Destination region
+ */
+static inline __attribute__ (( always_inline )) void *
+memcpy ( void *dest, const void *src, size_t len ) {
+
+ /* Not yet optimised */
+ generic_memcpy ( dest, src, len );
+ return dest;
+}
+
+/**
+ * Copy (possibly overlapping) memory region
+ *
+ * @v dest Destination region
+ * @v src Source region
+ * @v len Length
+ * @ret dest Destination region
+ */
+static inline __attribute__ (( always_inline )) void *
+memmove ( void *dest, const void *src, size_t len ) {
+
+ /* Not yet optimised */
+ generic_memmove ( dest, src, len );
+ return dest;
+}
+
+#endif /* BITS_STRING_H */