summaryrefslogtreecommitdiff
path: root/linux-core
diff options
context:
space:
mode:
authorThomas Hellstrom <thomas-at-tungstengraphics-dot-com>2006-08-28 09:49:09 +0200
committerThomas Hellstrom <thomas-at-tungstengraphics-dot-com>2006-08-28 09:49:09 +0200
commite181f594a4a75790ce1d2a8e907f9fcc5e88b419 (patch)
tree02465a6eb22dfe2271c0b345275275ebe9dff305 /linux-core
parent4ddabd15620e6e4638a6a37a3a2b5bced626fcf9 (diff)
Add a 64-bit drm unsigned type for 64-bit clean IOCTLS.
Conversion functions in drmP.h and xf86drm.c.
Diffstat (limited to 'linux-core')
-rw-r--r--linux-core/drmP.h19
-rw-r--r--linux-core/drm_ttm.c4
2 files changed, 13 insertions, 10 deletions
diff --git a/linux-core/drmP.h b/linux-core/drmP.h
index 2997293b..81f08dfc 100644
--- a/linux-core/drmP.h
+++ b/linux-core/drmP.h
@@ -1359,26 +1359,29 @@ extern int drm_fence_ioctl(DRM_IOCTL_ARGS);
extern int drm_bo_ioctl(DRM_IOCTL_ARGS);
/*
- * Convenience 2*32-bit to 64-bit function
+ * Convenience drm_u64_t functions
*/
-static __inline__ unsigned long combine_64(uint32_t lo, uint32_t hi)
+static __inline__ unsigned long drm_ul(drm_u64_t val)
{
- unsigned long ret = lo;
+ unsigned long ret = val.lo;
#if (BITS_PER_LONG == 64)
- ret |= (hi << 32);
+ ret |= (val.hi << 32);
#endif
return ret;
}
-static __inline__ void split_32(unsigned long val, uint32_t *lo, uint32_t *hi)
+static __inline__ drm_u64_t drm_u64(unsigned long val)
{
- *lo = val & 0xFFFFFFFFUL;
+ drm_u64_t ret;
+
+ ret.lo = val & 0xFFFFFFFFUL;
#if (BITS_PER_LONG == 64)
- *hi = val >> 32;
+ ret.hi = val >> 32;
#else
- *hi = 0;
+ ret.hi = 0;
#endif
+ return ret;
}
diff --git a/linux-core/drm_ttm.c b/linux-core/drm_ttm.c
index ad7b279e..e76b41fb 100644
--- a/linux-core/drm_ttm.c
+++ b/linux-core/drm_ttm.c
@@ -865,7 +865,7 @@ int drm_ttm_ioctl(DRM_IOCTL_ARGS)
switch(arg.op) {
case drm_ttm_create:
mutex_lock(&dev->struct_mutex);
- size = combine_64(arg.size_lo, arg.size_hi);
+ size = drm_ul(arg.size);
ret = drm_ttm_object_create(dev, size, arg.flags, &entry);
if (ret) {
mutex_unlock(&dev->struct_mutex);
@@ -903,7 +903,7 @@ int drm_ttm_ioctl(DRM_IOCTL_ARGS)
}
arg.handle = entry->base.hash.key;
arg.user_token = entry->map_list.user_token;
- split_32(entry->map_list.map->size, &arg.size_lo, &arg.size_hi);
+ arg.size = drm_u64(entry->map_list.map->size);
atomic_dec(&entry->usage);
mutex_unlock(&dev->struct_mutex);