| # SPDX-License-Identifier: GPL-2.0 | 
 | config PARISC | 
 | 	def_bool y | 
 | 	select ARCH_32BIT_OFF_T if !64BIT | 
 | 	select ARCH_MIGHT_HAVE_PC_PARPORT | 
 | 	select HAVE_IDE | 
 | 	select HAVE_OPROFILE | 
 | 	select HAVE_FUNCTION_TRACER | 
 | 	select HAVE_FUNCTION_GRAPH_TRACER | 
 | 	select HAVE_SYSCALL_TRACEPOINTS | 
 | 	select ARCH_WANT_FRAME_POINTERS | 
 | 	select ARCH_HAS_ELF_RANDOMIZE | 
 | 	select ARCH_HAS_STRICT_KERNEL_RWX | 
 | 	select ARCH_HAS_STRICT_MODULE_RWX | 
 | 	select ARCH_HAS_UBSAN_SANITIZE_ALL | 
 | 	select ARCH_NO_SG_CHAIN | 
 | 	select ARCH_SUPPORTS_MEMORY_FAILURE | 
 | 	select RTC_CLASS | 
 | 	select RTC_DRV_GENERIC | 
 | 	select INIT_ALL_POSSIBLE | 
 | 	select BUG | 
 | 	select BUILDTIME_EXTABLE_SORT | 
 | 	select HAVE_PCI | 
 | 	select HAVE_PERF_EVENTS | 
 | 	select HAVE_KERNEL_BZIP2 | 
 | 	select HAVE_KERNEL_GZIP | 
 | 	select HAVE_KERNEL_LZ4 | 
 | 	select HAVE_KERNEL_LZMA | 
 | 	select HAVE_KERNEL_LZO | 
 | 	select HAVE_KERNEL_XZ | 
 | 	select GENERIC_ATOMIC64 if !64BIT | 
 | 	select GENERIC_IRQ_PROBE | 
 | 	select GENERIC_PCI_IOMAP | 
 | 	select ARCH_HAVE_NMI_SAFE_CMPXCHG | 
 | 	select GENERIC_SMP_IDLE_THREAD | 
 | 	select GENERIC_CPU_DEVICES | 
 | 	select GENERIC_STRNCPY_FROM_USER | 
 | 	select SYSCTL_ARCH_UNALIGN_ALLOW | 
 | 	select SYSCTL_EXCEPTION_TRACE | 
 | 	select HAVE_MOD_ARCH_SPECIFIC | 
 | 	select VIRT_TO_BUS | 
 | 	select MODULES_USE_ELF_RELA | 
 | 	select CLONE_BACKWARDS | 
 | 	select TTY # Needed for pdc_cons.c | 
 | 	select HAVE_DEBUG_STACKOVERFLOW | 
 | 	select HAVE_ARCH_AUDITSYSCALL | 
 | 	select HAVE_ARCH_HASH | 
 | 	select HAVE_ARCH_JUMP_LABEL | 
 | 	select HAVE_ARCH_JUMP_LABEL_RELATIVE | 
 | 	select HAVE_ARCH_SECCOMP_FILTER | 
 | 	select HAVE_ARCH_TRACEHOOK | 
 | 	select HAVE_REGS_AND_STACK_ACCESS_API | 
 | 	select GENERIC_SCHED_CLOCK | 
 | 	select HAVE_UNSTABLE_SCHED_CLOCK if SMP | 
 | 	select GENERIC_CLOCKEVENTS | 
 | 	select CPU_NO_EFFICIENT_FFS | 
 | 	select NEED_DMA_MAP_STATE | 
 | 	select NEED_SG_DMA_LENGTH | 
 | 	select HAVE_ARCH_KGDB | 
 | 	select HAVE_KPROBES | 
 | 	select HAVE_KRETPROBES | 
 | 	select HAVE_DYNAMIC_FTRACE if $(cc-option,-fpatchable-function-entry=1,1) | 
 | 	select HAVE_FTRACE_MCOUNT_RECORD if HAVE_DYNAMIC_FTRACE | 
 | 	select HAVE_KPROBES_ON_FTRACE | 
 | 	select HAVE_DYNAMIC_FTRACE_WITH_REGS | 
 | 	select HAVE_COPY_THREAD_TLS | 
 |  | 
 | 	help | 
 | 	  The PA-RISC microprocessor is designed by Hewlett-Packard and used | 
 | 	  in many of their workstations & servers (HP9000 700 and 800 series, | 
 | 	  and later HP3000 series).  The PA-RISC Linux project home page is | 
 | 	  at <http://www.parisc-linux.org/>. | 
 |  | 
 | config CPU_BIG_ENDIAN | 
 | 	def_bool y | 
 |  | 
 | config MMU | 
 | 	def_bool y | 
 |  | 
 | config STACK_GROWSUP | 
 | 	def_bool y | 
 |  | 
 | config GENERIC_LOCKBREAK | 
 | 	bool | 
 | 	default y | 
 | 	depends on SMP && PREEMPT | 
 |  | 
 | config ARCH_HAS_ILOG2_U32 | 
 | 	bool | 
 | 	default n | 
 |  | 
 | config ARCH_HAS_ILOG2_U64 | 
 | 	bool | 
 | 	default n | 
 |  | 
 | config GENERIC_BUG | 
 | 	bool | 
 | 	default y | 
 | 	depends on BUG | 
 |  | 
 | config GENERIC_HWEIGHT | 
 | 	bool | 
 | 	default y | 
 |  | 
 | config GENERIC_CALIBRATE_DELAY | 
 | 	bool | 
 | 	default y | 
 |  | 
 | config TIME_LOW_RES | 
 | 	bool | 
 | 	depends on SMP | 
 | 	default y | 
 |  | 
 | # unless you want to implement ACPI on PA-RISC ... ;-) | 
 | config PM | 
 | 	bool | 
 |  | 
 | config STACKTRACE_SUPPORT | 
 | 	def_bool y | 
 |  | 
 | config ISA_DMA_API | 
 | 	bool | 
 |  | 
 | config ARCH_MAY_HAVE_PC_FDC | 
 | 	bool | 
 | 	depends on BROKEN | 
 | 	default y | 
 |  | 
 | config PGTABLE_LEVELS | 
 | 	int | 
 | 	default 3 if 64BIT && PARISC_PAGE_SIZE_4KB | 
 | 	default 2 | 
 |  | 
 | config SYS_SUPPORTS_HUGETLBFS | 
 | 	def_bool y if PA20 | 
 |  | 
 |  | 
 | menu "Processor type and features" | 
 |  | 
 | choice | 
 | 	prompt "Processor type" | 
 | 	default PA7000 | 
 |  | 
 | config PA7000 | 
 | 	bool "PA7000/PA7100" | 
 | 	---help--- | 
 | 	  This is the processor type of your CPU.  This information is | 
 | 	  used for optimizing purposes.  In order to compile a kernel | 
 | 	  that can run on all 32-bit PA CPUs (albeit not optimally fast), | 
 | 	  you can specify "PA7000" here. | 
 |  | 
 | 	  Specifying "PA8000" here will allow you to select a 64-bit kernel | 
 | 	  which is required on some machines. | 
 |  | 
 | config PA7100LC | 
 | 	bool "PA7100LC" | 
 | 	help | 
 | 	  Select this option for the PCX-L processor, as used in the | 
 | 	  712, 715/64, 715/80, 715/100, 715/100XC, 725/100, 743, 748, | 
 | 	  D200, D210, D300, D310 and E-class | 
 |  | 
 | config PA7200 | 
 | 	bool "PA7200" | 
 | 	help | 
 | 	  Select this option for the PCX-T' processor, as used in the | 
 | 	  C100, C110, J100, J110, J210XC, D250, D260, D350, D360, | 
 | 	  K100, K200, K210, K220, K400, K410 and K420 | 
 |  | 
 | config PA7300LC | 
 | 	bool "PA7300LC" | 
 | 	help | 
 | 	  Select this option for the PCX-L2 processor, as used in the | 
 | 	  744, A180, B132L, B160L, B180L, C132L, C160L, C180L, | 
 | 	  D220, D230, D320 and D330. | 
 |  | 
 | config PA8X00 | 
 | 	bool "PA8000 and up" | 
 | 	help | 
 | 	  Select this option for PCX-U to PCX-W2 processors. | 
 |  | 
 | endchoice | 
 |  | 
 | # Define implied options from the CPU selection here | 
 |  | 
 | config PA20 | 
 | 	def_bool y | 
 | 	depends on PA8X00 | 
 |  | 
 | config PA11 | 
 | 	def_bool y | 
 | 	depends on PA7000 || PA7100LC || PA7200 || PA7300LC | 
 | 	select ARCH_HAS_SYNC_DMA_FOR_CPU | 
 | 	select ARCH_HAS_SYNC_DMA_FOR_DEVICE | 
 | 	select DMA_NONCOHERENT_CACHE_SYNC | 
 |  | 
 | config PREFETCH | 
 | 	def_bool y | 
 | 	depends on PA8X00 || PA7200 | 
 |  | 
 | config MLONGCALLS | 
 | 	bool "Enable the -mlong-calls compiler option for big kernels" | 
 | 	default y if !MODULES || UBSAN || FTRACE | 
 | 	default n | 
 | 	depends on PA8X00 | 
 | 	help | 
 | 	  If you configure the kernel to include many drivers built-in instead | 
 | 	  as modules, the kernel executable may become too big, so that the | 
 | 	  linker will not be able to resolve some long branches and fails to link | 
 | 	  your vmlinux kernel. In that case enabling this option will help you | 
 | 	  to overcome this limit by using the -mlong-calls compiler option. | 
 |  | 
 | 	  Usually you want to say N here, unless you e.g. want to build | 
 | 	  a kernel which includes all necessary drivers built-in and which can | 
 | 	  be used for TFTP booting without the need to have an initrd ramdisk. | 
 |  | 
 | 	  Enabling this option will probably slow down your kernel. | 
 |  | 
 | config 64BIT | 
 | 	bool "64-bit kernel" | 
 | 	depends on PA8X00 | 
 | 	help | 
 | 	  Enable this if you want to support 64bit kernel on PA-RISC platform. | 
 |  | 
 | 	  At the moment, only people willing to use more than 2GB of RAM, | 
 | 	  or having a 64bit-only capable PA-RISC machine should say Y here. | 
 |  | 
 | 	  Since there is no 64bit userland on PA-RISC, there is no point to | 
 | 	  enable this option otherwise. The 64bit kernel is significantly bigger | 
 | 	  and slower than the 32bit one. | 
 |  | 
 | choice | 
 | 	prompt "Kernel page size" | 
 | 	default PARISC_PAGE_SIZE_4KB | 
 |  | 
 | config PARISC_PAGE_SIZE_4KB | 
 | 	bool "4KB" | 
 | 	help | 
 | 	  This lets you select the page size of the kernel.  For best | 
 | 	  performance, a page size of 16KB is recommended.  For best | 
 | 	  compatibility with 32bit applications, a page size of 4KB should be | 
 | 	  selected (the vast majority of 32bit binaries work perfectly fine | 
 | 	  with a larger page size). | 
 |  | 
 | 	  4KB                For best 32bit compatibility | 
 | 	  16KB               For best performance | 
 | 	  64KB               For best performance, might give more overhead. | 
 |  | 
 | 	  If you don't know what to do, choose 4KB. | 
 |  | 
 | config PARISC_PAGE_SIZE_16KB | 
 | 	bool "16KB" | 
 | 	depends on PA8X00 && BROKEN | 
 |  | 
 | config PARISC_PAGE_SIZE_64KB | 
 | 	bool "64KB" | 
 | 	depends on PA8X00 && BROKEN | 
 |  | 
 | endchoice | 
 |  | 
 | config PARISC_SELF_EXTRACT | 
 | 	bool "Build kernel as self-extracting executable" | 
 | 	default y | 
 | 	help | 
 | 	  Say Y if you want to build the parisc kernel as a kind of | 
 | 	  self-extracting executable. | 
 |  | 
 | 	  If you say N here, the kernel will be compressed with gzip | 
 | 	  which can be loaded by the palo bootloader directly too. | 
 |  | 
 | 	  If you don't know what to do here, say Y. | 
 |  | 
 | config SMP | 
 | 	bool "Symmetric multi-processing support" | 
 | 	---help--- | 
 | 	  This enables support for systems with more than one CPU. If you have | 
 | 	  a system with only one CPU, say N. If you have a system with more | 
 | 	  than one CPU, say Y. | 
 |  | 
 | 	  If you say N here, the kernel will run on uni- and multiprocessor | 
 | 	  machines, but will use only one CPU of a multiprocessor machine. | 
 | 	  On a uniprocessor machine, the kernel will run faster if you say N. | 
 |  | 
 | 	  See also <file:Documentation/admin-guide/lockup-watchdogs.rst> and the SMP-HOWTO | 
 | 	  available at <http://www.tldp.org/docs.html#howto>. | 
 |  | 
 | 	  If you don't know what to do here, say N. | 
 |  | 
 | config PARISC_CPU_TOPOLOGY | 
 | 	bool "Support cpu topology definition" | 
 | 	depends on SMP | 
 | 	default y | 
 | 	help | 
 | 	  Support PARISC cpu topology definition. | 
 |  | 
 | config SCHED_MC | 
 | 	bool "Multi-core scheduler support" | 
 | 	depends on PARISC_CPU_TOPOLOGY && PA8X00 | 
 | 	help | 
 | 	  Multi-core scheduler support improves the CPU scheduler's decision | 
 | 	  making when dealing with multi-core CPU chips at a cost of slightly | 
 | 	  increased overhead in some places. If unsure say N here. | 
 |  | 
 | config IRQSTACKS | 
 | 	bool "Use separate kernel stacks when processing interrupts" | 
 | 	default y | 
 | 	help | 
 | 	  If you say Y here the kernel will use separate kernel stacks | 
 | 	  for handling hard and soft interrupts.  This can help avoid | 
 | 	  overflowing the process kernel stacks. | 
 |  | 
 | config HOTPLUG_CPU | 
 | 	bool | 
 | 	default y if SMP | 
 |  | 
 | config ARCH_SELECT_MEMORY_MODEL | 
 | 	def_bool y | 
 | 	depends on 64BIT | 
 |  | 
 | config ARCH_SPARSEMEM_ENABLE | 
 | 	def_bool y | 
 | 	depends on 64BIT | 
 |  | 
 | config ARCH_FLATMEM_ENABLE | 
 | 	def_bool y | 
 |  | 
 | config ARCH_SPARSEMEM_DEFAULT | 
 | 	def_bool y | 
 | 	depends on ARCH_SPARSEMEM_ENABLE | 
 |  | 
 | source "kernel/Kconfig.hz" | 
 |  | 
 | config COMPAT | 
 | 	def_bool y | 
 | 	depends on 64BIT | 
 | 	select COMPAT_BINFMT_ELF if BINFMT_ELF | 
 |  | 
 | config SYSVIPC_COMPAT | 
 | 	def_bool y | 
 | 	depends on COMPAT && SYSVIPC | 
 |  | 
 | config AUDIT_ARCH | 
 | 	def_bool y | 
 |  | 
 | config NR_CPUS | 
 | 	int "Maximum number of CPUs (2-32)" | 
 | 	range 2 32 | 
 | 	depends on SMP | 
 | 	default "4" | 
 |  | 
 | config KEXEC | 
 | 	bool "Kexec system call" | 
 | 	select KEXEC_CORE | 
 | 	help | 
 | 	  kexec is a system call that implements the ability to shutdown your | 
 | 	  current kernel, and to start another kernel.  It is like a reboot | 
 | 	  but it is independent of the system firmware.   And like a reboot | 
 | 	  you can start any kernel with it, not just Linux. | 
 |  | 
 | 	  It is an ongoing process to be certain the hardware in a machine | 
 | 	  shutdown, so do not be surprised if this code does not | 
 | 	  initially work for you. | 
 |  | 
 | config KEXEC_FILE | 
 | 	bool "kexec file based system call" | 
 | 	select KEXEC_CORE | 
 | 	select KEXEC_ELF | 
 | 	help | 
 | 	  This enables the kexec_file_load() System call. This is | 
 | 	  file based and takes file descriptors as system call argument | 
 | 	  for kernel and initramfs as opposed to list of segments as | 
 | 	  accepted by previous system call. | 
 |  | 
 | endmenu | 
 |  | 
 |  | 
 | source "drivers/parisc/Kconfig" | 
 |  | 
 | config SECCOMP | 
 | 	def_bool y | 
 | 	prompt "Enable seccomp to safely compute untrusted bytecode" | 
 | 	---help--- | 
 | 	  This kernel feature is useful for number crunching applications | 
 | 	  that may need to compute untrusted bytecode during their | 
 | 	  execution. By using pipes or other transports made available to | 
 | 	  the process as file descriptors supporting the read/write | 
 | 	  syscalls, it's possible to isolate those applications in | 
 | 	  their own address space using seccomp. Once seccomp is | 
 | 	  enabled via prctl(PR_SET_SECCOMP), it cannot be disabled | 
 | 	  and the task is only allowed to execute a few safe syscalls | 
 | 	  defined by each seccomp mode. | 
 |  | 
 | 	  If unsure, say Y. Only embedded should say N here. |