You need to compile with
# CONFIG_NOHIGHMEM is not set
# CONFIG_HIGHMEM4G is not set
CONFIG_HIGHMEM64G=y
CONFIG_HIGHMEM=y
CONFIG_HIGHPTE=y
CONFIG_X86_PAE=y
CONFIG_HIGHIO=y
CONFIG_X86_4G=y
CONFIG_X86_SWITCH_PAGETABLES=y
CONFIG_X86_4G_VM_LAYOUT=y
CONFIG_X86_UACCESS_INDIRECT=y
CONFIG_X86_HIGH_ENTRY=y
in your .config (for *86 machines) to get 4G of user and 4G of system space.
I so or know how much sense this would make for a 4G of RAM machine. I never
tried it when this machine had only 4G, but that is what is required to get
all 4G in a single user process now that I have 8G.