• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1From 560380189ff29687e011eada93774af59452f2c5 Mon Sep 17 00:00:00 2001
2From: Wenlong Zhang <zhangwenlong@loongson.cn>
3Date: Wed, 6 Mar 2024 03:28:59 +0000
4Subject: [PATCH] add loongarch suopport for abseil-cpp
5
6---
7 absl/base/internal/direct_mmap.h | 7 ++++++-
8 1 file changed, 6 insertions(+), 1 deletion(-)
9
10diff --git a/absl/base/internal/direct_mmap.h b/absl/base/internal/direct_mmap.h
11index 1beb2ee..80fcbbb 100644
12--- a/absl/base/internal/direct_mmap.h
13+++ b/absl/base/internal/direct_mmap.h
14@@ -80,7 +80,8 @@ inline void* DirectMmap(void* start, size_t length, int prot, int flags, int fd,
15     (defined(__PPC__) && !defined(__PPC64__)) ||                             \
16     (defined(__riscv) && __riscv_xlen == 32) ||                              \
17     (defined(__s390__) && !defined(__s390x__)) ||                            \
18-    (defined(__sparc__) && !defined(__arch64__))
19+    (defined(__sparc__) && !defined(__arch64__)) ||                          \
20+    defined(__loongarch64)
21   // On these architectures, implement mmap with mmap2.
22   static int pagesize = 0;
23   if (pagesize == 0) {
24@@ -99,6 +100,10 @@ inline void* DirectMmap(void* start, size_t length, int prot, int flags, int fd,
25   // Workaround by invoking __mmap2() instead.
26   return __mmap2(start, length, prot, flags, fd,
27                  static_cast<size_t>(offset / pagesize));
28+#elif defined(__loongarch64)
29+  return reinterpret_cast<void*>(
30+      syscall(SYS_mmap, start, length, prot, flags, fd,
31+              static_cast<unsigned long>(offset / pagesize)));  // NOLINT
32 #else
33   return reinterpret_cast<void*>(
34       syscall(SYS_mmap2, start, length, prot, flags, fd,
35--
362.43.0
37
38