summaryrefslogtreecommitdiffstats
path: root/sys/dev/drm
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2004-12-02 09:38:34 +0000
committerobrien <obrien@FreeBSD.org>2004-12-02 09:38:34 +0000
commit8628145ec693adeb5a01cf3b610834e715fb6da4 (patch)
tree24a62d96e4d68c1f7608bccfb12783b02164a9cc /sys/dev/drm
parent567a90b16c1c3ce67c8ce04900029df196bf7a36 (diff)
downloadFreeBSD-src-8628145ec693adeb5a01cf3b610834e715fb6da4.zip
FreeBSD-src-8628145ec693adeb5a01cf3b610834e715fb6da4.tar.gz
Specifically use the 32-bit version of fuword/suword since that's what
we really want vs. the size changing 'long' (i386 vs. AMD64). This fixes the problem with DRM with Radeon's on AMD64. Submitted by: Jung-uk Kim <jkim@niksun.com>
Diffstat (limited to 'sys/dev/drm')
-rw-r--r--sys/dev/drm/drm_os_freebsd.h13
1 files changed, 6 insertions, 7 deletions
diff --git a/sys/dev/drm/drm_os_freebsd.h b/sys/dev/drm/drm_os_freebsd.h
index 750e6ec..a9a7308 100644
--- a/sys/dev/drm/drm_os_freebsd.h
+++ b/sys/dev/drm/drm_os_freebsd.h
@@ -275,9 +275,9 @@ for ( ret = 0 ; !ret && !(condition) ; ) { \
#define DRM_COPY_TO_USER_UNCHECKED(arg1, arg2, arg3) \
copyout(arg2, arg1, arg3)
#define DRM_GET_USER_UNCHECKED(val, uaddr) \
- ((val) = fuword(uaddr), 0)
+ ((val) = fuword32(uaddr), 0)
#define DRM_PUT_USER_UNCHECKED(uaddr, val) \
- suword(uaddr, val)
+ suword32(uaddr, val)
/* DRM_READMEMORYBARRIER() prevents reordering of reads.
* DRM_WRITEMEMORYBARRIER() prevents reordering of writes.
@@ -294,11 +294,10 @@ for ( ret = 0 ; !ret && !(condition) ; ) { \
#define DRM_WRITEMEMORYBARRIER() alpha_wmb();
#define DRM_MEMORYBARRIER() alpha_mb();
#elif defined(__amd64__)
-#define DRM_READMEMORYBARRIER() __asm __volatile( \
- "lock; addl $0,0(%%rsp)" : : : "memory");
-#define DRM_WRITEMEMORYBARRIER() __asm __volatile("" : : : "memory");
-#define DRM_MEMORYBARRIER() __asm __volatile( \
- "lock; addl $0,0(%%rsp)" : : : "memory");
+//#warning FIX-ME!!!
+#define DRM_READMEMORYBARRIER() __asm __volatile("lfence" ::: "memory");
+#define DRM_WRITEMEMORYBARRIER() __asm __volatile("sfence" ::: "memory");
+#define DRM_MEMORYBARRIER() __asm __volatile("mfence" ::: "memory");
#endif
#define PAGE_ALIGN(addr) round_page(addr)
OpenPOWER on IntegriCloud