summaryrefslogtreecommitdiffstats
path: root/sys/dev/drm
diff options
context:
space:
mode:
authornwhitehorn <nwhitehorn@FreeBSD.org>2010-11-16 03:43:06 +0000
committernwhitehorn <nwhitehorn@FreeBSD.org>2010-11-16 03:43:06 +0000
commit19dbb181633741563c511cf84ab2439b4e381d47 (patch)
tree55f33916036a81dbd026f042a06b2bcf92e2637e /sys/dev/drm
parente41a851f0380ee8355aa918a5f2ae5bcdd46d6a9 (diff)
downloadFreeBSD-src-19dbb181633741563c511cf84ab2439b4e381d47.zip
FreeBSD-src-19dbb181633741563c511cf84ab2439b4e381d47.tar.gz
Make drm(4) build, if not work reliably, on PowerPC.
Diffstat (limited to 'sys/dev/drm')
-rw-r--r--sys/dev/drm/drmP.h14
-rw-r--r--sys/dev/drm/drm_agpsupport.c2
-rw-r--r--sys/dev/drm/drm_drv.c2
-rw-r--r--sys/dev/drm/drm_memory.c2
-rw-r--r--sys/dev/drm/drm_sysctl.c2
-rw-r--r--sys/dev/drm/radeon_cs.c2
6 files changed, 13 insertions, 11 deletions
diff --git a/sys/dev/drm/drmP.h b/sys/dev/drm/drmP.h
index af50893..3b121e7 100644
--- a/sys/dev/drm/drmP.h
+++ b/sys/dev/drm/drmP.h
@@ -80,7 +80,9 @@ struct drm_file;
#include <machine/pmap.h>
#include <machine/bus.h>
#include <machine/resource.h>
+#if defined(__i386__) || defined(__amd64__)
#include <machine/specialreg.h>
+#endif
#include <machine/sysarch.h>
#include <sys/endian.h>
#include <sys/mman.h>
@@ -246,20 +248,20 @@ typedef u_int8_t u8;
*(volatile u_int8_t *)(((vm_offset_t)(map)->virtual) + \
(vm_offset_t)(offset))
#define DRM_READ16(map, offset) \
- *(volatile u_int16_t *)(((vm_offset_t)(map)->virtual) + \
- (vm_offset_t)(offset))
+ le16toh(*(volatile u_int16_t *)(((vm_offset_t)(map)->virtual) + \
+ (vm_offset_t)(offset)))
#define DRM_READ32(map, offset) \
- *(volatile u_int32_t *)(((vm_offset_t)(map)->virtual) + \
- (vm_offset_t)(offset))
+ le32toh(*(volatile u_int32_t *)(((vm_offset_t)(map)->virtual) + \
+ (vm_offset_t)(offset)))
#define DRM_WRITE8(map, offset, val) \
*(volatile u_int8_t *)(((vm_offset_t)(map)->virtual) + \
(vm_offset_t)(offset)) = val
#define DRM_WRITE16(map, offset, val) \
*(volatile u_int16_t *)(((vm_offset_t)(map)->virtual) + \
- (vm_offset_t)(offset)) = val
+ (vm_offset_t)(offset)) = htole16(val)
#define DRM_WRITE32(map, offset, val) \
*(volatile u_int32_t *)(((vm_offset_t)(map)->virtual) + \
- (vm_offset_t)(offset)) = val
+ (vm_offset_t)(offset)) = htole32(val)
#define DRM_VERIFYAREA_READ( uaddr, size ) \
(!useracc(__DECONST(caddr_t, uaddr), size, VM_PROT_READ))
diff --git a/sys/dev/drm/drm_agpsupport.c b/sys/dev/drm/drm_agpsupport.c
index 7019fe7..cb98ec1 100644
--- a/sys/dev/drm/drm_agpsupport.c
+++ b/sys/dev/drm/drm_agpsupport.c
@@ -318,7 +318,7 @@ int drm_agp_bind(struct drm_device *dev, struct drm_agp_binding *request)
if (!dev->agp || !dev->agp->acquired)
return EINVAL;
- DRM_DEBUG("agp_bind, page_size=%x\n", PAGE_SIZE);
+ DRM_DEBUG("agp_bind, page_size=%x\n", (int)PAGE_SIZE);
entry = drm_agp_lookup_entry(dev, (void *)request->handle);
if (entry == NULL || entry->bound)
diff --git a/sys/dev/drm/drm_drv.c b/sys/dev/drm/drm_drv.c
index 8d9bc69..75902a7 100644
--- a/sys/dev/drm/drm_drv.c
+++ b/sys/dev/drm/drm_drv.c
@@ -478,7 +478,7 @@ static int drm_load(struct drm_device *dev)
retcode = ENOMEM;
goto error;
}
- if (dev->agp != NULL) {
+ if (dev->agp != NULL && dev->agp->info.ai_aperture_base != 0) {
if (drm_mtrr_add(dev->agp->info.ai_aperture_base,
dev->agp->info.ai_aperture_size, DRM_MTRR_WC) == 0)
dev->agp->mtrr = 1;
diff --git a/sys/dev/drm/drm_memory.c b/sys/dev/drm/drm_memory.c
index 415b774..409ea7d 100644
--- a/sys/dev/drm/drm_memory.c
+++ b/sys/dev/drm/drm_memory.c
@@ -73,7 +73,7 @@ void drm_mem_uninit(void)
void *drm_ioremap_wc(struct drm_device *dev, drm_local_map_t *map)
{
- return pmap_mapdev_attr(map->offset, map->size, PAT_WRITE_COMBINING);
+ return pmap_mapdev_attr(map->offset, map->size, VM_MEMATTR_WRITE_COMBINING);
}
void *drm_ioremap(struct drm_device *dev, drm_local_map_t *map)
diff --git a/sys/dev/drm/drm_sysctl.c b/sys/dev/drm/drm_sysctl.c
index 4d9b0e8..1366b07 100644
--- a/sys/dev/drm/drm_sysctl.c
+++ b/sys/dev/drm/drm_sysctl.c
@@ -259,7 +259,7 @@ static int drm_bufs_info DRM_SYSCTL_HANDLER_ARGS
*(1 << dma->bufs[i].page_order),
(dma->bufs[i].seg_count
* (1 << dma->bufs[i].page_order))
- * PAGE_SIZE / 1024);
+ * (int)PAGE_SIZE / 1024);
}
DRM_SYSCTL_PRINT("\n");
for (i = 0; i < dma->buf_count; i++) {
diff --git a/sys/dev/drm/radeon_cs.c b/sys/dev/drm/radeon_cs.c
index 14fe2fc..6dd82a2 100644
--- a/sys/dev/drm/radeon_cs.c
+++ b/sys/dev/drm/radeon_cs.c
@@ -765,7 +765,7 @@ static int r600_cs_parse(struct drm_radeon_cs_parser *parser)
memcpy(parser->ib, ib_chunk->kdata, ib_chunk->length_dw * sizeof(uint32_t));
/* read back last byte to flush WC buffers */
- rb = readl(((vm_offset_t)parser->ib + (ib_chunk->length_dw-1) * sizeof(uint32_t)));
+ rb = *(volatile u_int32_t *) (((vm_offset_t)parser->ib + (ib_chunk->length_dw-1) * sizeof(uint32_t)));
return 0;
}
OpenPOWER on IntegriCloud