# SPDX-License-Identifier: GPL-2.0
menu "Kernel hacking"

source "lib/Kconfig.debug"

config DEBUG_DECOMPRESS_KERNEL
	bool "Using serial port during decompressing kernel"
	depends on DEBUG_KERNEL
	default n
	help
	  If you say Y here you will confirm the start and the end of
	  decompressing Linux seeing "Uncompressing Linux... " and
	  "Ok, booting the kernel.\n" on console.

config TEST_MISALIGNMENT_HANDLER
	bool "Run tests on the misalignment handler"
	depends on DEBUG_KERNEL
	default n
	help
	  If you say Y here the kernel will execute a list of misaligned memory
	  accesses to make sure the misalignment handler deals them with
	  correctly.  If it does not, the kernel will throw a BUG.

config KPROBES
	bool "Kprobes"
	depends on DEBUG_KERNEL
	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 GDBSTUB
	bool "Remote GDB kernel debugging"
	depends on DEBUG_KERNEL && DEPRECATED
	select DEBUG_INFO
	select FRAME_POINTER
	help
	  If you say Y here, it will be possible to remotely debug the kernel
	  using gdb. This enlarges your kernel ELF image disk size by several
	  megabytes and requires a machine with more than 16 MB, better 32 MB
	  RAM to avoid excessive linking time. This is only useful for kernel
	  hackers. If unsure, say N.

	  This is deprecated in favour of KGDB and will be removed in a later
	  version.

config GDBSTUB_IMMEDIATE
	bool "Break into GDB stub immediately"
	depends on GDBSTUB
	help
	  If you say Y here, GDB stub will break into the program as soon as
	  possible, leaving the program counter at the beginning of
	  start_kernel() in init/main.c.

config GDBSTUB_ALLOW_SINGLE_STEP
	bool "Allow software single-stepping in GDB stub"
	depends on GDBSTUB && !SMP && !PREEMPT
	help
	  Allow GDB stub to perform software single-stepping through the
	  kernel.  This doesn't work very well on SMP or preemptible kernels as
	  it uses temporary breakpoints to emulate single-stepping.

config GDB_CONSOLE
	bool "Console output to GDB"
	depends on GDBSTUB
	help
	  If you are using GDB for remote debugging over a serial port and
	  would like kernel messages to be formatted into GDB $O packets so
	  that GDB prints them as program output, say 'Y'.

config GDBSTUB_DEBUGGING
	bool "Debug GDB stub by messages to serial port"
	depends on GDBSTUB
	help
	  This causes debugging messages to be displayed at various points
	  during execution of the GDB stub routines. Such messages will be
	  displayed on ttyS0 if that isn't the GDB stub's port, or ttySM0
	  otherwise.

config GDBSTUB_DEBUG_ENTRY
	bool "Debug GDB stub entry"
	depends on GDBSTUB_DEBUGGING
	help
	  This option causes information to be displayed about entry to or exit
	  from the main GDB stub routine.

config GDBSTUB_DEBUG_PROTOCOL
	bool "Debug GDB stub protocol"
	depends on GDBSTUB_DEBUGGING
	help
	  This option causes information to be displayed about the GDB remote
	  protocol messages generated exchanged with GDB.

config GDBSTUB_DEBUG_IO
	bool "Debug GDB stub I/O"
	depends on GDBSTUB_DEBUGGING
	help
	  This option causes information to be displayed about GDB stub's
	  low-level I/O.

config GDBSTUB_DEBUG_BREAKPOINT
	bool "Debug GDB stub breakpoint management"
	depends on GDBSTUB_DEBUGGING
	help
	  This option causes information to be displayed about GDB stub's
	  breakpoint management.

choice
	prompt "GDB stub port"
	default GDBSTUB_ON_TTYSM0
	depends on GDBSTUB
	help
	  Select the serial port used for GDB-stub.

config GDBSTUB_ON_TTYSM0
	bool "/dev/ttySM0 [SIF0]"
	depends on MN10300_TTYSM0
	select GDBSTUB_ON_TTYSMx

config GDBSTUB_ON_TTYSM1
	bool "/dev/ttySM1 [SIF1]"
	depends on MN10300_TTYSM1
	select GDBSTUB_ON_TTYSMx

config GDBSTUB_ON_TTYSM2
	bool "/dev/ttySM2 [SIF2]"
	depends on MN10300_TTYSM2
	select GDBSTUB_ON_TTYSMx

config GDBSTUB_ON_TTYS0
	bool "/dev/ttyS0"
	select GDBSTUB_ON_TTYSx

config GDBSTUB_ON_TTYS1
	bool "/dev/ttyS1"
	select GDBSTUB_ON_TTYSx

endchoice

config GDBSTUB_ON_TTYSMx
	bool
	depends on GDBSTUB_ON_TTYSM0 || GDBSTUB_ON_TTYSM1 || GDBSTUB_ON_TTYSM2
	default y

config GDBSTUB_ON_TTYSx
	bool
	depends on GDBSTUB_ON_TTYS0 || GDBSTUB_ON_TTYS1
	default y

endmenu

config KERNEL_DEBUGGER
	def_bool y
	depends on GDBSTUB || KGDB
