Index: arch/amd64/src/mm/page.c
===================================================================
--- arch/amd64/src/mm/page.c	(revision f62355aea23212db577071da8a3579c9972c1a06)
+++ arch/amd64/src/mm/page.c	(revision 9d5e23cc7bc9f1f8f9799b82cd567c045c657dd3)
@@ -36,5 +36,5 @@
 #include <memstr.h>
 
-__address bootstrap_dba; 
+static __address bootstrap_dba; 
 
 void page_arch_init(void)
@@ -60,14 +60,5 @@
 	}
 	else {
-		/*
-		 * Application processors need to create their own view of the
-		 * virtual address space. Because of that, each AP copies
-		 * already-initialized paging information from the bootstrap
-		 * processor and adjusts it to fulfill its needs.
-		 */
-
-		dba = frame_alloc(FRAME_KA | FRAME_PANIC, ONE_FRAME);
-		memcpy((void *)dba, (void *)bootstrap_dba , PAGE_SIZE);
-		write_cr3(KA2PA(dba));
+		write_cr3(KA2PA(bootstrap_dba));
 	}
 }
Index: arch/ia32/include/mm/frame.h
===================================================================
--- arch/ia32/include/mm/frame.h	(revision f62355aea23212db577071da8a3579c9972c1a06)
+++ arch/ia32/include/mm/frame.h	(revision 9d5e23cc7bc9f1f8f9799b82cd567c045c657dd3)
@@ -34,5 +34,4 @@
 #define FRAME_SIZE	4096
 
-extern __address bootstrap_dba;
 extern __address last_frame;
 
Index: arch/ia32/src/mm/page.c
===================================================================
--- arch/ia32/src/mm/page.c	(revision f62355aea23212db577071da8a3579c9972c1a06)
+++ arch/ia32/src/mm/page.c	(revision 9d5e23cc7bc9f1f8f9799b82cd567c045c657dd3)
@@ -41,5 +41,5 @@
 #include <print.h>
 
-__address bootstrap_dba; 
+static __address bootstrap_dba; 
 
 void page_arch_init(void)
@@ -64,14 +64,5 @@
 	}
 	else {
-		/*
-		 * Application processors need to create their own view of the
-		 * virtual address space. Because of that, each AP copies
-		 * already-initialized paging information from the bootstrap
-		 * processor and adjusts it to fulfill its needs.
-		 */
-
-		dba = frame_alloc(FRAME_KA | FRAME_PANIC, ONE_FRAME);
-		memcpy((void *)dba, (void *)bootstrap_dba , PAGE_SIZE);
-		write_cr3(KA2PA(dba));
+		write_cr3(KA2PA(bootstrap_dba));
 	}
 
Index: kernel.config
===================================================================
--- kernel.config	(revision f62355aea23212db577071da8a3579c9972c1a06)
+++ kernel.config	(revision 9d5e23cc7bc9f1f8f9799b82cd567c045c657dd3)
@@ -79,5 +79,5 @@
 @ [ARCH=ia32|ARCH=amd64] "fpu/fpu1" Intel fpu test 1
 @ [ARCH=ia32|ARCH=amd64] "fpu/sse1" Intel Sse test 1
-@ [ARCH=mips] "fpu/mips1" Mips FPU test 1
+@ [ARCH=mips32&MIPS_MACHINE!=msim&MIPS_MACHINE!=msim4kc] "fpu/mips1" Mips FPU test 1
 @ "print/print1" Printf test 1
 @ "thread/trhead1" Thread test 1
Index: tools/amd64/decpt.py
===================================================================
--- tools/amd64/decpt.py	(revision 9d5e23cc7bc9f1f8f9799b82cd567c045c657dd3)
+++ tools/amd64/decpt.py	(revision 9d5e23cc7bc9f1f8f9799b82cd567c045c657dd3)
@@ -0,0 +1,25 @@
+#!/usr/bin/env python
+"""
+Decode 64-bit address into components
+"""
+import sys
+
+def main():
+    if len(sys.argv) != 2 or not sys.argv[1].startswith('0x'):
+        print "%s 0x..." % sys.argv[0]
+        sys.exit(1)
+    
+    address = int(sys.argv[1],16)
+    offset = address & 0xfff
+    ptl3 = (address >> 12) & 0x1ff
+    ptl2 = (address >> 21) & 0x1ff
+    ptl1 = (address >> 30) & 0x1ff
+    ptl0 = (address >> 39) & 0x1ff
+    print "Ptl0:   %3d" % ptl0
+    print "Ptl1:   %3d" % ptl1
+    print "Ptl2:   %3d" % ptl2
+    print "Ptl3:   %3d" % ptl3
+    print "Offset: 0x%x" % offset
+
+if __name__ == '__main__':
+    main()
Index: tools/config.py
===================================================================
--- tools/config.py	(revision f62355aea23212db577071da8a3579c9972c1a06)
+++ tools/config.py	(revision 9d5e23cc7bc9f1f8f9799b82cd567c045c657dd3)
@@ -266,12 +266,12 @@
 def parse_config(input, output, dlg, defaults={}, askonly=None):
     "Parse configuration file and create Makefile.config on the fly"
-    def ask_the_question():
+    def ask_the_question(dialog):
         "Ask question based on the type of variables to ask"
         # This is quite a hack, this thingy is written just to
         # have access to local variables..
         if vartype == 'y/n':
-            return dlg.yesno(comment, default)
+            return dialog.yesno(comment, default)
         elif vartype == 'n/y':
-            return dlg.noyes(comment, default)
+            return dialog.noyes(comment, default)
         elif vartype == 'choice':
             defopt = None
@@ -281,5 +281,5 @@
                         defopt = i
                         break
-            return dlg.choice(comment, choices, defopt)
+            return dialog.choice(comment, choices, defopt)
         else:
             raise RuntimeError("Bad method: %s" % vartype)
@@ -317,10 +317,8 @@
                     if arg.startswith('$'):
                         args[i] = defaults[arg[1:]]
-
-                subc = os.popen(' '.join(args),'r')
-                data = subc.read().strip()
-                if subc.close():
+                data,status = commands.getstatusoutput(' '.join(args))
+                if status:
                     raise RuntimeError('Error running: %s' % ' '.join(args))
-                outf.write('%s = %s\n' % (varname,data))
+                outf.write('%s = %s\n' % (varname,data.strip()))
             continue
             
@@ -348,5 +346,7 @@
 
             if default is None or not askonly or askonly == varname:
-                default = ask_the_question()
+                default = ask_the_question(dlg)
+            else:
+                default = ask_the_question(DefaultDialog(dlg))
 
             outf.write('%s = %s\n' % (varname, default))
