[MIPS] Malta: Handle byteswapping hardare bug in big endian mode.
authorElizabeth Oldham <beth@mips.com>
Tue, 6 Jun 2006 09:57:09 +0000 (10:57 +0100)
committerRalf Baechle <ralf@linux-mips.org>
Mon, 19 Jun 2006 16:39:13 +0000 (17:39 +0100)
The SOC-it system controller running in big endian mode might forget
byteswapping when DMAing to the last word of physical memory.  Fixed by
ignoring the last page of memory.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/mips-boards/generic/memory.c

index bc4d093685bbec8725ab448723700f691b8d3ac8..fd492562584aabea44489f7ad622d49ebdacc90e 100644 (file)
@@ -76,6 +76,15 @@ struct prom_pmemblock * __init prom_getmdesc(void)
                        memsize = simple_strtol(memsize_str, NULL, 0);
                }
        }
+
+#ifdef CONFIG_CPU_BIG_ENDIAN
+       /*
+        * SOC-it swaps, or perhaps doesn't swap, when DMA'ing the last
+        * word of physical memory
+        */
+       memsize -= PAGE_SIZE;
+#endif
+
        memset(mdesc, 0, sizeof(mdesc));
 
        mdesc[0].type = yamon_dontuse;