From 62a1d5c0f5bc52227ba43ccb7924694d661449a2 Mon Sep 17 00:00:00 2001 From: Xiaotian Wu Date: Mon, 6 Feb 2023 12:48:50 +0000 Subject: [loong64] Add initial support for LoongArch64 Add support for building a LoongArch64 Linux userspace binary. Signed-off-by: Xiaotian Wu Modified-by: Michael Brown Signed-off-by: Michael Brown --- src/arch/loong64/include/bits/string.h | 61 ++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 src/arch/loong64/include/bits/string.h (limited to 'src/arch/loong64/include/bits/string.h') diff --git a/src/arch/loong64/include/bits/string.h b/src/arch/loong64/include/bits/string.h new file mode 100644 index 000000000..f54e25806 --- /dev/null +++ b/src/arch/loong64/include/bits/string.h @@ -0,0 +1,61 @@ +#ifndef _BITS_STRING_H +#define _BITS_STRING_H + +FILE_LICENCE ( GPL2_OR_LATER_OR_UBDL ); + +/** @file + * + * String functions + * + */ + +extern void loong64_bzero ( void *dest, size_t len ); +extern void loong64_memset ( void *dest, size_t len, int character ); +extern void loong64_memcpy ( void *dest, const void *src, size_t len ); +extern void loong64_memmove_forwards ( void *dest, const void *src, size_t len ); +extern void loong64_memmove_backwards ( void *dest, const void *src, size_t len ); +extern void loong64_memmove ( void *dest, const void *src, size_t len ); + +/** + * 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 ) { + loong64_memset ( dest, len, character ); + 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 ) { + loong64_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 ) { + loong64_memmove ( dest, src, len ); + return dest; +} + +#endif /* _BITS_STRING_H */ -- cgit v1.2.3-55-g7522