diff options
author | obrien <obrien@FreeBSD.org> | 2004-12-02 09:38:34 +0000 |
---|---|---|
committer | obrien <obrien@FreeBSD.org> | 2004-12-02 09:38:34 +0000 |
commit | 8628145ec693adeb5a01cf3b610834e715fb6da4 (patch) | |
tree | 24a62d96e4d68c1f7608bccfb12783b02164a9cc /sys/dev/drm | |
parent | 567a90b16c1c3ce67c8ce04900029df196bf7a36 (diff) | |
download | FreeBSD-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.h | 13 |
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) |