Okay, fixed the ordering of the "default" lines
so that the Kconfig actually works correctly.

Best for Andrew to soak this one in -mm.

Signed-off-by:  Mark Lord <mlord@pobox.com>

 arch/i386/Kconfig       |   37 +++++++++++++++++++++++++++++++++++++
 include/asm-i386/page.h |    4 ++--
 2 files changed, 39 insertions(+), 2 deletions(-)

Index: linux-2.6.15-ck7/arch/i386/Kconfig
===================================================================
--- linux-2.6.15-ck7.orig/arch/i386/Kconfig	2006-03-10 21:55:22.000000000 +1100
+++ linux-2.6.15-ck7/arch/i386/Kconfig	2006-03-10 21:55:28.000000000 +1100
@@ -395,6 +395,43 @@ config X86_CPUID
 source "drivers/firmware/Kconfig"
 
 choice
+	depends on EXPERIMENTAL && !X86_PAE
+	prompt "Memory split"
+	default VMSPLIT_3G
+	help
+	  Select the desired split between kernel and user memory.
+
+	  If the address range available to the kernel is less than the
+	  physical memory installed, the remaining memory will be available
+	  as "high memory". Accessing high memory is a little more costly
+	  than low memory, as it needs to be mapped into the kernel first.
+	  Note that increasing the kernel address space limits the range
+	  available to user programs, making the address space there
+	  tighter.  Selecting anything other than the default 3G/1G split
+	  will also likely make your kernel incompatible with binary-only
+	  kernel modules.
+
+	  If you are not absolutely sure what you are doing, leave this
+	  option alone!
+
+	config VMSPLIT_3G
+		bool "3G/1G user/kernel split"
+	config VMSPLIT_3G_OPT
+		bool "3G/1G user/kernel split (for full 1G low memory)"
+	config VMSPLIT_2G
+		bool "2G/2G user/kernel split"
+	config VMSPLIT_1G
+		bool "1G/3G user/kernel split"
+endchoice
+
+config PAGE_OFFSET
+	hex
+	default 0xB0000000 if VMSPLIT_3G_OPT
+	default 0x78000000 if VMSPLIT_2G
+	default 0x40000000 if VMSPLIT_1G
+	default 0xC0000000
+
+choice
 	prompt "High Memory Support"
 	default NOHIGHMEM
 
Index: linux-2.6.15-ck7/include/asm-i386/page.h
===================================================================
--- linux-2.6.15-ck7.orig/include/asm-i386/page.h	2006-03-10 21:55:22.000000000 +1100
+++ linux-2.6.15-ck7/include/asm-i386/page.h	2006-03-10 21:55:28.000000000 +1100
@@ -110,10 +110,10 @@ extern int page_is_ram(unsigned long pag
 #endif /* __ASSEMBLY__ */
 
 #ifdef __ASSEMBLY__
-#define __PAGE_OFFSET		(0xC0000000)
+#define __PAGE_OFFSET		CONFIG_PAGE_OFFSET
 #define __PHYSICAL_START	CONFIG_PHYSICAL_START
 #else
-#define __PAGE_OFFSET		(0xC0000000UL)
+#define __PAGE_OFFSET		((unsigned long)CONFIG_PAGE_OFFSET)
 #define __PHYSICAL_START	((unsigned long)CONFIG_PHYSICAL_START)
 #endif
 #define __KERNEL_START		(__PAGE_OFFSET + __PHYSICAL_START)
