Add LoongArch64 support
authorJingyun Hua <huajingyun@loongson.cn>
Fri, 19 May 2023 09:14:32 +0000 (17:14 +0800)
committerJingyun Hua <huajingyun@loongson.cn>
Fri, 19 May 2023 09:44:41 +0000 (17:44 +0800)
Signed-off-by: Jingyun Hua <huajingyun@loongson.cn>
arch/arch-loongarch64.h [new file with mode: 0644]
arch/arch.h
configure
libfio.c
os/os-linux-syscall.h

diff --git a/arch/arch-loongarch64.h b/arch/arch-loongarch64.h
new file mode 100644 (file)
index 0000000..43ea83b
--- /dev/null
@@ -0,0 +1,10 @@
+#ifndef ARCH_LOONGARCH64_H
+#define ARCH_LOONGARCH64_H
+
+#define FIO_ARCH       (arch_loongarch64)
+
+#define read_barrier()         __asm__ __volatile__("dbar 0": : :"memory")
+#define write_barrier()                __asm__ __volatile__("dbar 0": : :"memory")
+#define nop                    __asm__ __volatile__("dbar 0": : :"memory")
+
+#endif
index fca003beabf4e606aa1b80af853f973009e8c7ed..6e476701b5a4258b6fb99ad3ae08209eb643d675 100644 (file)
@@ -23,6 +23,7 @@ enum {
        arch_hppa,
        arch_mips,
        arch_aarch64,
+       arch_loongarch64,
 
        arch_generic,
 
@@ -97,6 +98,8 @@ extern unsigned long arch_flags;
 #include "arch-hppa.h"
 #elif defined(__aarch64__)
 #include "arch-aarch64.h"
+#elif defined(__loongarch64)
+#include "arch-loongarch64.h"
 #else
 #warning "Unknown architecture, attempting to use generic model."
 #include "arch-generic.h"
index ca03350b478cde342df4c3f2a5bac8654e547917..74416fd48bc73e35cd8fd5440b9733efd1d0adbb 100755 (executable)
--- a/configure
+++ b/configure
@@ -499,13 +499,15 @@ elif check_define __aarch64__ ; then
   cpu="aarch64"
 elif check_define __hppa__ ; then
   cpu="hppa"
+elif check_define __loongarch64 ; then
+  cpu="loongarch64"
 else
   cpu=`uname -m`
 fi
 
 # Normalise host CPU name and set ARCH.
 case "$cpu" in
-  ia64|ppc|ppc64|s390|s390x|sparc64)
+  ia64|ppc|ppc64|s390|s390x|sparc64|loongarch64)
     cpu="$cpu"
   ;;
   i386|i486|i586|i686|i86pc|BePC)
index ddd49cd76da2e6062cbd4c0a246fe603f5d75cde..5e3fd30b718ecc57c3b9e6d5e45202d635a26e0f 100644 (file)
--- a/libfio.c
+++ b/libfio.c
@@ -74,6 +74,7 @@ static const char *fio_arch_strings[arch_nr] = {
        "hppa",
        "mips",
        "aarch64",
+       "loongarch64",
        "generic"
 };
 
index c399b2fa99d3976f8bdea884e832df842e5dab98..67ee4d9109fe0ac3f989087d593cc6c742b9b96f 100644 (file)
 #define __NR_ioprio_get                31
 #endif
 
+/* Linux syscalls for loongarch64 */
+#elif defined(ARCH_LOONGARCH64_H)
+#ifndef __NR_ioprio_set
+#define __NR_ioprio_set         30
+#define __NR_ioprio_get         31
+#endif
+
+#ifndef __NR_fadvise64
+#define __NR_fadvise64          223
+#endif
+
+#ifndef __NR_sys_splice
+#define __NR_sys_splice         76
+#define __NR_sys_tee           77
+#define __NR_sys_vmsplice       75
+#endif
 #else
 #warning "Unknown architecture"
 #endif