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