From 92ba4c1233846f6fff8d30b4a8fe3be45454ba4d Mon Sep 17 00:00:00 2001 From: wzx Date: Sat, 22 Oct 2022 14:09:56 +0800 Subject: [PATCH] Add sw64 architecture Signed-off-by: wzx --- libdrm-2.4.109-sw.patch | 75 +++++++++++++++++++++++++++++++++++++++++ libdrm.spec | 9 ++++- 2 files changed, 83 insertions(+), 1 deletion(-) create mode 100755 libdrm-2.4.109-sw.patch diff --git a/libdrm-2.4.109-sw.patch b/libdrm-2.4.109-sw.patch new file mode 100755 index 0000000..d23a8c2 --- /dev/null +++ b/libdrm-2.4.109-sw.patch @@ -0,0 +1,75 @@ +diff -Nuar libdrm-2.4.109.org/include/drm/drm_sarea.h libdrm-2.4.109.sw/include/drm/drm_sarea.h +--- libdrm-2.4.109.org/include/drm/drm_sarea.h 2022-02-26 01:16:04.810000000 +0000 ++++ libdrm-2.4.109.sw/include/drm/drm_sarea.h 2022-02-26 04:13:03.090000000 +0000 +@@ -39,7 +39,9 @@ + #endif + + /* SAREA area needs to be at least a page */ +-#if defined(__alpha__) ++#if defined(__sw_64__) ++#define SAREA_MAX 0x2000U ++#elif defined(__alpha__) + #define SAREA_MAX 0x2000U + #elif defined(__mips__) + #define SAREA_MAX 0x4000U +diff -Nuar libdrm-2.4.109.org/xf86drm.c libdrm-2.4.109.sw/xf86drm.c +--- libdrm-2.4.109.org/xf86drm.c 2022-02-26 01:16:04.840000000 +0000 ++++ libdrm-2.4.109.sw/xf86drm.c 2022-02-26 02:33:50.700000000 +0000 +@@ -1044,7 +1044,7 @@ + sv.drm_dd_major = -1; /* Don't care */ + sv.drm_dd_minor = -1; /* Don't care */ + if (drmSetInterfaceVersion(fd, &sv)) { +-#ifndef __alpha__ ++#ifndef __sw_64__ + pci_domain_ok = 0; + #endif + sv.drm_di_major = 1; +diff -Nuar libdrm-2.4.109.org/xf86drm.h libdrm-2.4.109.sw/xf86drm.h +--- libdrm-2.4.109.org/xf86drm.h 2022-02-26 01:16:04.840000000 +0000 ++++ libdrm-2.4.109.sw/xf86drm.h 2022-02-26 04:11:01.090000000 +0000 +@@ -382,6 +382,34 @@ + "r" (new)); \ + } while (0) + ++#elif defined(__sw_64__) ++#define DRM_CAS(lock, old, new, ret) \ ++ do{ \ ++ int tmp, old32; \ ++ int tmp1; \ ++ __asm__ __volatile__( \ ++ " addw $31, %6, %4\n" \ ++ " ldi %1, %3\n" \ ++ "1: lldw %0, 0(%1)\n" \ ++ " cmpeq %0, %4, %2\n" \ ++ " wr_f %2\n" \ ++ " mov %5, %0\n" \ ++ " lstw %0, 0(%1)\n" \ ++ " rd_f %0\n" \ ++ " beq %2, 2f\n" \ ++ " beq %0, 3f\n" \ ++ " memb\n" \ ++ "2: cmpeq %2, 0, %2\n" \ ++ ".subsection 2\n" \ ++ "3: br 1b\n" \ ++ ".previous" \ ++ : "=&r"(tmp),"=&r"(tmp1), "=&r"(ret), \ ++ "=m"(__drm_dummy_lock(lock)), \ ++ "=&r"(old32) \ ++ : "r"(new), "r"(old) \ ++ : "memory"); \ ++ } while (0) ++ + #elif defined(__alpha__) + + #define DRM_CAS(lock, old, new, ret) \ +@@ -511,7 +539,9 @@ + #define DRM_CAS(lock,old,new,ret) do { ret=1; } while (0) /* FAST LOCK FAILS */ + #endif + +-#if defined(__alpha__) ++#if defined(__sw_64__) ++#define DRM_CAS_RESULT(_result) long _result ++#elif defined(__alpha__) + #define DRM_CAS_RESULT(_result) long _result + #elif defined(__powerpc__) + #define DRM_CAS_RESULT(_result) int _result diff --git a/libdrm.spec b/libdrm.spec index 6189292..2013148 100644 --- a/libdrm.spec +++ b/libdrm.spec @@ -47,7 +47,7 @@ end} Name: libdrm Version: 2.4.109 -Release: 3 +Release: 4 License: MIT Summary: library for direct rendering manager @@ -80,6 +80,7 @@ BuildRequires: pkgconfig(udev) Patch1001: %{name}-make-dri-perms-okay.patch Patch1002: %{name}-2.4.0-no-bc.patch +Patch1003: libdrm-2.4.109-sw.patch %description %{name} provides a user space library for accessing the DRM, direct rendering manager, @@ -109,6 +110,9 @@ Utility programs for the kernel DRM interface. %prep %autosetup -n %{name}-%{version} -p1 +%ifnarch sw_64 +%patch1003 -R -p1 +%endif %build %meson \ @@ -267,6 +271,9 @@ install -Dpm0644 -t %{buildroot}%{_udevrulesdir} %{S:2} %endif %changelog +* Fri Oct 21 2022 wuzx - 2.4.109-4 +- add sw64 patch + * Wed Mar 30 2022 liuyumeng - 2.4.109-3 - enable tests -- Gitee