+diff -Naur ./arch/i386/Kconfig ../linux-2.6.8.1-mem/./arch/i386/Kconfig
+--- ./arch/i386/Kconfig 2004-08-25 21:38:29.435578760 -0600
++++ ../linux-2.6.8.1-mem/./arch/i386/Kconfig 2004-08-25 20:50:36.000000000 -0600
+@@ -721,6 +721,27 @@
+ depends on HIGHMEM64G
+ default y
+
++choice
++ prompt "User address space size"
++
++config USER_3GB
++ depends on X86
++ depends on NOHIGHMEM
++ bool "3GB User Address Space"
++
++config USER_2GB
++ depends on X86
++ depends on NOHIGHMEM
++ bool "2GB User Address Space"
++
++config USER_1GB
++ depends on X86
++ depends on NOHIGHMEM
++ bool "1GB User Address Space"
++
++endchoice
++
++
+ # Common NUMA Features
+ config NUMA
+ bool "Numa Memory Allocation and Scheduler Support"
+diff -Naur ./include/asm-generic/page_offset.h ../linux-2.6.8.1-mem/./include/asm-generic/page_offset.h
+--- ./include/asm-generic/page_offset.h 1969-12-31 17:00:00.000000000 -0700
++++ ../linux-2.6.8.1-mem/./include/asm-generic/page_offset.h 2004-08-25 20:51:03.000000000 -0600
+@@ -0,0 +1,24 @@
++
++#include <linux/config.h>
++
++#ifdef __ASSEMBLY__
++
++#if defined(CONFIG_USER_1GB)
++#define PAGE_OFFSET_RAW 0x40000000
++#elif defined(CONFIG_USER_2GB)
++#define PAGE_OFFSET_RAW 0x80000000
++#elif defined(CONFIG_USER_3GB)
++#define PAGE_OFFSET_RAW 0xC0000000
++#endif
++
++#else
++
++#if defined(CONFIG_USER_1GB)
++#define PAGE_OFFSET_RAW 0x40000000UL
++#elif defined(CONFIG_USER_2GB)
++#define PAGE_OFFSET_RAW 0x80000000UL
++#elif defined(CONFIG_USER_3GB)
++#define PAGE_OFFSET_RAW 0xC0000000UL
++#endif
++
++#endif
+diff -Naur ./include/asm-generic/vmlinux.lds.h ../linux-2.6.8.1-mem/./include/asm-generic/vmlinux.lds.h
+--- ./include/asm-generic/vmlinux.lds.h 2004-08-14 04:54:48.000000000 -0600
++++ ../linux-2.6.8.1-mem/./include/asm-generic/vmlinux.lds.h 2004-08-25 20:49:32.000000000 -0600
+@@ -1,3 +1,6 @@
++
++#include <asm-generic/page_offset.h>
++
+ #ifndef LOAD_OFFSET
+ #define LOAD_OFFSET 0
+ #endif
+diff -Naur ./include/asm-i386/page.h ../linux-2.6.8.1-mem/./include/asm-i386/page.h
+--- ./include/asm-i386/page.h 2004-08-14 04:54:50.000000000 -0600
++++ ../linux-2.6.8.1-mem/./include/asm-i386/page.h 2004-08-25 20:49:32.000000000 -0600
+@@ -119,9 +119,11 @@
+ #endif /* __ASSEMBLY__ */
+
+ #ifdef __ASSEMBLY__
+-#define __PAGE_OFFSET (0xC0000000)
++#include <asm-generic/page_offset.h>
++#define __PAGE_OFFSET (PAGE_OFFSET_RAW)
+ #else
+-#define __PAGE_OFFSET (0xC0000000UL)
++#include <asm-generic/page_offset.h>
++#define __PAGE_OFFSET (PAGE_OFFSET_RAW)
+ #endif
+
+