xref: /OK3568_Linux_fs/kernel/arch/microblaze/Kconfig (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only
2*4882a593Smuzhiyunconfig MICROBLAZE
3*4882a593Smuzhiyun	def_bool y
4*4882a593Smuzhiyun	select ARCH_32BIT_OFF_T
5*4882a593Smuzhiyun	select ARCH_NO_SWAP
6*4882a593Smuzhiyun	select ARCH_HAS_BINFMT_FLAT if !MMU
7*4882a593Smuzhiyun	select ARCH_HAS_DMA_PREP_COHERENT
8*4882a593Smuzhiyun	select ARCH_HAS_GCOV_PROFILE_ALL
9*4882a593Smuzhiyun	select ARCH_HAS_SYNC_DMA_FOR_CPU
10*4882a593Smuzhiyun	select ARCH_HAS_SYNC_DMA_FOR_DEVICE
11*4882a593Smuzhiyun	select ARCH_HAS_DMA_SET_UNCACHED if !MMU
12*4882a593Smuzhiyun	select ARCH_MIGHT_HAVE_PC_PARPORT
13*4882a593Smuzhiyun	select ARCH_WANT_IPC_PARSE_VERSION
14*4882a593Smuzhiyun	select BUILDTIME_TABLE_SORT
15*4882a593Smuzhiyun	select TIMER_OF
16*4882a593Smuzhiyun	select CLONE_BACKWARDS3
17*4882a593Smuzhiyun	select COMMON_CLK
18*4882a593Smuzhiyun	select DMA_DIRECT_REMAP if MMU
19*4882a593Smuzhiyun	select GENERIC_ATOMIC64
20*4882a593Smuzhiyun	select GENERIC_CLOCKEVENTS
21*4882a593Smuzhiyun	select GENERIC_CPU_DEVICES
22*4882a593Smuzhiyun	select GENERIC_IDLE_POLL_SETUP
23*4882a593Smuzhiyun	select GENERIC_IRQ_PROBE
24*4882a593Smuzhiyun	select GENERIC_IRQ_SHOW
25*4882a593Smuzhiyun	select GENERIC_PCI_IOMAP
26*4882a593Smuzhiyun	select GENERIC_SCHED_CLOCK
27*4882a593Smuzhiyun	select HAVE_ARCH_HASH
28*4882a593Smuzhiyun	select HAVE_ARCH_KGDB
29*4882a593Smuzhiyun	select HAVE_ARCH_SECCOMP
30*4882a593Smuzhiyun	select HAVE_DEBUG_KMEMLEAK
31*4882a593Smuzhiyun	select HAVE_DMA_CONTIGUOUS
32*4882a593Smuzhiyun	select HAVE_DYNAMIC_FTRACE
33*4882a593Smuzhiyun	select HAVE_FTRACE_MCOUNT_RECORD
34*4882a593Smuzhiyun	select HAVE_FUNCTION_GRAPH_TRACER
35*4882a593Smuzhiyun	select HAVE_FUNCTION_TRACER
36*4882a593Smuzhiyun	select HAVE_OPROFILE
37*4882a593Smuzhiyun	select HAVE_PCI
38*4882a593Smuzhiyun	select IRQ_DOMAIN
39*4882a593Smuzhiyun	select XILINX_INTC
40*4882a593Smuzhiyun	select MODULES_USE_ELF_RELA
41*4882a593Smuzhiyun	select OF
42*4882a593Smuzhiyun	select OF_EARLY_FLATTREE
43*4882a593Smuzhiyun	select PCI_DOMAINS_GENERIC if PCI
44*4882a593Smuzhiyun	select PCI_SYSCALL if PCI
45*4882a593Smuzhiyun	select TRACING_SUPPORT
46*4882a593Smuzhiyun	select VIRT_TO_BUS
47*4882a593Smuzhiyun	select CPU_NO_EFFICIENT_FFS
48*4882a593Smuzhiyun	select MMU_GATHER_NO_RANGE if MMU
49*4882a593Smuzhiyun	select SPARSE_IRQ
50*4882a593Smuzhiyun	select SET_FS
51*4882a593Smuzhiyun
52*4882a593Smuzhiyun# Endianness selection
53*4882a593Smuzhiyunchoice
54*4882a593Smuzhiyun	prompt "Endianness selection"
55*4882a593Smuzhiyun	default CPU_LITTLE_ENDIAN
56*4882a593Smuzhiyun	help
57*4882a593Smuzhiyun	  microblaze architectures can be configured for either little or
58*4882a593Smuzhiyun	  big endian formats. Be sure to select the appropriate mode.
59*4882a593Smuzhiyun
60*4882a593Smuzhiyunconfig CPU_BIG_ENDIAN
61*4882a593Smuzhiyun	bool "Big endian"
62*4882a593Smuzhiyun
63*4882a593Smuzhiyunconfig CPU_LITTLE_ENDIAN
64*4882a593Smuzhiyun	bool "Little endian"
65*4882a593Smuzhiyun
66*4882a593Smuzhiyunendchoice
67*4882a593Smuzhiyun
68*4882a593Smuzhiyunconfig ZONE_DMA
69*4882a593Smuzhiyun	def_bool y
70*4882a593Smuzhiyun
71*4882a593Smuzhiyunconfig ARCH_HAS_ILOG2_U32
72*4882a593Smuzhiyun	def_bool n
73*4882a593Smuzhiyun
74*4882a593Smuzhiyunconfig ARCH_HAS_ILOG2_U64
75*4882a593Smuzhiyun	def_bool n
76*4882a593Smuzhiyun
77*4882a593Smuzhiyunconfig GENERIC_HWEIGHT
78*4882a593Smuzhiyun	def_bool y
79*4882a593Smuzhiyun
80*4882a593Smuzhiyunconfig GENERIC_CALIBRATE_DELAY
81*4882a593Smuzhiyun	def_bool y
82*4882a593Smuzhiyun
83*4882a593Smuzhiyunconfig GENERIC_CSUM
84*4882a593Smuzhiyun	def_bool y
85*4882a593Smuzhiyun
86*4882a593Smuzhiyunconfig STACKTRACE_SUPPORT
87*4882a593Smuzhiyun	def_bool y
88*4882a593Smuzhiyun
89*4882a593Smuzhiyunconfig LOCKDEP_SUPPORT
90*4882a593Smuzhiyun	def_bool y
91*4882a593Smuzhiyun
92*4882a593Smuzhiyunsource "arch/microblaze/Kconfig.platform"
93*4882a593Smuzhiyun
94*4882a593Smuzhiyunmenu "Processor type and features"
95*4882a593Smuzhiyun
96*4882a593Smuzhiyunsource "kernel/Kconfig.hz"
97*4882a593Smuzhiyun
98*4882a593Smuzhiyunconfig MMU
99*4882a593Smuzhiyun	bool "MMU support"
100*4882a593Smuzhiyun	default n
101*4882a593Smuzhiyun
102*4882a593Smuzhiyuncomment "Boot options"
103*4882a593Smuzhiyun
104*4882a593Smuzhiyunconfig CMDLINE_BOOL
105*4882a593Smuzhiyun	bool "Default bootloader kernel arguments"
106*4882a593Smuzhiyun
107*4882a593Smuzhiyunconfig CMDLINE
108*4882a593Smuzhiyun	string "Default kernel command string"
109*4882a593Smuzhiyun	depends on CMDLINE_BOOL
110*4882a593Smuzhiyun	default "console=ttyUL0,115200"
111*4882a593Smuzhiyun	help
112*4882a593Smuzhiyun	  On some architectures there is currently no way for the boot loader
113*4882a593Smuzhiyun	  to pass arguments to the kernel. For these architectures, you should
114*4882a593Smuzhiyun	  supply some command-line options at build time by entering them
115*4882a593Smuzhiyun	  here.
116*4882a593Smuzhiyun
117*4882a593Smuzhiyunconfig CMDLINE_FORCE
118*4882a593Smuzhiyun	bool "Force default kernel command string"
119*4882a593Smuzhiyun	depends on CMDLINE_BOOL
120*4882a593Smuzhiyun	default n
121*4882a593Smuzhiyun	help
122*4882a593Smuzhiyun	  Set this to have arguments from the default kernel command string
123*4882a593Smuzhiyun	  override those passed by the boot loader.
124*4882a593Smuzhiyun
125*4882a593Smuzhiyunendmenu
126*4882a593Smuzhiyun
127*4882a593Smuzhiyunmenu "Kernel features"
128*4882a593Smuzhiyun
129*4882a593Smuzhiyunconfig NR_CPUS
130*4882a593Smuzhiyun	int
131*4882a593Smuzhiyun	default "1"
132*4882a593Smuzhiyun
133*4882a593Smuzhiyunconfig ADVANCED_OPTIONS
134*4882a593Smuzhiyun	bool "Prompt for advanced kernel configuration options"
135*4882a593Smuzhiyun	help
136*4882a593Smuzhiyun	  This option will enable prompting for a variety of advanced kernel
137*4882a593Smuzhiyun	  configuration options.  These options can cause the kernel to not
138*4882a593Smuzhiyun	  work if they are set incorrectly, but can be used to optimize certain
139*4882a593Smuzhiyun	  aspects of kernel memory management.
140*4882a593Smuzhiyun
141*4882a593Smuzhiyun	  Unless you know what you are doing, say N here.
142*4882a593Smuzhiyun
143*4882a593Smuzhiyuncomment "Default settings for advanced configuration options are used"
144*4882a593Smuzhiyun	depends on !ADVANCED_OPTIONS
145*4882a593Smuzhiyun
146*4882a593Smuzhiyunconfig XILINX_UNCACHED_SHADOW
147*4882a593Smuzhiyun	bool "Are you using uncached shadow for RAM ?"
148*4882a593Smuzhiyun	depends on ADVANCED_OPTIONS && !MMU
149*4882a593Smuzhiyun	default n
150*4882a593Smuzhiyun	help
151*4882a593Smuzhiyun	  This is needed to be able to allocate uncachable memory regions.
152*4882a593Smuzhiyun	  The feature requires the design to define the RAM memory controller
153*4882a593Smuzhiyun	  window to be twice as large as the actual physical memory.
154*4882a593Smuzhiyun
155*4882a593Smuzhiyunconfig HIGHMEM
156*4882a593Smuzhiyun	bool "High memory support"
157*4882a593Smuzhiyun	depends on MMU
158*4882a593Smuzhiyun	help
159*4882a593Smuzhiyun	  The address space of Microblaze processors is only 4 Gigabytes large
160*4882a593Smuzhiyun	  and it has to accommodate user address space, kernel address
161*4882a593Smuzhiyun	  space as well as some memory mapped IO. That means that, if you
162*4882a593Smuzhiyun	  have a large amount of physical memory and/or IO, not all of the
163*4882a593Smuzhiyun	  memory can be "permanently mapped" by the kernel. The physical
164*4882a593Smuzhiyun	  memory that is not permanently mapped is called "high memory".
165*4882a593Smuzhiyun
166*4882a593Smuzhiyun	  If unsure, say n.
167*4882a593Smuzhiyun
168*4882a593Smuzhiyunconfig LOWMEM_SIZE_BOOL
169*4882a593Smuzhiyun	bool "Set maximum low memory"
170*4882a593Smuzhiyun	depends on ADVANCED_OPTIONS && MMU
171*4882a593Smuzhiyun	help
172*4882a593Smuzhiyun	  This option allows you to set the maximum amount of memory which
173*4882a593Smuzhiyun	  will be used as "low memory", that is, memory which the kernel can
174*4882a593Smuzhiyun	  access directly, without having to set up a kernel virtual mapping.
175*4882a593Smuzhiyun	  This can be useful in optimizing the layout of kernel virtual
176*4882a593Smuzhiyun	  memory.
177*4882a593Smuzhiyun
178*4882a593Smuzhiyun	  Say N here unless you know what you are doing.
179*4882a593Smuzhiyun
180*4882a593Smuzhiyunconfig LOWMEM_SIZE
181*4882a593Smuzhiyun	hex "Maximum low memory size (in bytes)" if LOWMEM_SIZE_BOOL
182*4882a593Smuzhiyun	default "0x30000000"
183*4882a593Smuzhiyun
184*4882a593Smuzhiyunconfig MANUAL_RESET_VECTOR
185*4882a593Smuzhiyun	hex "Microblaze reset vector address setup"
186*4882a593Smuzhiyun	default "0x0"
187*4882a593Smuzhiyun	help
188*4882a593Smuzhiyun	  Set this option to have the kernel override the CPU Reset vector.
189*4882a593Smuzhiyun	  If zero, no change will be made to the MicroBlaze reset vector at
190*4882a593Smuzhiyun	  address 0x0.
191*4882a593Smuzhiyun	  If non-zero, a jump instruction to this address, will be written
192*4882a593Smuzhiyun	  to the reset vector at address 0x0.
193*4882a593Smuzhiyun	  If you are unsure, set it to default value 0x0.
194*4882a593Smuzhiyun
195*4882a593Smuzhiyunconfig KERNEL_START_BOOL
196*4882a593Smuzhiyun	bool "Set custom kernel base address"
197*4882a593Smuzhiyun	depends on ADVANCED_OPTIONS
198*4882a593Smuzhiyun	help
199*4882a593Smuzhiyun	  This option allows you to set the kernel virtual address at which
200*4882a593Smuzhiyun	  the kernel will map low memory (the kernel image will be linked at
201*4882a593Smuzhiyun	  this address).  This can be useful in optimizing the virtual memory
202*4882a593Smuzhiyun	  layout of the system.
203*4882a593Smuzhiyun
204*4882a593Smuzhiyun	  Say N here unless you know what you are doing.
205*4882a593Smuzhiyun
206*4882a593Smuzhiyunconfig KERNEL_START
207*4882a593Smuzhiyun	hex "Virtual address of kernel base" if KERNEL_START_BOOL
208*4882a593Smuzhiyun	default "0xc0000000" if MMU
209*4882a593Smuzhiyun	default KERNEL_BASE_ADDR if !MMU
210*4882a593Smuzhiyun
211*4882a593Smuzhiyunconfig TASK_SIZE_BOOL
212*4882a593Smuzhiyun	bool "Set custom user task size"
213*4882a593Smuzhiyun	depends on ADVANCED_OPTIONS && MMU
214*4882a593Smuzhiyun	help
215*4882a593Smuzhiyun	  This option allows you to set the amount of virtual address space
216*4882a593Smuzhiyun	  allocated to user tasks.  This can be useful in optimizing the
217*4882a593Smuzhiyun	  virtual memory layout of the system.
218*4882a593Smuzhiyun
219*4882a593Smuzhiyun	  Say N here unless you know what you are doing.
220*4882a593Smuzhiyun
221*4882a593Smuzhiyunconfig TASK_SIZE
222*4882a593Smuzhiyun	hex "Size of user task space" if TASK_SIZE_BOOL
223*4882a593Smuzhiyun	default "0x80000000"
224*4882a593Smuzhiyun
225*4882a593Smuzhiyunchoice
226*4882a593Smuzhiyun	prompt "Page size"
227*4882a593Smuzhiyun	default MICROBLAZE_4K_PAGES
228*4882a593Smuzhiyun	depends on ADVANCED_OPTIONS && !MMU
229*4882a593Smuzhiyun	help
230*4882a593Smuzhiyun	  Select the kernel logical page size. Increasing the page size
231*4882a593Smuzhiyun	  will reduce software overhead at each page boundary, allow
232*4882a593Smuzhiyun	  hardware prefetch mechanisms to be more effective, and allow
233*4882a593Smuzhiyun	  larger dma transfers increasing IO efficiency and reducing
234*4882a593Smuzhiyun	  overhead. However the utilization of memory will increase.
235*4882a593Smuzhiyun	  For example, each cached file will using a multiple of the
236*4882a593Smuzhiyun	  page size to hold its contents and the difference between the
237*4882a593Smuzhiyun	  end of file and the end of page is wasted.
238*4882a593Smuzhiyun
239*4882a593Smuzhiyun	  If unsure, choose 4K_PAGES.
240*4882a593Smuzhiyun
241*4882a593Smuzhiyunconfig MICROBLAZE_4K_PAGES
242*4882a593Smuzhiyun	bool "4k page size"
243*4882a593Smuzhiyun
244*4882a593Smuzhiyunconfig MICROBLAZE_16K_PAGES
245*4882a593Smuzhiyun	bool "16k page size"
246*4882a593Smuzhiyun
247*4882a593Smuzhiyunconfig MICROBLAZE_64K_PAGES
248*4882a593Smuzhiyun	bool "64k page size"
249*4882a593Smuzhiyun
250*4882a593Smuzhiyunendchoice
251*4882a593Smuzhiyun
252*4882a593Smuzhiyunendmenu
253*4882a593Smuzhiyun
254*4882a593Smuzhiyunmenu "Bus Options"
255*4882a593Smuzhiyun
256*4882a593Smuzhiyunconfig PCI_XILINX
257*4882a593Smuzhiyun	bool "Xilinx PCI host bridge support"
258*4882a593Smuzhiyun	depends on PCI
259*4882a593Smuzhiyun
260*4882a593Smuzhiyunendmenu
261