diff options
author | Eric Anholt <anholt@freebsd.org> | 2003-10-20 00:55:56 +0000 |
---|---|---|
committer | Eric Anholt <anholt@freebsd.org> | 2003-10-20 00:55:56 +0000 |
commit | 6b0424fdcdec9d12943718e4542659c8bca019da (patch) | |
tree | 8204d253de6699a0584227883e7519a4d4b8f9b6 /bsd-core/drm_memory.c | |
parent | 0cf1887139eb1ce18d09f7be0567aa93d802040d (diff) |
Clean up BSD MTRR handling. The NetBSD code is untested, but it's my best
shot.
Diffstat (limited to 'bsd-core/drm_memory.c')
-rw-r--r-- | bsd-core/drm_memory.c | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/bsd-core/drm_memory.c b/bsd-core/drm_memory.c index dc0d3753..a50e6c47 100644 --- a/bsd-core/drm_memory.c +++ b/bsd-core/drm_memory.c @@ -124,5 +124,62 @@ int DRM(unbind_agp)(agp_memory *handle) { return DRM(agp_unbind_memory)(handle); } + +#ifdef __FreeBSD__ +int +DRM(mtrr_add)(unsigned long offset, size_t size, int flags) +{ + int act; + struct mem_range_desc mrdesc; + + mrdesc.mr_base = offset; + mrdesc.mr_len = size; + mrdesc.mr_flags = flags; + act = MEMRANGE_SET_UPDATE; + bcopy(DRIVER_NAME, &mrdesc.mr_owner, strlen(DRIVER_NAME)); + return mem_range_attr_set(&mrdesc, &act); +} + +int +DRM(mtrr_del)(unsigned long offset, size_t size, int flags) +{ + int act; + struct mem_range_desc mrdesc; + + mrdesc.mr_base = offset; + mrdesc.mr_len = size; + mrdesc.mr_flags = flags; + act = MEMRANGE_SET_REMOVE; + bcopy(DRIVER_NAME, &mrdesc.mr_owner, strlen(DRIVER_NAME)); + return mem_range_attr_set(&mrdesc, &act); +} +#elif defined(__NetBSD__) +int +DRM(mtrr_add)(unsigned long offset, size_t size, int flags) +{ + struct mtrr mtrrmap; + int one = 1; + + mtrrmap.base = offset; + mtrrmap.len = size; + mtrrmap.type = flags; + mtrrmap.flags = MTRR_VALID; + return mtrr_set(&mtrrmap, &one, NULL, MTRR_GETSET_KERNEL); +} + +int +DRM(mtrr_del)(unsigned long offset, size_t size, int flags) +{ + struct mtrr mtrrmap; + int one = 1; + + mtrrmap.base = offset; + mtrrmap.len = size; + mtrrmap.type = flags; + mtrrmap.flags = 0; + return mtrr_set(&mtrrmap, &one, NULL, MTRR_GETSET_KERNEL); +} +#endif + #endif /* __REALLY_HAVE_AGP */ #endif /* DEBUG_MEMORY */ |