# SPDX-License-Identifier: GPL-2.0

config DEBUG_DCFLUSH
	bool "D-cache flush debugging"
	depends on SPARC64 && DEBUG_KERNEL

config MCOUNT
	bool
	depends on SPARC64
	depends on FUNCTION_TRACER
	select ARCH_WANT_FRAME_POINTERS
	select FRAME_POINTER
	default y

config HAVE_HARDLOCKUP_DETECTOR_SPARC64
	bool
	depends on HAVE_NMI
	select HARDLOCKUP_DETECTOR_SPARC64
	help
	  Sparc64 hardlockup detector is the last one developed before adding
	  the common infrastructure for handling hardlockup detectors. It is
	  always built. It does _not_ use the common command line parameters
	  and sysctl interface, except for /proc/sys/kernel/nmi_watchdog.

config HARDLOCKUP_DETECTOR_SPARC64
	bool
	depends on HAVE_HARDLOCKUP_DETECTOR_SPARC64
