diff --git a/libdrm-2.4.114-sw.patch b/libdrm-2.4.114-sw.patch new file mode 100644 index 0000000000000000000000000000000000000000..97f2c10056596bb928515c5713c56463ecc8d114 --- /dev/null +++ b/libdrm-2.4.114-sw.patch @@ -0,0 +1,71 @@ +diff -Nuar libdrm-2.4.114.org/include/drm/drm_sarea.h libdrm-2.4.114.sw/include/drm/drm_sarea.h +--- libdrm-2.4.114.org/include/drm/drm_sarea.h 2023-07-31 14:41:31.185387748 +0800 ++++ libdrm-2.4.114.sw/include/drm/drm_sarea.h 2023-07-31 14:43:17.068107465 +0800 +@@ -39,6 +39,8 @@ + #endif + + /* SAREA area needs to be at least a page */ ++#if defined(__sw_64__) ++#define SAREA_MAX 0x2000U + #if defined(__alpha__) + #define SAREA_MAX 0x2000U + #elif defined(__mips__) +diff -Nuar libdrm-2.4.114.org/xf86drm.c libdrm-2.4.114.sw/xf86drm.c +--- libdrm-2.4.114.org/xf86drm.c 2023-07-31 14:41:31.192387993 +0800 ++++ libdrm-2.4.114.sw/xf86drm.c 2023-07-31 14:50:09.921611242 +0800 +@@ -1045,7 +1045,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.114.org/xf86drm.h libdrm-2.4.114.sw/xf86drm.h +--- libdrm-2.4.114.org/xf86drm.h 2023-07-31 14:41:31.192387993 +0800 ++++ libdrm-2.4.114.sw/xf86drm.h 2023-07-31 15:18:31.008356798 +0800 +@@ -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,6 +539,8 @@ + #define DRM_CAS(lock,old,new,ret) do { ret=1; } while (0) /* FAST LOCK FAILS */ + #endif + ++#if defined(__sw_64__) ++#define DRM_CAS_RESULT(_result) long _result + #if defined(__alpha__) + #define DRM_CAS_RESULT(_result) long _result + #elif defined(__powerpc__) diff --git a/libdrm.spec b/libdrm.spec index 837f0131aff786ef5deacb3aea11bc6c5351cab4..00ea0f23d03c409fba0d6097ba613e6a5c45b6a3 100644 --- a/libdrm.spec +++ b/libdrm.spec @@ -51,10 +51,12 @@ end} %bcond_without install_test_programs %bcond_without udev +%define anolis_release .0.1 + Name: libdrm Summary: Direct Rendering Manager runtime library Version: 2.4.114 -Release: 1%{?dist} +Release: 1%{anolis_release}%{?dist} License: MIT URL: https://dri.freedesktop.org @@ -88,6 +90,7 @@ BuildRequires: chrpath Patch1001: libdrm-make-dri-perms-okay.patch # remove backwards compat not needed on Fedora Patch1002: libdrm-2.4.0-no-bc.patch +Patch1003: libdrm-2.4.114-sw.patch %description Direct Rendering Manager runtime library @@ -279,6 +282,9 @@ cp %{SOURCE1} %{buildroot}%{_docdir}/libdrm %endif %changelog +* Mon Jul 31 2023 wxiat - 2.4.114-1.0.1 +- add sw arch + * Thu Nov 10 2022 Dave Airlie - 2.4.111-1 - Update to 2.4.114