PAGE_MASK is not portable to systems such as powerpc, mips and hppa
where page size is not a constant.
Signed-off-by: Ian Campbell <[EMAIL PROTECTED]>
Index: xserver-xorg-video-ivtvdev.git/src/ivtv_hw.c
===================================================================
--- xserver-xorg-video-ivtvdev.git.orig/src/ivtv_hw.c 2007-09-20
18:55:16.000000000 +0100
+++ xserver-xorg-video-ivtvdev.git/src/ivtv_hw.c 2007-09-20
19:00:32.000000000 +0100
@@ -557,12 +557,13 @@
ivtvHWMapVidmem(ScrnInfoPtr pScrn)
{
ivtvHWPtr hwPtr = IVTVDEVHWPTR(pScrn);
+ long page_mask = ~(sysconf(_SC_PAGESIZE) - 1);
TRACE_ENTER("MapVidmem");
if (NULL == hwPtr->fbmem) {
- hwPtr->fboff = (unsigned long)hwPtr->fix.smem_start & ~PAGE_MASK;
+ hwPtr->fboff = (unsigned long)hwPtr->fix.smem_start & ~page_mask;
hwPtr->fbmem_len =
- (hwPtr->fboff + hwPtr->fix.smem_len + ~PAGE_MASK) & PAGE_MASK;
+ (hwPtr->fboff + hwPtr->fix.smem_len + ~page_mask) & page_mask;
hwPtr->fbmem =
mmap(NULL, hwPtr->fbmem_len, PROT_READ | PROT_WRITE, MAP_SHARED,
hwPtr->fd, 0);
@@ -573,14 +574,14 @@
} else {
/* Perhaps we'd better add fboff to fbmem and return 0 in
* ivtvHWLinearOffset()? Of course we then need to mask
- * fPtr->fbmem with PAGE_MASK in ivtvHWUnmapVidmem() as
+ * fPtr->fbmem with page_mask in ivtvHWUnmapVidmem() as
* well. [geert] */
}
}
pScrn->memPhysBase =
- (unsigned long)hwPtr->fix.smem_start & (unsigned long)(PAGE_MASK);
+ (unsigned long)hwPtr->fix.smem_start & (unsigned long)(page_mask);
pScrn->fbOffset =
- (unsigned long)hwPtr->fix.smem_start & (unsigned long)(~PAGE_MASK);
+ (unsigned long)hwPtr->fix.smem_start & (unsigned long)(~page_mask);
return hwPtr->fbmem;
}
--
_______________________________________________
ivtv-devel mailing list
[email protected]
http://ivtvdriver.org/mailman/listinfo/ivtv-devel