162306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci#
362306a36Sopenharmony_ci# For a description of the syntax of this configuration file,
462306a36Sopenharmony_ci# see Documentation/kbuild/kconfig-language.rst.
562306a36Sopenharmony_ci#
662306a36Sopenharmony_ci
762306a36Sopenharmony_ciconfig OPENRISC
862306a36Sopenharmony_ci	def_bool y
962306a36Sopenharmony_ci	select ARCH_32BIT_OFF_T
1062306a36Sopenharmony_ci	select ARCH_HAS_DMA_SET_UNCACHED
1162306a36Sopenharmony_ci	select ARCH_HAS_DMA_CLEAR_UNCACHED
1262306a36Sopenharmony_ci	select ARCH_HAS_SYNC_DMA_FOR_DEVICE
1362306a36Sopenharmony_ci	select COMMON_CLK
1462306a36Sopenharmony_ci	select OF
1562306a36Sopenharmony_ci	select OF_EARLY_FLATTREE
1662306a36Sopenharmony_ci	select IRQ_DOMAIN
1762306a36Sopenharmony_ci	select GPIOLIB
1862306a36Sopenharmony_ci	select HAVE_ARCH_TRACEHOOK
1962306a36Sopenharmony_ci	select SPARSE_IRQ
2062306a36Sopenharmony_ci	select GENERIC_IRQ_CHIP
2162306a36Sopenharmony_ci	select GENERIC_IRQ_PROBE
2262306a36Sopenharmony_ci	select GENERIC_IRQ_SHOW
2362306a36Sopenharmony_ci	select GENERIC_PCI_IOMAP
2462306a36Sopenharmony_ci	select GENERIC_IOREMAP
2562306a36Sopenharmony_ci	select GENERIC_CPU_DEVICES
2662306a36Sopenharmony_ci	select HAVE_PCI
2762306a36Sopenharmony_ci	select HAVE_UID16
2862306a36Sopenharmony_ci	select GENERIC_ATOMIC64
2962306a36Sopenharmony_ci	select GENERIC_CLOCKEVENTS_BROADCAST
3062306a36Sopenharmony_ci	select GENERIC_SMP_IDLE_THREAD
3162306a36Sopenharmony_ci	select MODULES_USE_ELF_RELA
3262306a36Sopenharmony_ci	select HAVE_DEBUG_STACKOVERFLOW
3362306a36Sopenharmony_ci	select OR1K_PIC
3462306a36Sopenharmony_ci	select CPU_NO_EFFICIENT_FFS if !OPENRISC_HAVE_INST_FF1
3562306a36Sopenharmony_ci	select ARCH_USE_QUEUED_RWLOCKS
3662306a36Sopenharmony_ci	select OMPIC if SMP
3762306a36Sopenharmony_ci	select PCI_DOMAINS_GENERIC if PCI
3862306a36Sopenharmony_ci	select PCI_MSI if PCI
3962306a36Sopenharmony_ci	select ARCH_WANT_FRAME_POINTERS
4062306a36Sopenharmony_ci	select GENERIC_IRQ_MULTI_HANDLER
4162306a36Sopenharmony_ci	select MMU_GATHER_NO_RANGE if MMU
4262306a36Sopenharmony_ci	select TRACE_IRQFLAGS_SUPPORT
4362306a36Sopenharmony_ci
4462306a36Sopenharmony_ciconfig CPU_BIG_ENDIAN
4562306a36Sopenharmony_ci	def_bool y
4662306a36Sopenharmony_ci
4762306a36Sopenharmony_ciconfig MMU
4862306a36Sopenharmony_ci	def_bool y
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_ciconfig GENERIC_HWEIGHT
5162306a36Sopenharmony_ci	def_bool y
5262306a36Sopenharmony_ci
5362306a36Sopenharmony_ciconfig NO_IOPORT_MAP
5462306a36Sopenharmony_ci	def_bool y
5562306a36Sopenharmony_ci
5662306a36Sopenharmony_ci# For now, use generic checksum functions
5762306a36Sopenharmony_ci#These can be reimplemented in assembly later if so inclined
5862306a36Sopenharmony_ciconfig GENERIC_CSUM
5962306a36Sopenharmony_ci	def_bool y
6062306a36Sopenharmony_ci
6162306a36Sopenharmony_ciconfig STACKTRACE_SUPPORT
6262306a36Sopenharmony_ci	def_bool y
6362306a36Sopenharmony_ci
6462306a36Sopenharmony_ciconfig LOCKDEP_SUPPORT
6562306a36Sopenharmony_ci	def_bool  y
6662306a36Sopenharmony_ci
6762306a36Sopenharmony_cimenu "Processor type and features"
6862306a36Sopenharmony_ci
6962306a36Sopenharmony_cichoice
7062306a36Sopenharmony_ci	prompt "Subarchitecture"
7162306a36Sopenharmony_ci	default OR1K_1200
7262306a36Sopenharmony_ci
7362306a36Sopenharmony_ciconfig OR1K_1200
7462306a36Sopenharmony_ci	bool "OR1200"
7562306a36Sopenharmony_ci	help
7662306a36Sopenharmony_ci	  Generic OpenRISC 1200 architecture
7762306a36Sopenharmony_ci
7862306a36Sopenharmony_ciendchoice
7962306a36Sopenharmony_ci
8062306a36Sopenharmony_ciconfig DCACHE_WRITETHROUGH
8162306a36Sopenharmony_ci	bool "Have write through data caches"
8262306a36Sopenharmony_ci	default n
8362306a36Sopenharmony_ci	help
8462306a36Sopenharmony_ci	  Select this if your implementation features write through data caches.
8562306a36Sopenharmony_ci	  Selecting 'N' here will allow the kernel to force flushing of data
8662306a36Sopenharmony_ci	  caches at relevant times. Most OpenRISC implementations support write-
8762306a36Sopenharmony_ci	  through data caches.
8862306a36Sopenharmony_ci
8962306a36Sopenharmony_ci	  If unsure say N here
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ciconfig OPENRISC_BUILTIN_DTB
9262306a36Sopenharmony_ci	string "Builtin DTB"
9362306a36Sopenharmony_ci	default ""
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_cimenu "Class II Instructions"
9662306a36Sopenharmony_ci
9762306a36Sopenharmony_ciconfig OPENRISC_HAVE_INST_FF1
9862306a36Sopenharmony_ci	bool "Have instruction l.ff1"
9962306a36Sopenharmony_ci	default y
10062306a36Sopenharmony_ci	help
10162306a36Sopenharmony_ci	  Select this if your implementation has the Class II instruction l.ff1
10262306a36Sopenharmony_ci
10362306a36Sopenharmony_ciconfig OPENRISC_HAVE_INST_FL1
10462306a36Sopenharmony_ci	bool "Have instruction l.fl1"
10562306a36Sopenharmony_ci	default y
10662306a36Sopenharmony_ci	help
10762306a36Sopenharmony_ci	  Select this if your implementation has the Class II instruction l.fl1
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ciconfig OPENRISC_HAVE_INST_MUL
11062306a36Sopenharmony_ci	bool "Have instruction l.mul for hardware multiply"
11162306a36Sopenharmony_ci	default y
11262306a36Sopenharmony_ci	help
11362306a36Sopenharmony_ci	  Select this if your implementation has a hardware multiply instruction
11462306a36Sopenharmony_ci
11562306a36Sopenharmony_ciconfig OPENRISC_HAVE_INST_DIV
11662306a36Sopenharmony_ci	bool "Have instruction l.div for hardware divide"
11762306a36Sopenharmony_ci	default y
11862306a36Sopenharmony_ci	help
11962306a36Sopenharmony_ci	  Select this if your implementation has a hardware divide instruction
12062306a36Sopenharmony_ci
12162306a36Sopenharmony_ciconfig OPENRISC_HAVE_INST_CMOV
12262306a36Sopenharmony_ci	bool "Have instruction l.cmov for conditional move"
12362306a36Sopenharmony_ci	default n
12462306a36Sopenharmony_ci	help
12562306a36Sopenharmony_ci	  This config enables gcc to generate l.cmov instructions when compiling
12662306a36Sopenharmony_ci	  the kernel which in general will improve performance and reduce the
12762306a36Sopenharmony_ci	  binary size.
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci	  Select this if your implementation has support for the Class II
13062306a36Sopenharmony_ci	  l.cmov conistional move instruction.
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci	  Say N if you are unsure.
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ciconfig OPENRISC_HAVE_INST_ROR
13562306a36Sopenharmony_ci	bool "Have instruction l.ror for rotate right"
13662306a36Sopenharmony_ci	default n
13762306a36Sopenharmony_ci	help
13862306a36Sopenharmony_ci	  This config enables gcc to generate l.ror instructions when compiling
13962306a36Sopenharmony_ci	  the kernel which in general will improve performance and reduce the
14062306a36Sopenharmony_ci	  binary size.
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_ci	  Select this if your implementation has support for the Class II
14362306a36Sopenharmony_ci	  l.ror rotate right instruction.
14462306a36Sopenharmony_ci
14562306a36Sopenharmony_ci	  Say N if you are unsure.
14662306a36Sopenharmony_ci
14762306a36Sopenharmony_ciconfig OPENRISC_HAVE_INST_RORI
14862306a36Sopenharmony_ci	bool "Have instruction l.rori for rotate right with immediate"
14962306a36Sopenharmony_ci	default n
15062306a36Sopenharmony_ci	help
15162306a36Sopenharmony_ci	  This config enables gcc to generate l.rori instructions when compiling
15262306a36Sopenharmony_ci	  the kernel which in general will improve performance and reduce the
15362306a36Sopenharmony_ci	  binary size.
15462306a36Sopenharmony_ci
15562306a36Sopenharmony_ci	  Select this if your implementation has support for the Class II
15662306a36Sopenharmony_ci	  l.rori rotate right with immediate instruction.
15762306a36Sopenharmony_ci
15862306a36Sopenharmony_ci	  Say N if you are unsure.
15962306a36Sopenharmony_ci
16062306a36Sopenharmony_ciconfig OPENRISC_HAVE_INST_SEXT
16162306a36Sopenharmony_ci	bool "Have instructions l.ext* for sign extension"
16262306a36Sopenharmony_ci	default n
16362306a36Sopenharmony_ci	help
16462306a36Sopenharmony_ci	  This config enables gcc to generate l.ext* instructions when compiling
16562306a36Sopenharmony_ci	  the kernel which in general will improve performance and reduce the
16662306a36Sopenharmony_ci	  binary size.
16762306a36Sopenharmony_ci
16862306a36Sopenharmony_ci	  Select this if your implementation has support for the Class II
16962306a36Sopenharmony_ci	  l.exths, l.extbs, l.exthz and l.extbz size extend instructions.
17062306a36Sopenharmony_ci
17162306a36Sopenharmony_ci	  Say N if you are unsure.
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ciendmenu
17462306a36Sopenharmony_ci
17562306a36Sopenharmony_ciconfig NR_CPUS
17662306a36Sopenharmony_ci	int "Maximum number of CPUs (2-32)"
17762306a36Sopenharmony_ci	range 2 32
17862306a36Sopenharmony_ci	depends on SMP
17962306a36Sopenharmony_ci	default "2"
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ciconfig SMP
18262306a36Sopenharmony_ci	bool "Symmetric Multi-Processing support"
18362306a36Sopenharmony_ci	help
18462306a36Sopenharmony_ci	  This enables support for systems with more than one CPU. If you have
18562306a36Sopenharmony_ci	  a system with only one CPU, say N. If you have a system with more
18662306a36Sopenharmony_ci	  than one CPU, say Y.
18762306a36Sopenharmony_ci
18862306a36Sopenharmony_ci	  If you don't know what to do here, say N.
18962306a36Sopenharmony_ci
19062306a36Sopenharmony_cisource "kernel/Kconfig.hz"
19162306a36Sopenharmony_ci
19262306a36Sopenharmony_ciconfig OPENRISC_NO_SPR_SR_DSX
19362306a36Sopenharmony_ci	bool "use SPR_SR_DSX software emulation" if OR1K_1200
19462306a36Sopenharmony_ci	default y
19562306a36Sopenharmony_ci	help
19662306a36Sopenharmony_ci	  SPR_SR_DSX bit is status register bit indicating whether
19762306a36Sopenharmony_ci	  the last exception has happened in delay slot.
19862306a36Sopenharmony_ci
19962306a36Sopenharmony_ci	  OpenRISC architecture makes it optional to have it implemented
20062306a36Sopenharmony_ci	  in hardware and the OR1200 does not have it.
20162306a36Sopenharmony_ci
20262306a36Sopenharmony_ci	  Say N here if you know that your OpenRISC processor has
20362306a36Sopenharmony_ci	  SPR_SR_DSX bit implemented. Say Y if you are unsure.
20462306a36Sopenharmony_ci
20562306a36Sopenharmony_ciconfig OPENRISC_HAVE_SHADOW_GPRS
20662306a36Sopenharmony_ci	bool "Support for shadow gpr files" if !SMP
20762306a36Sopenharmony_ci	default y if SMP
20862306a36Sopenharmony_ci	help
20962306a36Sopenharmony_ci	  Say Y here if your OpenRISC processor features shadowed
21062306a36Sopenharmony_ci	  register files. They will in such case be used as a
21162306a36Sopenharmony_ci	  scratch reg storage on exception entry.
21262306a36Sopenharmony_ci
21362306a36Sopenharmony_ci	  On SMP systems, this feature is mandatory.
21462306a36Sopenharmony_ci	  On a unicore system it's safe to say N here if you are unsure.
21562306a36Sopenharmony_ci
21662306a36Sopenharmony_ciconfig CMDLINE
21762306a36Sopenharmony_ci	string "Default kernel command string"
21862306a36Sopenharmony_ci	default ""
21962306a36Sopenharmony_ci	help
22062306a36Sopenharmony_ci	  On some architectures there is currently no way for the boot loader
22162306a36Sopenharmony_ci	  to pass arguments to the kernel. For these architectures, you should
22262306a36Sopenharmony_ci	  supply some command-line options at build time by entering them
22362306a36Sopenharmony_ci	  here.
22462306a36Sopenharmony_ci
22562306a36Sopenharmony_cimenu "Debugging options"
22662306a36Sopenharmony_ci
22762306a36Sopenharmony_ciconfig JUMP_UPON_UNHANDLED_EXCEPTION
22862306a36Sopenharmony_ci	bool "Try to die gracefully"
22962306a36Sopenharmony_ci	default y
23062306a36Sopenharmony_ci	help
23162306a36Sopenharmony_ci	  Now this puts kernel into infinite loop after first oops. Till
23262306a36Sopenharmony_ci	  your kernel crashes this doesn't have any influence.
23362306a36Sopenharmony_ci
23462306a36Sopenharmony_ci	  Say Y if you are unsure.
23562306a36Sopenharmony_ci
23662306a36Sopenharmony_ciconfig OPENRISC_ESR_EXCEPTION_BUG_CHECK
23762306a36Sopenharmony_ci	bool "Check for possible ESR exception bug"
23862306a36Sopenharmony_ci	default n
23962306a36Sopenharmony_ci	help
24062306a36Sopenharmony_ci	  This option enables some checks that might expose some problems
24162306a36Sopenharmony_ci	  in kernel.
24262306a36Sopenharmony_ci
24362306a36Sopenharmony_ci	  Say N if you are unsure.
24462306a36Sopenharmony_ci
24562306a36Sopenharmony_ciendmenu
24662306a36Sopenharmony_ci
24762306a36Sopenharmony_ciendmenu
248