diff --git a/src/basic/architecture.c b/src/basic/architecture.c
index 409632c..e86aff3 100644
--- a/src/basic/architecture.c
+++ b/src/basic/architecture.c
@@ -118,6 +118,8 @@ int uname_architecture(void) {
 #elif defined(__arc__)
                 { "arc",        ARCHITECTURE_ARC      },
                 { "arceb",      ARCHITECTURE_ARC_BE   },
+#elif defined(__loongarch64)
+                { "loongarch64", ARCHITECTURE_LOONGARCH64 },
 #else
 #error "Please register your architecture here!"
 #endif
@@ -173,6 +175,7 @@ static const char *const architecture_table[_ARCHITECTURE_MAX] = {
         [ARCHITECTURE_RISCV64] = "riscv64",
         [ARCHITECTURE_ARC] = "arc",
         [ARCHITECTURE_ARC_BE] = "arc-be",
+        [ARCHITECTURE_LOONGARCH64] = "loongarch64",
 };
 
 DEFINE_STRING_TABLE_LOOKUP(architecture, int);
diff --git a/src/basic/architecture.h b/src/basic/architecture.h
index 9abc183..758bd8c 100644
--- a/src/basic/architecture.h
+++ b/src/basic/architecture.h
@@ -44,6 +44,7 @@ enum {
         ARCHITECTURE_RISCV64,
         ARCHITECTURE_ARC,
         ARCHITECTURE_ARC_BE,
+        ARCHITECTURE_LOONGARCH64,
         _ARCHITECTURE_MAX,
         _ARCHITECTURE_INVALID = -EINVAL,
 };
@@ -229,6 +230,9 @@ int uname_architecture(void);
 #    define native_architecture() ARCHITECTURE_ARC
 #    define LIB_ARCH_TUPLE "arc-linux"
 #  endif
+#elif defined(__loongarch64)
+#    define native_architecture() ARCHITECTURE_LOONGARCH64
+#    define LIB_ARCH_TUPLE "loongarch64-linux-gnu"
 #else
 #  error "Please register your architecture here!"
 #endif
