From 7dddb272245089bc574f0be611c970c0a00d02b1 Mon Sep 17 00:00:00 2001 From: lyn1001 Date: Tue, 3 Jan 2023 10:53:33 +0800 Subject: [PATCH] Add loongarch support --- libvma-add-asm-loongarch.patch | 105 +++++++++++++++++++++++++++++++++ libvma-add-loongarch.patch | 13 ++++ libvma.spec | 7 ++- 3 files changed, 124 insertions(+), 1 deletion(-) create mode 100644 libvma-add-asm-loongarch.patch create mode 100644 libvma-add-loongarch.patch diff --git a/libvma-add-asm-loongarch.patch b/libvma-add-asm-loongarch.patch new file mode 100644 index 0000000..483a8b1 --- /dev/null +++ b/libvma-add-asm-loongarch.patch @@ -0,0 +1,105 @@ +diff --git a/src/utils/asm-loongarch64.h b/src/utils/asm-loongarch64.h +index e69de29..eb44baa 100644 +--- a/src/utils/asm-loongarch64.h ++++ b/src/utils/asm-loongarch64.h +@@ -0,0 +1,100 @@ ++/* ++ * Copyright (c) 2001-2020 Mellanox Technologies, Ltd. All rights reserved. ++ * ++ * This software is available to you under a choice of one of two ++ * licenses. You may choose to be licensed under the terms of the GNU ++ * General Public License (GPL) Version 2, available from the file ++ * COPYING in the main directory of this source tree, or the ++ * BSD license below: ++ * ++ * Redistribution and use in source and binary forms, with or ++ * without modification, are permitted provided that the following ++ * conditions are met: ++ * ++ * - Redistributions of source code must retain the above ++ * copyright notice, this list of conditions and the following ++ * disclaimer. ++ * ++ * - Redistributions in binary form must reproduce the above ++ * copyright notice, this list of conditions and the following ++ * disclaimer in the documentation and/or other materials ++ * provided with the distribution. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS ++ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ++ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN ++ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE ++ * SOFTWARE. ++ */ ++ ++ ++#ifndef ASMLOONGARCH64_H_ ++#define ASMLOONGARCH64_H_ ++ ++#include ++#include ++ ++#define COPY_64B_NT(dst, src) \ ++ *dst++ = *src++; \ ++ *dst++ = *src++; \ ++ *dst++ = *src++; \ ++ *dst++ = *src++; \ ++ *dst++ = *src++; \ ++ *dst++ = *src++; \ ++ *dst++ = *src++; \ ++ *dst++ = *src++ ++ ++#define mb() asm volatile("dbar 0" ::: "memory") ++#define rmb() mb() ++#define wmb() mb() ++#define wc_wmb() mb() ++ ++/** ++ * Add to the atomic variable. ++ * @param i integer value to add. ++ * @param v pointer of type atomic_t. ++ * @return Value before add. ++ */ ++static inline int atomic_fetch_and_add(int i, volatile int *ptr) ++{ ++ return __atomic_fetch_add(ptr, i, __ATOMIC_ACQUIRE); ++} ++ ++/** ++ * Read RDTSC register ++ */ ++static inline void gettimeoftsc(unsigned long long *p_tscval) ++{ ++ // Read Time Stamp Counter ++ int rID=0; ++ asm volatile("ibar 0" : : : "memory"); ++ asm volatile("rdtime.d %0, %1" : "=r" ((unsigned long long)*p_tscval),"=r" (rID)); ++} ++ ++/** ++ * Cache Line Prefetch - Arch specific! ++ */ ++#ifndef L1_CACHE_BYTES ++#define L1_CACHE_BYTES 64 ++#endif ++ ++static inline void prefetch(void *x) ++{ ++ __builtin_prefetch(x,0,1); ++ //asm volatile("prfm pldl1keep, %a0\n" : : "p" (x)); ++} ++ ++static inline void prefetch_range(void *addr, size_t len) ++{ ++ char *cp = (char*)addr; ++ char *end = (char*)addr + len; ++ for (; cp < end; cp += L1_CACHE_BYTES) ++ prefetch(cp); ++} ++ ++ ++ ++#endif diff --git a/libvma-add-loongarch.patch b/libvma-add-loongarch.patch new file mode 100644 index 0000000..c7be455 --- /dev/null +++ b/libvma-add-loongarch.patch @@ -0,0 +1,13 @@ +diff --git a/src/utils/asm.h b/src/utils/asm.h +index 513a6e3..afb1a21 100644 +--- a/src/utils/asm.h ++++ b/src/utils/asm.h +@@ -40,6 +40,8 @@ + #include "asm-ppc64.h" + #elif defined(__x86_64__) + #include "asm-x86.h" ++#elif defined(__loongarch__) ++#include "asm-loongarch64.h" + #else + #error No architecture specific memory barrier definitions found! + #endif diff --git a/libvma.spec b/libvma.spec index b37282d..c297ac3 100644 --- a/libvma.spec +++ b/libvma.spec @@ -1,6 +1,6 @@ Name: libvma Version: 8.9.4 -Release: 12 +Release: 13 Summary: A library that boosts performance for message-based and streaming applications License: GPLv2 or BSD URL: https://github.com/Mellanox/libvma @@ -8,6 +8,8 @@ Source: https://github.com/Mellanox/libvma/archive/%{version}.tar.gz Patch0000: Resolve-gcc-9.x-issues.patch Patch0001: 0001-Remove-ExecReload-that-is-not-supported.patch Patch0002: fix-build-error-with-glibc-2.34.patch +Patch0003: libvma-add-loongarch.patch +Patch0004: libvma-add-asm-loongarch.patch ExcludeArch: %{arm} Requires: pam @@ -71,6 +73,9 @@ Headers files for libvma. %{_pkgdocdir}/VMA_VERSION %changelog +* Tue Jan 3 2023 liyanan - 8.9.4-13 +- Add loongarch support + * Tue Aug 10 2021 wangyue - 8.9.4-12 - fix build error with glibc-2.34 -- Gitee