summaryrefslogtreecommitdiff
path: root/libdrm-2.4.109-sw.patch
diff options
context:
space:
mode:
Diffstat (limited to 'libdrm-2.4.109-sw.patch')
-rw-r--r--libdrm-2.4.109-sw.patch78
1 files changed, 78 insertions, 0 deletions
diff --git a/libdrm-2.4.109-sw.patch b/libdrm-2.4.109-sw.patch
new file mode 100644
index 0000000..b256394
--- /dev/null
+++ b/libdrm-2.4.109-sw.patch
@@ -0,0 +1,78 @@
+diff --git a/include/drm/drm_sarea.h b/include/drm/drm_sarea.h
+index 93025be..60b979a 100644
+--- a/include/drm/drm_sarea.h
++++ b/include/drm/drm_sarea.h
+@@ -39,7 +39,9 @@ extern "C" {
+ #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 --git a/xf86drm.c b/xf86drm.c
+index 7a7a23f..6daaaf7 100644
+--- a/xf86drm.c
++++ b/xf86drm.c
+@@ -1119,7 +1119,7 @@ static int drmOpenByBusid(const char *busid, int type)
+ 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 --git a/xf86drm.h b/xf86drm.h
+index 4c79a65..a8d3ad4 100644
+--- a/xf86drm.h
++++ b/xf86drm.h
+@@ -382,6 +382,34 @@ typedef struct _drmSetVersion {
+ "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 @@ do { register unsigned int __old __asm("o0"); \
+ #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