#
# General architecture dependent options
#

config OPROFILE
	tristate "OProfile system profiling (EXPERIMENTAL)"
	depends on PROFILING
	depends on HAVE_OPROFILE
	help
	  OProfile is a profiling system capable of profiling the
	  whole system, include the kernel, kernel modules, libraries,
	  and applications.

	  If unsure, say N.

config HAVE_OPROFILE
	def_bool n

config KPROBES
	bool "Kprobes"
	depends on KALLSYMS && MODULES
	depends on HAVE_KPROBES
	help
	  Kprobes allows you to trap at almost any kernel address and
	  execute a callback function.  register_kprobe() establishes
	  a probepoint and specifies the callback.  Kprobes is useful
	  for kernel debugging, non-intrusive instrumentation and testing.
	  If in doubt, say "N".

config KRETPROBES
	def_bool y
	depends on KPROBES && HAVE_KRETPROBES

config HAVE_IOREMAP_PROT
	def_bool n

config HAVE_KPROBES
	def_bool n

config HAVE_KRETPROBES
	def_bool n

config HAVE_DMA_ATTRS
	def_bool n

config USE_GENERIC_SMP_HELPERS
	def_bool n

config HAVE_CLK
	def_bool n
	help
	  The <linux/clk.h> calls support software clock gating and
	  thus are a key power management tool on many systems.

