menu "Host processor type and features"

source "arch/i386/Kconfig.cpu"

endmenu

config UML_X86
	bool
	default y

config 64BIT
	bool
	default n

config SEMAPHORE_SLEEPERS
	bool
	default y

choice
	prompt "Host memory split"
	default HOST_VMSPLIT_3G
	---help---
	   This is needed when the host kernel on which you run has a non-default
	   (like 2G/2G) memory split, instead of the customary 3G/1G. If you did
	   not recompile your own kernel but use the default distro's one, you can
	   safely accept the "Default split" option.

	   It can be enabled on recent (>=2.6.16-rc2) vanilla kernels via
	   CONFIG_VM_SPLIT_*, or on previous kernels with special patches (-ck
	   patchset by Con Kolivas, or other ones) - option names match closely the
	   host CONFIG_VM_SPLIT_* ones.

	   A lower setting (where 1G/3G is lowest and 3G/1G is higher) will
	   tolerate even more "normal" host kernels, but an higher setting will be
	   stricter.

	   So, if you do not know what to do here, say 'Default split'.

	config HOST_VMSPLIT_3G
		bool "Default split (3G/1G user/kernel host split)"
	config HOST_VMSPLIT_3G_OPT
		bool "3G/1G user/kernel host split (for full 1G low memory)"
	config HOST_VMSPLIT_2G
		bool "2G/2G user/kernel host split"
	config HOST_VMSPLIT_1G
		bool "1G/3G user/kernel host split"
endchoice

config TOP_ADDR
	hex
	default 0xB0000000 if HOST_VMSPLIT_3G_OPT
	default 0x78000000 if HOST_VMSPLIT_2G
	default 0x40000000 if HOST_VMSPLIT_1G
	default 0xC0000000

config 3_LEVEL_PGTABLES
	bool "Three-level pagetables (EXPERIMENTAL)"
	default n
	depends on EXPERIMENTAL
	help
	Three-level pagetables will let UML have more than 4G of physical
	memory.  All the memory that can't be mapped directly will be treated
	as high memory.

	However, this it experimental on 32-bit architectures, so if unsure say
	N (on x86-64 it's automatically enabled, instead, as it's safe there).

config STUB_CODE
	hex
	default 0xbfffe000 if !HOST_2G_2G
	default 0x7fffe000 if HOST_2G_2G

config STUB_DATA
	hex
	default 0xbffff000 if !HOST_2G_2G
	default 0x7ffff000 if HOST_2G_2G

config STUB_START
	hex
	default STUB_CODE

config ARCH_HAS_SC_SIGNALS
	bool
	default y

config ARCH_REUSE_HOST_VSYSCALL_AREA
	bool
	default y

config GENERIC_HWEIGHT
	bool
	default y

