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 940cac011cf6ffb6eddd151d11d9cd5e5e06a105)
+++ 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))
