diff -ur linux-2.4.6.uc0pre0.orig/mmnommu/bootmem.c linux-2.4.6.uc0pre0.actiontec/mmnommu/bootmem.c
--- linux-2.4.6.uc0pre0.orig/mmnommu/bootmem.c	2004-12-06 19:34:59.000000000 +0100
+++ linux-2.4.6.uc0pre0.actiontec/mmnommu/bootmem.c	2004-12-06 19:35:49.000000000 +0100
@@ -18,10 +20,25 @@
 #include <linux/bootmem.h>
 #include <linux/mmzone.h>
 #include <asm/dma.h>
-#ifdef NO_MM
+/*
+ * This if condition is so that asm/virtconvert.h isn't included for MIPS.
+ * MIPS gets conflicting memory assignments as a result of this.
+ * There is still a need to include it for most other platforms, including
+ * ARM, and M68K.
+ */
+#if (defined(NO_MM) && !defined(CONFIG_MIPS))
+/* ...MaTed--- not required - included in io.h */
 #include <asm/virtconvert.h>
 #endif
 
+
+// ...MaTed enable a bunch of printk's
+#if 0	// ...MaTed---
+#define DEBUG_INITMEM(fmt, x...) printk(KERN_DEBUG fmt, ##x)
+#else
+#define DEBUG_INITMEM(fmt, x...)
+#endif
+
 /*
  * Access to this subsystem has to be serialized externally. (this is
  * true for the boot process anyway)
@@ -246,7 +263,8 @@
 	if (!bdata->node_bootmem_map) BUG();
 
 	count = 0;
-	idx = bdata->node_low_pfn - (bdata->node_boot_start >> PAGE_SHIFT);
+	total = idx = bdata->node_low_pfn - (bdata->node_boot_start >> PAGE_SHIFT);
+	
 	for (i = 0; i < idx; i++, page++) {
 		if (!test_bit(i, bdata->node_bootmem_map)) {
 			count++;
@@ -255,7 +273,7 @@
 			__free_page(page);
 		}
 	}
-	total += count;
+	//total += count;
 
 	/*
 	 * Now free the allocator bitmap itself, it's not

