patch-2.1.44 linux/arch/m68k/mm/memory.c

Next file: linux/arch/mips/Makefile
Previous file: linux/arch/m68k/kernel/console.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.1.43/linux/arch/m68k/mm/memory.c linux/arch/m68k/mm/memory.c
@@ -555,16 +555,18 @@
 	int tmp;
 
 	/*
-	 * cwe need special treatment for the first page, in case it
-	 * is not page-aligned.
+	 * We need special treatment for the first page, in case it
+	 * is not page-aligned. Page align the addresses to work
+	 * around bug I17 in the 68060.
 	 */
 	if ((tmp = -paddr & (PAGE_SIZE - 1))) {
-	    pushcl040(paddr);
+	    pushcl040(paddr & PAGE_MASK);
 	    if ((len -= tmp) <= 0)
 		return;
 	    paddr += tmp;
 	}
 	tmp = PAGE_SIZE;
+	paddr &= PAGE_MASK;
 	while ((len -= tmp) >= 0) {
 	    clear040(paddr);
 	    paddr += tmp;
@@ -600,6 +602,13 @@
 	 * the '060!
 	 */
 	len += paddr & (PAGE_SIZE - 1);
+
+	/*
+	 * Work around bug I17 in the 68060 affecting some instruction
+	 * lines not being invalidated properly.
+	 */
+	paddr &= PAGE_MASK;
+
 	do {
 	    pushcli040(paddr);
 	    paddr += tmp;
@@ -638,6 +647,13 @@
 
 	/* on 68040, push cache lines for pages in the range */
 	len += vaddr & (PAGE_SIZE - 1);
+
+	/*
+	 * Work around bug I17 in the 68060 affecting some instruction
+	 * lines not being invalidated properly.
+	 */
+	vaddr &= PAGE_MASK;
+
 	do {
 	    pushv040(vaddr);
 	    vaddr += tmp;

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov