config METAG
	def_bool y
	select EMBEDDED
	select GENERIC_ATOMIC64
	select GENERIC_CLOCKEVENTS
	select GENERIC_IRQ_SHOW
	select GENERIC_SMP_IDLE_THREAD
	select HAVE_64BIT_ALIGNED_ACCESS
	select HAVE_ARCH_TRACEHOOK
	select HAVE_C_RECORDMCOUNT
	select HAVE_DEBUG_KMEMLEAK
	select HAVE_DYNAMIC_FTRACE
	select HAVE_FTRACE_MCOUNT_RECORD
	select HAVE_FUNCTION_TRACER
	select HAVE_FUNCTION_TRACE_MCOUNT_TEST
	select HAVE_GENERIC_HARDIRQS
	select HAVE_KERNEL_BZIP2
	select HAVE_KERNEL_GZIP
	select HAVE_KERNEL_LZO
	select HAVE_KERNEL_XZ
	select HAVE_MEMBLOCK
	select HAVE_MEMBLOCK_NODE_MAP
	select HAVE_MOD_ARCH_SPECIFIC
	select HAVE_OPROFILE
	select HAVE_PERF_EVENTS
	select HAVE_SYSCALL_TRACEPOINTS
	select HAVE_UNDERSCORE_SYMBOL_PREFIX
	select IRQ_DOMAIN
	select MODULES_USE_ELF_RELA
	select OF
	select OF_EARLY_FLATTREE
	select SPARSE_IRQ

config STACKTRACE_SUPPORT
	def_bool y

config LOCKDEP_SUPPORT
	def_bool y

config HAVE_LATENCYTOP_SUPPORT
	def_bool y

config RWSEM_GENERIC_SPINLOCK
	def_bool y

config RWSEM_XCHGADD_ALGORITHM
	bool

config GENERIC_HWEIGHT
	def_bool y

config GENERIC_CALIBRATE_DELAY
	def_bool y

config NO_IOPORT
	def_bool y

source "init/Kconfig"

source "kernel/Kconfig.freezer"

menu "Processor type and features"

config MMU
	def_bool y

config STACK_GROWSUP
	def_bool y

config HOTPLUG_CPU
	bool "Enable CPU hotplug support"
	depends on SMP
	help
	  Say Y here to allow turning CPUs off and on. CPUs can be
	  controlled through /sys/devices/system/cpu.

	  Say N if you want to disable CPU hotplug.

config HIGHMEM
	bool "High Memory Support"
	help
	  The address space of Meta processors is only 4 Gigabytes large
	  and it has to accommodate user address space, kernel address
	  space as well as some memory mapped IO. That means that, if you
	  have a large amount of physical memory and/or IO, not all of the
	  memory can be "permanently mapped" by the kernel. The physical
	  memory that is not permanently mapped is called "high memory".

	  Depending on the selected kernel/user memory split, minimum
	  vmalloc space and actual amount of RAM, you may not need this
	  option which should result in a slightly faster kernel.

	  If unsure, say n.

source "arch/metag/mm/Kconfig"

source "arch/metag/Kconfig.soc"

config METAG_META12
	bool
	help
	  Select this from the SoC config symbol to indicate that it contains a
	  Meta 1.2 core.

config METAG_META21
	bool
	help
	  Select this from the SoC config symbol to indicate that it contains a
	  Meta 2.1 core.

config SMP
	bool "Symmetric multi-processing support"
	depends on METAG_META21 && METAG_META21_MMU
	select USE_GENERIC_SMP_HELPERS
	help
	  This enables support for systems with more than one thread running
	  Linux. If you have a system with only one thread running Linux,
	  say N. Otherwise, say Y.

config NR_CPUS
	int "Maximum number of CPUs (2-4)" if SMP
	range 2 4 if SMP
	default "1" if !SMP
	default "4" if SMP

config METAG_SMP_WRITE_REORDERING
	bool
	help
	  This attempts to prevent cache-memory incoherence due to external
	  reordering of writes from different hardware threads when SMP is
	  enabled. It adds fences (system event 0) to smp_mb and smp_rmb in an
	  attempt to catch some of the cases, and also before writes to shared
	  memory in LOCK1 protected atomics and spinlocks.
	  This will not completely prevent cache incoherency on affected cores.

