diff options
author | Keith Packard <keithp@keithp.com> | 2008-05-01 20:31:16 -0700 |
---|---|---|
committer | Keith Packard <keithp@keithp.com> | 2008-05-01 20:31:16 -0700 |
commit | 30efad5113944681c1abd6452e10355c105e9c39 (patch) | |
tree | d2e5963cd0e8b7ad32c71cfcec66e5aab2f97099 /shared-core | |
parent | abc896638fdcd8ccb457ad7b43dbe7ad229ba501 (diff) |
Fix gem ioctls to be 32/64-bit clean.
mixed 32/64 bit systems need 'special' help for ioctl where the user-space
and kernel-space datatypes differ. Fixing the datatypes to be the same size,
and align the same way for both 32 and 64-bit ppc and x86 environments will
elimiante the need to have magic 32/64-bit ioctl translation code.
Diffstat (limited to 'shared-core')
-rw-r--r-- | shared-core/drm.h | 28 | ||||
-rw-r--r-- | shared-core/i915_drm.h | 21 |
2 files changed, 29 insertions, 20 deletions
diff --git a/shared-core/drm.h b/shared-core/drm.h index 1f49cbb0..90c23fa7 100644 --- a/shared-core/drm.h +++ b/shared-core/drm.h @@ -967,25 +967,28 @@ struct drm_gem_alloc { * * The (page-aligned) allocated size for the object will be returned. */ - uint32_t size; + uint64_t size; /** * Returned handle for the object. * * Object handles are nonzero. */ uint32_t handle; + uint32_t pad; }; struct drm_gem_unreference { /** Handle of the object to be unreferenced. */ uint32_t handle; + uint32_t pad; }; struct drm_gem_link { /** Handle for the object being given a name. */ uint32_t handle; + uint32_t pad; /** Requested file name to export the object under. */ - char *name; + uint64_t name_ptr; /* char *, but pointers are not 32/64 compatible */ /** Requested file mode to export the object under. */ mode_t mode; }; @@ -993,38 +996,41 @@ struct drm_gem_link { struct drm_gem_pread { /** Handle for the object being read. */ uint32_t handle; + uint32_t pad; /** Offset into the object to read from */ - off_t offset; + uint64_t offset; /** Length of data to read */ - size_t size; + uint64_t size; /** Pointer to write the data into. */ - void *data; + uint64_t data_ptr; /* void *, but pointers are not 32/64 compatible */ }; struct drm_gem_pwrite { /** Handle for the object being written to. */ uint32_t handle; + uint32_t pad; /** Offset into the object to write to */ - off_t offset; + uint64_t offset; /** Length of data to write */ - size_t size; + uint64_t size; /** Pointer to read the data from. */ - void *data; + uint64_t data_ptr; /* void *, but pointers are not 32/64 compatible */ }; struct drm_gem_mmap { /** Handle for the object being mapped. */ uint32_t handle; + uint32_t pad; /** Offset in the object to map. */ - off_t offset; + uint64_t offset; /** * Length of data to map. * * The value will be page-aligned. */ - size_t size; + uint64_t size; /** Returned pointer the data was mapped at */ - void *addr; + uint64_t addr_ptr; /* void *, but pointers are not 32/64 compatible */ }; /** diff --git a/shared-core/i915_drm.h b/shared-core/i915_drm.h index 4d113e4c..91461c41 100644 --- a/shared-core/i915_drm.h +++ b/shared-core/i915_drm.h @@ -407,12 +407,12 @@ struct drm_i915_gem_init { * Beginning offset in the GTT to be managed by the DRM memory * manager. */ - off_t gtt_start; + uint64_t gtt_start; /** * Ending offset in the GTT to be managed by the DRM memory * manager. */ - off_t gtt_end; + uint64_t gtt_end; }; struct drm_i915_gem_relocation_entry { @@ -425,15 +425,15 @@ struct drm_i915_gem_relocation_entry { */ uint32_t target_handle; - /** Offset in the buffer the relocation entry will be written into */ - uint32_t offset; - /** * Value to be added to the offset of the target buffer to make up * the relocation entry. */ uint32_t delta; + /** Offset in the buffer the relocation entry will be written into */ + uint64_t offset; + /** * Offset value of the target buffer that the relocation entry was last * written as. @@ -442,7 +442,7 @@ struct drm_i915_gem_relocation_entry { * and writing the relocation. This value is written back out by * the execbuffer ioctl when the relocation is written. */ - uint32_t presumed_offset; + uint64_t presumed_offset; }; struct drm_i915_gem_validate_entry { @@ -457,8 +457,9 @@ struct drm_i915_gem_validate_entry { */ uint32_t buffer_offset; /** List of relocations to be performed on this buffer */ - struct drm_i915_gem_relocation_entry *relocs; + uint64_t relocs_ptr; /* struct drm_i915_gem_relocation_entry *relocs */ uint32_t relocation_count; + uint32_t pad; }; struct drm_i915_gem_execbuffer { @@ -470,7 +471,7 @@ struct drm_i915_gem_execbuffer { * a buffer is performing refer to buffers that have already appeared * in the validate list. */ - struct drm_i915_gem_validate_entry *buffers; + uint64_t buffers_ptr; /* struct drm_i915_gem_validate_entry *buffers */ uint32_t buffer_count; /** Offset in the batchbuffer to start execution from. */ @@ -480,12 +481,13 @@ struct drm_i915_gem_execbuffer { uint32_t DR1; uint32_t DR4; uint32_t num_cliprects; - struct drm_clip_rect *cliprects; + uint64_t cliprects_ptr; /* struct drm_clip_rect *cliprects */ }; struct drm_i915_gem_pin { /** Handle of the buffer to be pinned. */ uint32_t handle; + uint32_t pad; /** Returned GTT offset of the buffer. */ uint64_t offset; @@ -494,6 +496,7 @@ struct drm_i915_gem_pin { struct drm_i915_gem_unpin { /** Handle of the buffer to be unpinned. */ uint32_t handle; + uint32_t pad; }; |