diff options
Diffstat (limited to 'libdrm-2.4.109-sw.patch')
-rw-r--r-- | libdrm-2.4.109-sw.patch | 78 |
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 |