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