summaryrefslogtreecommitdiff
path: root/bsd-core/drm_memory.c
diff options
context:
space:
mode:
authorEric Anholt <anholt@freebsd.org>2003-10-20 00:55:56 +0000
committerEric Anholt <anholt@freebsd.org>2003-10-20 00:55:56 +0000
commit6b0424fdcdec9d12943718e4542659c8bca019da (patch)
tree8204d253de6699a0584227883e7519a4d4b8f9b6 /bsd-core/drm_memory.c
parent0cf1887139eb1ce18d09f7be0567aa93d802040d (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.c57
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 */