patch-2.4.0-test6 linux/include/video/fbcon.h

Next file: linux/init/main.c
Previous file: linux/include/scsi/sg.h
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.4.0-test5/linux/include/video/fbcon.h linux/include/video/fbcon.h
@@ -681,32 +681,37 @@
 	while (count--)
 	    fb_writeb(fb_readb(src++), dst++);
     } else {
-	dst = (unsigned long) d + count - 1;
-	src = (unsigned long) s + count - 1;
+	dst = (unsigned long) d + count;
+	src = (unsigned long) s + count;
 
 	if ((count < 8) || ((dst ^ src) & 3))
 	    goto restdown;
 
 	if (dst & 1) {
-	    fb_writeb(fb_readb(src--), dst--);
+	    src--;
+	    dst--;
 	    count--;
+	    fb_writeb(fb_readb(src), dst);
 	}
 	if (dst & 2) {
-	    fb_writew(fb_readw(src), dst);
 	    src -= 2;
 	    dst -= 2;
 	    count -= 2;
+	    fb_writew(fb_readw(src), dst);
 	}
 	while (count > 3) {
-	    fb_writel(fb_readl(src), dst);
 	    src -= 4;
 	    dst -= 4;
 	    count -= 4;
+	    fb_writel(fb_readl(src), dst);
 	}
 
     restdown:
-	while (count--)
-	    fb_writeb(fb_readb(src--), dst--);
+	while (count--) {
+	    src--;
+	    dst--;
+	    fb_writeb(fb_readb(src), dst);
+	}
     }
 
     return d;
@@ -744,32 +749,37 @@
 	while (count--)
 	    fb_writeb(fb_readb(src++), dst++);
     } else {
-	dst = (unsigned long) d + count - 1;
-	src = (unsigned long) s + count - 1;
+	dst = (unsigned long) d + count;
+	src = (unsigned long) s + count;
 
 	if ((count < 8) || ((dst ^ src) & 3))
 	    goto restdown;
 
 	if (dst & 1) {
-	    fb_writeb(fb_readb(src--), dst--);
+	    src--;
+	    dst--;
 	    count--;
+	    fb_writeb(fb_readb(src), dst);
 	}
 	if (dst & 2) {
-	    fb_writew(fb_readw(src), dst);
 	    src -= 2;
 	    dst -= 2;
 	    count -= 2;
+	    fb_writew(fb_readw(src), dst);
 	}
 	while (count > 3) {
-	    fb_writel(fb_readl(src), dst);
 	    src -= 4;
 	    dst -= 4;
 	    count -= 4;
+	    fb_writel(fb_readl(src), dst);
 	}
 
     restdown:
-	while (count--)
-	    fb_writeb(fb_readb(src--), dst--);
+	while (count--) {
+	    src--;
+	    dst--;
+	    fb_writeb(fb_readb(src), dst);
+	}
     }
 }
 

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)