diff options
| author | mrg <mrg@NetBSD.org> | 2009-03-30 01:42:20 +0000 |
|---|---|---|
| committer | mrg <mrg@NetBSD.org> | 2009-03-30 01:42:20 +0000 |
| commit | db9cd6b98cd09ef2c68a0e33e4f245bbb565b7e2 (patch) | |
| tree | 438723598fd26b3d5c53f97512f553cdf1fce9dd /sys/external | |
| parent | 4d27c3c2b10561a083cc65c6f816c79055cbef37 (diff) | |
- apply from sys/dev:
revision 1.33
date: 2009/03/29 17:00:50; author: mrg; state: Exp; lines: +12 -4
add a comment explaining DRM_NETBSD_ADDR2HANDLE/DRM_NETBSD_HANDLE2ADDR:
* This hack strips the top bit from amd64 addresses, which avoid
* udv_attach() returning NULL for "negative" offset.
* A better hack would be to encode the offset of some kernel data
* structure..
add a new DRM_HANDLE_NEEDS_MASK macro to check whether the above need to
be applied for various mapping types (_DRM_SHM and _DRM_SCATTER_GATHER.)
also:
- use IPL_VM for now
- use a lot of bus_space
- struct drm_device now has a pointer to the device_t
Diffstat (limited to 'sys/external')
| -rw-r--r-- | sys/external/bsd/drm/dist/bsd-core/drmP.h | 35 |
1 files changed, 27 insertions, 8 deletions
diff --git a/sys/external/bsd/drm/dist/bsd-core/drmP.h b/sys/external/bsd/drm/dist/bsd-core/drmP.h index 82cd2d19335..4f9fa2f280b 100644 --- a/sys/external/bsd/drm/dist/bsd-core/drmP.h +++ b/sys/external/bsd/drm/dist/bsd-core/drmP.h @@ -108,7 +108,6 @@ typedef struct drm_file drm_file_t; #include <sys/select.h> #include <sys/device.h> #include <sys/resourcevar.h> -#include <sys/lkm.h> #include <sys/agpio.h> #include <sys/ttycom.h> #include <sys/mman.h> @@ -246,7 +245,7 @@ MALLOC_DECLARE(M_DRM); #define DRM_CDEVPROC_REAL(l) (l)->l_proc #define DRM_IOCTL_DATA void * #define DRM_SPINTYPE kmutex_t -#define DRM_SPININIT(l,name) mutex_init(l, MUTEX_DEFAULT, IPL_NONE) +#define DRM_SPININIT(l,name) mutex_init(l, MUTEX_DEFAULT, /*IPL_NONE*/ IPL_VM) #define DRM_SPINUNINIT(l) mutex_destroy(l) #define DRM_SPINLOCK(l) mutex_enter(l) #define DRM_SPINUNLOCK(u) mutex_exit(u) @@ -329,11 +328,13 @@ extern drm_device_t *drm_units[]; #define DRM_MTRR_WC MTRR_TYPE_WC #define jiffies hardclock_ticks #ifdef __x86_64__ -#define DRM_NETBSD_ADDR2HANDLE(v) ((vaddr_t)(v) - vm_map_min(kernel_map)) -#define DRM_NETBSD_HANDLE2ADDR(u) ((vaddr_t)(u) + vm_map_min(kernel_map)) +#define DRM_NETBSD_ADDR2HANDLE(addr) ((addr) & 0x7fffffffffffffff) +#define DRM_NETBSD_HANDLE2ADDR(handle) ((handle) | 0x8000000000000000) +#define DRM_HANDLE_NEEDS_MASK(type) ((type) == _DRM_SHM || (type) == _DRM_SCATTER_GATHER) #else #define DRM_NETBSD_ADDR2HANDLE(addr) (addr) #define DRM_NETBSD_HANDLE2ADDR(handle) (handle) +#define DRM_HANDLE_NEEDS_MASK(type) 0 #endif #elif defined(__OpenBSD__) #define DRM_SUSER(p) (suser(p->p_ucred, &p->p_acflag) == 0) @@ -402,6 +403,7 @@ typedef u_int8_t u8; "lock; addl $0,0(%%rsp)" : : : "memory"); #endif +#ifdef __FreeBSD__ #define DRM_READ8(map, offset) \ *(volatile u_int8_t *) (((unsigned long)(map)->handle) + (offset)) #define DRM_READ16(map, offset) \ @@ -415,15 +417,30 @@ typedef u_int8_t u8; #define DRM_WRITE32(map, offset, val) \ *(volatile u_int32_t *)(((unsigned long)(map)->handle) + (offset)) = val -#ifdef __FreeBSD__ #define DRM_VERIFYAREA_READ( uaddr, size ) \ (!useracc(__DECONST(caddr_t, uaddr), size, VM_PROT_READ)) -#else + +#else /* __FreeBSD__ */ + typedef vaddr_t vm_offset_t; + +#define DRM_READ8(map, offset) \ + bus_space_read_1( (map)->bst, (map)->bsh, (offset)) +#define DRM_READ16(map, offset) \ + bus_space_read_2( (map)->bst, (map)->bsh, (offset)) +#define DRM_READ32(map, offset) \ + bus_space_read_4( (map)->bst, (map)->bsh, (offset)) +#define DRM_WRITE8(map, offset, val) \ + bus_space_write_1((map)->bst, (map)->bsh, (offset), (val)) +#define DRM_WRITE16(map, offset, val) \ + bus_space_write_2((map)->bst, (map)->bsh, (offset), (val)) +#define DRM_WRITE32(map, offset, val) \ + bus_space_write_4((map)->bst, (map)->bsh, (offset), (val)) + #define DRM_VERIFYAREA_READ( uaddr, size ) \ (!uvm_map_checkprot(&(curproc->p_vmspace->vm_map), \ (vaddr_t)uaddr, (vaddr_t)uaddr+size, UVM_PROT_READ)) -#endif +#endif /* !__FreeBSD__ */ #define DRM_COPY_TO_USER(user, kern, size) \ copyout(kern, user, size) @@ -826,7 +843,9 @@ typedef struct { * DRM device functions structure */ struct drm_device { -#if defined(__NetBSD__) || defined(__OpenBSD__) +#if defined(__NetBSD__) + struct device *device; +#elif defined(__OpenBSD__) struct device device; /* softc is an extension of struct device */ #endif |