config METAG_LNKGET_AROUND_CACHE
	bool
	depends on METAG_META21
	help
	  This indicates that the LNKGET/LNKSET instructions go around the
	  cache, which requires some extra cache flushes when the memory needs
	  to be accessed by normal GET/SET instructions too.

choice
	prompt "Atomicity primitive"
	default METAG_ATOMICITY_LNKGET
	help
	  This option selects the mechanism for performing atomic operations.

config METAG_ATOMICITY_IRQSOFF
	depends on !SMP
	bool "irqsoff"
	help
	  This option disables interrupts to achieve atomicity. This mechanism
	  is not SMP-safe.

config METAG_ATOMICITY_LNKGET
	depends on METAG_META21
	bool "lnkget/lnkset"
	help
	  This option uses the LNKGET and LNKSET instructions to achieve
	  atomicity. LNKGET/LNKSET are load-link/store-conditional instructions.
	  Choose this option if your system requires low latency.

config METAG_ATOMICITY_LOCK1
	depends on SMP
	bool "lock1"
	help
	  This option uses the LOCK1 instruction for atomicity. This is mainly
	  provided as a debugging aid if the lnkget/lnkset atomicity primitive
	  isn't working properly.

endchoice

config METAG_FPU
	bool "FPU Support"
	depends on METAG_META21
	default y
	help
	  This option allows processes to use FPU hardware available with this
	  CPU. If this option is not enabled FPU registers will not be saved
	  and restored on context-switch.

	  If you plan on running programs which are compiled to use hard floats
	  say Y here.

config METAG_DSP
	bool "DSP Support"
	help
	  This option allows processes to use DSP hardware available
	  with this CPU. If this option is not enabled DSP registers
	  will not be saved and restored on context-switch.

	  If you plan on running DSP programs say Y here.

config METAG_PERFCOUNTER_IRQS
	bool "PerfCounters interrupt support"
	depends on METAG_META21
	help
	  This option enables using interrupts to collect information from
	  Performance Counters. This option is supported in new META21
	  (starting from HTP265).

	  When disabled, Performance Counters information will be collected
	  based on Timer Interrupt.

config HW_PERF_EVENTS
	def_bool METAG_PERFCOUNTER_IRQS && PERF_EVENTS

config METAG_DA
	bool "DA support"
	help
	  Say Y if you plan to use a DA debug adapter with Linux. The presence
	  of the DA will be detected automatically at boot, so it is safe to say
	  Y to this option even when booting without a DA.

	  This enables support for services provided by DA JTAG debug adapters,
	  such as:
	  - communication over DA channels (such as the console driver).
	  - use of the DA filesystem.

menu "Boot options"

config METAG_BUILTIN_DTB
	bool "Embed DTB in kernel image"
	default y
	help
	  Embeds a device tree binary in the kernel image.

config METAG_BUILTIN_DTB_NAME
	string "Built in DTB"
	depends on METAG_BUILTIN_DTB
	help
	  Set the name of the DTB to embed (leave blank to pick one
	  automatically based on kernel configuration).

config CMDLINE_BOOL
	bool "Default bootloader kernel arguments"

config CMDLINE
	string "Kernel command line"
	depends on CMDLINE_BOOL
	help
	  On some architectures there is currently no way for the boot loader
	  to pass arguments to the kernel. For these architectures, you should
	  supply some command-line options at build time by entering them
	  here.

config CMDLINE_FORCE
	bool "Force default kernel command string"
	depends on CMDLINE_BOOL
	help
	  Set this to have arguments from the default kernel command string
	  override those passed by the boot loader.

endmenu

source "kernel/Kconfig.preempt"

source kernel/Kconfig.hz

endmenu

menu "Power management options"

source kernel/power/Kconfig

endmenu

menu "Executable file formats"

source "fs/Kconfig.binfmt"

endmenu

source "net/Kconfig"

source "drivers/Kconfig"

source "fs/Kconfig"

source "arch/metag/Kconfig.debug"

source "security/Kconfig"

source "crypto/Kconfig"

source "lib/Kconfig"
