]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
architecture: Add support for the LoongArch architecture
authorWu Xiaotian <wuxiaotian@loongson.cn>
Tue, 1 Sep 2020 04:13:18 +0000 (12:13 +0800)
committerXiaotian Wu <wuxiaotian@loongson.cn>
Tue, 30 Nov 2021 15:34:20 +0000 (23:34 +0800)
src/basic/architecture.c
src/basic/architecture.h

index 730a5f2de2d758b4ccf023dcf29825c52611615b..f474ed29544dc0265e7c6cfd4df121719b0ec6ca 100644 (file)
@@ -70,6 +70,9 @@ int uname_architecture(void) {
                 { "parisc64",   ARCHITECTURE_PARISC64 },
                 { "parisc",     ARCHITECTURE_PARISC   },
 
+#elif defined(__loongarch64)
+                { "loongarch64", ARCHITECTURE_LOONGARCH64 },
+
 #elif defined(__m68k__)
                 { "m68k",       ARCHITECTURE_M68K     },
 
@@ -137,38 +140,39 @@ int uname_architecture(void) {
 
 /* Maintain same order as in the table above. */
 static const char *const architecture_table[_ARCHITECTURE_MAX] = {
-        [ARCHITECTURE_ARM64]     = "arm64",
-        [ARCHITECTURE_ARM64_BE]  = "arm64-be",
-        [ARCHITECTURE_ARM]       = "arm",
-        [ARCHITECTURE_ARM_BE]    = "arm-be",
-        [ARCHITECTURE_ALPHA]     = "alpha",
-        [ARCHITECTURE_ARC]       = "arc",
-        [ARCHITECTURE_ARC_BE]    = "arc-be",
-        [ARCHITECTURE_CRIS]      = "cris",
-        [ARCHITECTURE_X86_64]    = "x86-64",
-        [ARCHITECTURE_X86]       = "x86",
-        [ARCHITECTURE_IA64]      = "ia64",
-        [ARCHITECTURE_M68K]      = "m68k",
-        [ARCHITECTURE_MIPS64_LE] = "mips64-le",
-        [ARCHITECTURE_MIPS64]    = "mips64",
-        [ARCHITECTURE_MIPS_LE]   = "mips-le",
-        [ARCHITECTURE_MIPS]      = "mips",
-        [ARCHITECTURE_NIOS2]     = "nios2",
-        [ARCHITECTURE_PARISC64]  = "parisc64",
-        [ARCHITECTURE_PARISC]    = "parisc",
-        [ARCHITECTURE_PPC64_LE]  = "ppc64-le",
-        [ARCHITECTURE_PPC64]     = "ppc64",
-        [ARCHITECTURE_PPC]       = "ppc",
-        [ARCHITECTURE_PPC_LE]    = "ppc-le",
-        [ARCHITECTURE_RISCV32]   = "riscv32",
-        [ARCHITECTURE_RISCV64]   = "riscv64",
-        [ARCHITECTURE_S390X]     = "s390x",
-        [ARCHITECTURE_S390]      = "s390",
-        [ARCHITECTURE_SH64]      = "sh64",
-        [ARCHITECTURE_SH]        = "sh",
-        [ARCHITECTURE_SPARC64]   = "sparc64",
-        [ARCHITECTURE_SPARC]     = "sparc",
-        [ARCHITECTURE_TILEGX]    = "tilegx",
+        [ARCHITECTURE_ARM64]       = "arm64",
+        [ARCHITECTURE_ARM64_BE]    = "arm64-be",
+        [ARCHITECTURE_ARM]         = "arm",
+        [ARCHITECTURE_ARM_BE]      = "arm-be",
+        [ARCHITECTURE_ALPHA]       = "alpha",
+        [ARCHITECTURE_ARC]         = "arc",
+        [ARCHITECTURE_ARC_BE]      = "arc-be",
+        [ARCHITECTURE_CRIS]        = "cris",
+        [ARCHITECTURE_X86_64]      = "x86-64",
+        [ARCHITECTURE_X86]         = "x86",
+        [ARCHITECTURE_IA64]        = "ia64",
+        [ARCHITECTURE_LOONGARCH64] = "loongarch64",
+        [ARCHITECTURE_M68K]        = "m68k",
+        [ARCHITECTURE_MIPS64_LE]   = "mips64-le",
+        [ARCHITECTURE_MIPS64]      = "mips64",
+        [ARCHITECTURE_MIPS_LE]     = "mips-le",
+        [ARCHITECTURE_MIPS]        = "mips",
+        [ARCHITECTURE_NIOS2]       = "nios2",
+        [ARCHITECTURE_PARISC64]    = "parisc64",
+        [ARCHITECTURE_PARISC]      = "parisc",
+        [ARCHITECTURE_PPC64_LE]    = "ppc64-le",
+        [ARCHITECTURE_PPC64]       = "ppc64",
+        [ARCHITECTURE_PPC]         = "ppc",
+        [ARCHITECTURE_PPC_LE]      = "ppc-le",
+        [ARCHITECTURE_RISCV32]     = "riscv32",
+        [ARCHITECTURE_RISCV64]     = "riscv64",
+        [ARCHITECTURE_S390X]       = "s390x",
+        [ARCHITECTURE_S390]        = "s390",
+        [ARCHITECTURE_SH64]        = "sh64",
+        [ARCHITECTURE_SH]          = "sh",
+        [ARCHITECTURE_SPARC64]     = "sparc64",
+        [ARCHITECTURE_SPARC]       = "sparc",
+        [ARCHITECTURE_TILEGX]      = "tilegx",
 };
 
 DEFINE_STRING_TABLE_LOOKUP(architecture, int);
index eaee01348e46ba0a983fc2c2f13bc78375e8899b..0b91c69c0bdccaa511d7da758027c8780ad2fc02 100644 (file)
@@ -20,6 +20,7 @@ typedef enum {
         ARCHITECTURE_ARM_BE,
         ARCHITECTURE_CRIS,
         ARCHITECTURE_IA64,
+        ARCHITECTURE_LOONGARCH64,
         ARCHITECTURE_M68K,
         ARCHITECTURE_MIPS,
         ARCHITECTURE_MIPS64,
@@ -197,6 +198,10 @@ int uname_architecture(void);
 #  elif defined(__SH4A__)
 #    define LIB_ARCH_TUPLE "sh4a-linux-gnu"
 #  endif
+#elif defined(__loongarch64)
+#    pragma message "Please update the Arch tuple of loongarch64 after psABI is stable"
+#    define native_architecture() ARCHITECTURE_LOONGARCH64
+#    define LIB_ARCH_TUPLE "loongarch64-linux-gnu"
 #elif defined(__m68k__)
 #  define native_architecture() ARCHITECTURE_M68K
 #  define LIB_ARCH_TUPLE "m68k-linux-gnu"