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

Reply via email to