2022-12-16 11:17:20 +08:00
|
|
|
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" {
|
2022-11-18 03:38:24 +00:00
|
|
|
#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
|
2022-12-16 11:17:20 +08:00
|
|
|
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)
|
2022-11-18 03:38:24 +00:00
|
|
|
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;
|
2022-12-16 11:17:20 +08:00
|
|
|
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 {
|
2022-11-18 03:38:24 +00:00
|
|
|
"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) \
|
2022-12-16 11:17:20 +08:00
|
|
|
@@ -511,7 +539,9 @@ do { register unsigned int __old __asm("o0"); \
|
2022-11-18 03:38:24 +00:00
|
|
|
#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
|