summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorXiaotian Wu <wuxiaotian@loongson.cn>2021-02-09 15:39:13 +0800
committerPaul Moore <paul@paul-moore.com>2023-02-18 22:07:30 -0500
commit6966ec77b195ac289ae168c7c5646d59a307f33f (patch)
treedaa4e9a4febf1e891195a61c608b6fc0155967ff /tools
parent315f7b9ec6d8992035a2c0f652949ee34843db32 (diff)
downloadlibseccomp-6966ec77b195ac289ae168c7c5646d59a307f33f.tar.gz
arch: Add 64-bit LoongArch support
Signed-off-by: Xiaotian Wu <wuxiaotian@loongson.cn> Signed-off-by: WANG Xuerui <git@xen0n.name> Acked-by: Tom Hromatka <tom.hromatka@oracle.com> Signed-off-by: Paul Moore <paul@paul-moore.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/scmp_arch_detect.c3
-rw-r--r--tools/scmp_bpf_disasm.c2
-rw-r--r--tools/scmp_bpf_sim.c2
-rw-r--r--tools/util.c2
-rw-r--r--tools/util.h11
5 files changed, 20 insertions, 0 deletions
diff --git a/tools/scmp_arch_detect.c b/tools/scmp_arch_detect.c
index b6bd2bb..c23cf7f 100644
--- a/tools/scmp_arch_detect.c
+++ b/tools/scmp_arch_detect.c
@@ -81,6 +81,9 @@ int main(int argc, char *argv[])
case SCMP_ARCH_AARCH64:
printf("aarch64\n");
break;
+ case SCMP_ARCH_LOONGARCH64:
+ printf("loongarch64\n");
+ break;
case SCMP_ARCH_MIPS:
printf("mips\n");
break;
diff --git a/tools/scmp_bpf_disasm.c b/tools/scmp_bpf_disasm.c
index b682de7..4572659 100644
--- a/tools/scmp_bpf_disasm.c
+++ b/tools/scmp_bpf_disasm.c
@@ -484,6 +484,8 @@ int main(int argc, char *argv[])
arch = AUDIT_ARCH_ARM;
else if (strcmp(optarg, "aarch64") == 0)
arch = AUDIT_ARCH_AARCH64;
+ else if (strcmp(optarg, "loongarch64") == 0)
+ arch = AUDIT_ARCH_LOONGARCH64;
else if (strcmp(optarg, "mips") == 0)
arch = AUDIT_ARCH_MIPS;
else if (strcmp(optarg, "mipsel") == 0)
diff --git a/tools/scmp_bpf_sim.c b/tools/scmp_bpf_sim.c
index 04edfbc..7d31d79 100644
--- a/tools/scmp_bpf_sim.c
+++ b/tools/scmp_bpf_sim.c
@@ -259,6 +259,8 @@ int main(int argc, char *argv[])
arch = AUDIT_ARCH_ARM;
else if (strcmp(optarg, "aarch64") == 0)
arch = AUDIT_ARCH_AARCH64;
+ else if (strcmp(optarg, "loongarch64") == 0)
+ arch = AUDIT_ARCH_LOONGARCH64;
else if (strcmp(optarg, "mips") == 0)
arch = AUDIT_ARCH_MIPS;
else if (strcmp(optarg, "mipsel") == 0)
diff --git a/tools/util.c b/tools/util.c
index afea6c9..327fc14 100644
--- a/tools/util.c
+++ b/tools/util.c
@@ -44,6 +44,8 @@
#define ARCH_NATIVE AUDIT_ARCH_ARM
#elif __aarch64__
#define ARCH_NATIVE AUDIT_ARCH_AARCH64
+#elif __loongarch64
+#define ARCH_NATIVE AUDIT_ARCH_LOONGARCH64
#elif __mips__ && _MIPS_SIM == _MIPS_SIM_ABI32
#if __MIPSEB__
#define ARCH_NATIVE AUDIT_ARCH_MIPS
diff --git a/tools/util.h b/tools/util.h
index 6c2ca33..24b9ed6 100644
--- a/tools/util.h
+++ b/tools/util.h
@@ -38,6 +38,17 @@
#endif /* AUDIT_ARCH_AARCH64 */
/**
+ * The 64-bit LoongArch architecture tokens
+ */
+/* 64-bit LoongArch audit support is upstream as of 5.19-rc1 */
+#ifndef AUDIT_ARCH_LOONGARCH64
+#ifndef EM_LOONGARCH
+#define EM_LOONGARCH 258
+#endif /* EM_LOONGARCH */
+#define AUDIT_ARCH_LOONGARCH64 (EM_LOONGARCH|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE)
+#endif /* AUDIT_ARCH_LOONGARCH64 */
+
+/**
* The MIPS architecture tokens
*/
#ifndef __AUDIT_ARCH_CONVENTION_MIPS64_N32