menu "Kernel hacking"

source "lib/Kconfig.debug"

# RMK wants arm kernels compiled with frame pointers so hardwire this to y.
# If you know what you are doing and are willing to live without stack
# traces, you can get a slightly smaller kernel by setting this option to
# n, but then RMK will have to kill you ;).
config FRAME_POINTER
	bool
	default y
	help
	  If you say N here, the resulting kernel will be slightly smaller and
	  faster. However, when a problem occurs with the kernel, the
	  information that is reported is severely limited. Most people
	  should say Y here.

config DEBUG_USER
	bool "Verbose user fault messages"
	help
	  When a user program crashes due to an exception, the kernel can
	  print a brief message explaining what the problem was. This is
	  sometimes helpful for debugging but serves no purpose on a
	  production system. Most people should say N here.

	  In addition, you need to pass user_debug=N on the kernel command
	  line to enable this feature.  N consists of the sum of:

	      1 - undefined instruction events
	      2 - system calls
	      4 - invalid data aborts
	      8 - SIGSEGV faults
	     16 - SIGBUS faults

config DEBUG_ERRORS
	bool "Verbose kernel error messages"
	depends on DEBUG_KERNEL
	help
	  This option controls verbose debugging information which can be
	  printed when the kernel detects an internal error. This debugging
	  information is useful to kernel hackers when tracking down problems,
	  but mostly meaningless to other people. It's safe to say Y unless
	  you are concerned with the code size or don't want to see these
	  messages.

config DEBUG_STACK_USAGE
	bool "Enable stack utilization instrumentation"
	depends on DEBUG_KERNEL
	help
	  Enables the display of the minimum amount of free stack which each
	  task has ever had available in the sysrq-T output.

# These options are only for real kernel hackers who want to get their hands dirty.
config DEBUG_LL
	bool "Kernel low-level debugging functions"
	depends on DEBUG_KERNEL
	help
	  Say Y here to include definitions of printascii, printch, printhex
	  in the kernel.  This is helpful if you are debugging code that
	  executes before the console is initialized.

config DEBUG_ICEDCC
	bool "Kernel low-level debugging via EmbeddedICE DCC channel"
	depends on DEBUG_LL
	help
	  Say Y here if you want the debug print routines to direct their
	  output to the EmbeddedICE macrocell's DCC channel using
	  co-processor 14. This is known to work on the ARM9 style ICE
	  channel.

	  It does include a timeout to ensure that the system does not
	  totally freeze when there is nothing connected to read.

config DEBUG_DC21285_PORT
	bool "Kernel low-level debugging messages via footbridge serial port"
	depends on DEBUG_LL && FOOTBRIDGE
	help
	  Say Y here if you want the debug print routines to direct their
	  output to the serial port in the DC21285 (Footbridge). Saying N
	  will cause the debug messages to appear on the first 16550
	  serial port.

config DEBUG_CLPS711X_UART2
	bool "Kernel low-level debugging messages via UART2"
	depends on DEBUG_LL && ARCH_CLPS711X
	help
	  Say Y here if you want the debug print routines to direct their
	  output to the second serial port on these devices.  Saying N will
	  cause the debug messages to appear on the first serial port.

config DEBUG_S3C_PORT
	depends on DEBUG_LL && PLAT_S3C
	bool "Kernel low-level debugging messages via S3C UART"
	help
	  Say Y here if you want debug print routines to go to one of the
	  S3C internal UARTs. The chosen UART must have been configured
	  before it is used.

config DEBUG_S3C_UART
	depends on PLAT_S3C
	int "S3C UART to use for low-level debug"
	default "0"
	help
	  Choice for UART for kernel low-level using S3C UARTS,
	  should be between zero and two. The port must have been
	  initialised by the boot-loader before use.

	  The uncompressor code port configuration is now handled
	  by CONFIG_S3C_LOWLEVEL_UART_PORT.

endmenu
