summaryrefslogtreecommitdiff
path: root/lib/libdrm/xf86drm.h
diff options
context:
space:
mode:
authorOwain Ainsworth <oga@cvs.openbsd.org>2009-05-03 19:43:27 +0000
committerOwain Ainsworth <oga@cvs.openbsd.org>2009-05-03 19:43:27 +0000
commit42102703a303f715808a6b5428f67b56a697944d (patch)
treed155c702ca90f01b8c342262208f917c8ebae83f /lib/libdrm/xf86drm.h
parent8524960d115363e61e7ac540f4e7b9bb16dd390c (diff)
update libdrm to 2.4.9 (actually to -current, but the only real changes
are to some assertions and a small change to modesetting code). bump libdrm_intel minor due to added symbols, libdrm doesn't get bumped, no change to symbol list. ok matthieu@.
Diffstat (limited to 'lib/libdrm/xf86drm.h')
-rw-r--r--lib/libdrm/xf86drm.h48
1 files changed, 25 insertions, 23 deletions
diff --git a/lib/libdrm/xf86drm.h b/lib/libdrm/xf86drm.h
index 784896700..e3b50a435 100644
--- a/lib/libdrm/xf86drm.h
+++ b/lib/libdrm/xf86drm.h
@@ -326,28 +326,28 @@ typedef struct _drmSetVersion {
#elif defined(__alpha__)
-#define DRM_CAS(lock, old, new, ret) \
- do { \
- int old32; \
- int cur32; \
- __asm__ __volatile__( \
- " mb\n" \
- " zap %4, 0xF0, %0\n" \
- " ldl_l %1, %2\n" \
- " zap %1, 0xF0, %1\n" \
- " cmpeq %0, %1, %1\n" \
- " beq %1, 1f\n" \
- " bis %5, %5, %1\n" \
- " stl_c %1, %2\n" \
- "1: xor %1, 1, %1\n" \
- " stl %1, %3" \
- : "=r" (old32), \
- "=&r" (cur32), \
- "=m" (__drm_dummy_lock(lock)),\
- "=m" (ret) \
- : "r" (old), \
- "r" (new)); \
- } while(0)
+#define DRM_CAS(lock, old, new, ret) \
+ do { \
+ int tmp, old32; \
+ __asm__ __volatile__( \
+ " addl $31, %5, %3\n" \
+ "1: ldl_l %0, %2\n" \
+ " cmpeq %0, %3, %1\n" \
+ " beq %1, 2f\n" \
+ " mov %4, %0\n" \
+ " stl_c %0, %2\n" \
+ " beq %0, 3f\n" \
+ " mb\n" \
+ "2: cmpeq %1, 0, %1\n" \
+ ".subsection 2\n" \
+ "3: br 1b\n" \
+ ".previous" \
+ : "=&r"(tmp), "=&r"(ret), \
+ "=m"(__drm_dummy_lock(lock)), \
+ "=&r"(old32) \
+ : "r"(new), "r"(old) \
+ : "memory"); \
+ } while (0)
#elif defined(__sparc__)
@@ -430,7 +430,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__) || defined(__powerpc__)
+#if defined(__alpha__)
+#define DRM_CAS_RESULT(_result) long _result
+#elif defined(__powerpc__)
#define DRM_CAS_RESULT(_result) int _result
#else
#define DRM_CAS_RESULT(_result) char _result