1*4882a593Smuzhiyun# SPDX-License-Identifier: GPL-2.0-only 2*4882a593Smuzhiyunconfig CSKY 3*4882a593Smuzhiyun def_bool y 4*4882a593Smuzhiyun select ARCH_32BIT_OFF_T 5*4882a593Smuzhiyun select ARCH_HAS_DMA_PREP_COHERENT 6*4882a593Smuzhiyun select ARCH_HAS_GCOV_PROFILE_ALL 7*4882a593Smuzhiyun select ARCH_HAS_SYNC_DMA_FOR_CPU 8*4882a593Smuzhiyun select ARCH_HAS_SYNC_DMA_FOR_DEVICE 9*4882a593Smuzhiyun select ARCH_USE_BUILTIN_BSWAP 10*4882a593Smuzhiyun select ARCH_USE_QUEUED_RWLOCKS if NR_CPUS>2 11*4882a593Smuzhiyun select ARCH_WANT_FRAME_POINTERS if !CPU_CK610 12*4882a593Smuzhiyun select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT 13*4882a593Smuzhiyun select COMMON_CLK 14*4882a593Smuzhiyun select CLKSRC_MMIO 15*4882a593Smuzhiyun select CSKY_MPINTC if CPU_CK860 16*4882a593Smuzhiyun select CSKY_MP_TIMER if CPU_CK860 17*4882a593Smuzhiyun select CSKY_APB_INTC 18*4882a593Smuzhiyun select DMA_DIRECT_REMAP 19*4882a593Smuzhiyun select IRQ_DOMAIN 20*4882a593Smuzhiyun select HANDLE_DOMAIN_IRQ 21*4882a593Smuzhiyun select DW_APB_TIMER_OF 22*4882a593Smuzhiyun select GENERIC_IOREMAP 23*4882a593Smuzhiyun select GENERIC_LIB_ASHLDI3 24*4882a593Smuzhiyun select GENERIC_LIB_ASHRDI3 25*4882a593Smuzhiyun select GENERIC_LIB_LSHRDI3 26*4882a593Smuzhiyun select GENERIC_LIB_MULDI3 27*4882a593Smuzhiyun select GENERIC_LIB_CMPDI2 28*4882a593Smuzhiyun select GENERIC_LIB_UCMPDI2 29*4882a593Smuzhiyun select GENERIC_ALLOCATOR 30*4882a593Smuzhiyun select GENERIC_ATOMIC64 31*4882a593Smuzhiyun select GENERIC_CLOCKEVENTS 32*4882a593Smuzhiyun select GENERIC_CPU_DEVICES 33*4882a593Smuzhiyun select GENERIC_IRQ_CHIP 34*4882a593Smuzhiyun select GENERIC_IRQ_PROBE 35*4882a593Smuzhiyun select GENERIC_IRQ_SHOW 36*4882a593Smuzhiyun select GENERIC_IRQ_MULTI_HANDLER 37*4882a593Smuzhiyun select GENERIC_SCHED_CLOCK 38*4882a593Smuzhiyun select GENERIC_SMP_IDLE_THREAD 39*4882a593Smuzhiyun select GX6605S_TIMER if CPU_CK610 40*4882a593Smuzhiyun select HAVE_ARCH_TRACEHOOK 41*4882a593Smuzhiyun select HAVE_ARCH_AUDITSYSCALL 42*4882a593Smuzhiyun select HAVE_ARCH_MMAP_RND_BITS 43*4882a593Smuzhiyun select HAVE_ARCH_SECCOMP_FILTER 44*4882a593Smuzhiyun select HAVE_CONTEXT_TRACKING 45*4882a593Smuzhiyun select HAVE_VIRT_CPU_ACCOUNTING_GEN 46*4882a593Smuzhiyun select HAVE_DEBUG_BUGVERBOSE 47*4882a593Smuzhiyun select HAVE_DYNAMIC_FTRACE 48*4882a593Smuzhiyun select HAVE_DYNAMIC_FTRACE_WITH_REGS 49*4882a593Smuzhiyun select HAVE_FUNCTION_TRACER 50*4882a593Smuzhiyun select HAVE_FUNCTION_GRAPH_TRACER 51*4882a593Smuzhiyun select HAVE_FUNCTION_ERROR_INJECTION 52*4882a593Smuzhiyun select HAVE_FTRACE_MCOUNT_RECORD 53*4882a593Smuzhiyun select HAVE_KERNEL_GZIP 54*4882a593Smuzhiyun select HAVE_KERNEL_LZO 55*4882a593Smuzhiyun select HAVE_KERNEL_LZMA 56*4882a593Smuzhiyun select HAVE_KPROBES if !CPU_CK610 57*4882a593Smuzhiyun select HAVE_KPROBES_ON_FTRACE if !CPU_CK610 58*4882a593Smuzhiyun select HAVE_KRETPROBES if !CPU_CK610 59*4882a593Smuzhiyun select HAVE_PERF_EVENTS 60*4882a593Smuzhiyun select HAVE_PERF_REGS 61*4882a593Smuzhiyun select HAVE_PERF_USER_STACK_DUMP 62*4882a593Smuzhiyun select HAVE_DMA_CONTIGUOUS 63*4882a593Smuzhiyun select HAVE_REGS_AND_STACK_ACCESS_API 64*4882a593Smuzhiyun select HAVE_RSEQ 65*4882a593Smuzhiyun select HAVE_STACKPROTECTOR 66*4882a593Smuzhiyun select HAVE_SYSCALL_TRACEPOINTS 67*4882a593Smuzhiyun select MAY_HAVE_SPARSE_IRQ 68*4882a593Smuzhiyun select MODULES_USE_ELF_RELA if MODULES 69*4882a593Smuzhiyun select OF 70*4882a593Smuzhiyun select OF_EARLY_FLATTREE 71*4882a593Smuzhiyun select PERF_USE_VMALLOC if CPU_CK610 72*4882a593Smuzhiyun select RTC_LIB 73*4882a593Smuzhiyun select TIMER_OF 74*4882a593Smuzhiyun select USB_ARCH_HAS_EHCI 75*4882a593Smuzhiyun select USB_ARCH_HAS_OHCI 76*4882a593Smuzhiyun select GENERIC_PCI_IOMAP 77*4882a593Smuzhiyun select HAVE_PCI 78*4882a593Smuzhiyun select PCI_DOMAINS_GENERIC if PCI 79*4882a593Smuzhiyun select PCI_SYSCALL if PCI 80*4882a593Smuzhiyun select PCI_MSI if PCI 81*4882a593Smuzhiyun select SET_FS 82*4882a593Smuzhiyun 83*4882a593Smuzhiyunconfig LOCKDEP_SUPPORT 84*4882a593Smuzhiyun def_bool y 85*4882a593Smuzhiyun 86*4882a593Smuzhiyunconfig ARCH_SUPPORTS_UPROBES 87*4882a593Smuzhiyun def_bool y if !CPU_CK610 88*4882a593Smuzhiyun 89*4882a593Smuzhiyunconfig CPU_HAS_CACHEV2 90*4882a593Smuzhiyun bool 91*4882a593Smuzhiyun 92*4882a593Smuzhiyunconfig CPU_HAS_FPUV2 93*4882a593Smuzhiyun bool 94*4882a593Smuzhiyun 95*4882a593Smuzhiyunconfig CPU_HAS_HILO 96*4882a593Smuzhiyun bool 97*4882a593Smuzhiyun 98*4882a593Smuzhiyunconfig CPU_HAS_TLBI 99*4882a593Smuzhiyun bool 100*4882a593Smuzhiyun 101*4882a593Smuzhiyunconfig CPU_HAS_LDSTEX 102*4882a593Smuzhiyun bool 103*4882a593Smuzhiyun help 104*4882a593Smuzhiyun For SMP, CPU needs "ldex&stex" instructions for atomic operations. 105*4882a593Smuzhiyun 106*4882a593Smuzhiyunconfig CPU_NEED_TLBSYNC 107*4882a593Smuzhiyun bool 108*4882a593Smuzhiyun 109*4882a593Smuzhiyunconfig CPU_NEED_SOFTALIGN 110*4882a593Smuzhiyun bool 111*4882a593Smuzhiyun 112*4882a593Smuzhiyunconfig CPU_NO_USER_BKPT 113*4882a593Smuzhiyun bool 114*4882a593Smuzhiyun help 115*4882a593Smuzhiyun For abiv2 we couldn't use "trap 1" as user space bkpt in gdbserver, because 116*4882a593Smuzhiyun abiv2 is 16/32bit instruction set and "trap 1" is 32bit. 117*4882a593Smuzhiyun So we need a 16bit instruction as user space bkpt, and it will cause an illegal 118*4882a593Smuzhiyun instruction exception. 119*4882a593Smuzhiyun In kernel we parse the *regs->pc to determine whether to send SIGTRAP or not. 120*4882a593Smuzhiyun 121*4882a593Smuzhiyunconfig GENERIC_CALIBRATE_DELAY 122*4882a593Smuzhiyun def_bool y 123*4882a593Smuzhiyun 124*4882a593Smuzhiyunconfig GENERIC_CSUM 125*4882a593Smuzhiyun def_bool y 126*4882a593Smuzhiyun 127*4882a593Smuzhiyunconfig GENERIC_HWEIGHT 128*4882a593Smuzhiyun def_bool y 129*4882a593Smuzhiyun 130*4882a593Smuzhiyunconfig MMU 131*4882a593Smuzhiyun def_bool y 132*4882a593Smuzhiyun 133*4882a593Smuzhiyunconfig STACKTRACE_SUPPORT 134*4882a593Smuzhiyun def_bool y 135*4882a593Smuzhiyun 136*4882a593Smuzhiyunconfig TIME_LOW_RES 137*4882a593Smuzhiyun def_bool y 138*4882a593Smuzhiyun 139*4882a593Smuzhiyunconfig TRACE_IRQFLAGS_SUPPORT 140*4882a593Smuzhiyun def_bool y 141*4882a593Smuzhiyun 142*4882a593Smuzhiyunconfig CPU_TLB_SIZE 143*4882a593Smuzhiyun int 144*4882a593Smuzhiyun default "128" if (CPU_CK610 || CPU_CK807 || CPU_CK810) 145*4882a593Smuzhiyun default "1024" if (CPU_CK860) 146*4882a593Smuzhiyun 147*4882a593Smuzhiyunconfig CPU_ASID_BITS 148*4882a593Smuzhiyun int 149*4882a593Smuzhiyun default "8" if (CPU_CK610 || CPU_CK807 || CPU_CK810) 150*4882a593Smuzhiyun default "12" if (CPU_CK860) 151*4882a593Smuzhiyun 152*4882a593Smuzhiyunconfig L1_CACHE_SHIFT 153*4882a593Smuzhiyun int 154*4882a593Smuzhiyun default "4" if (CPU_CK610) 155*4882a593Smuzhiyun default "5" if (CPU_CK807 || CPU_CK810) 156*4882a593Smuzhiyun default "6" if (CPU_CK860) 157*4882a593Smuzhiyun 158*4882a593Smuzhiyunconfig ARCH_MMAP_RND_BITS_MIN 159*4882a593Smuzhiyun default 8 160*4882a593Smuzhiyun 161*4882a593Smuzhiyun# max bits determined by the following formula: 162*4882a593Smuzhiyun# VA_BITS - PAGE_SHIFT - 3 163*4882a593Smuzhiyunconfig ARCH_MMAP_RND_BITS_MAX 164*4882a593Smuzhiyun default 17 165*4882a593Smuzhiyun 166*4882a593Smuzhiyunmenu "Processor type and features" 167*4882a593Smuzhiyun 168*4882a593Smuzhiyunchoice 169*4882a593Smuzhiyun prompt "CPU MODEL" 170*4882a593Smuzhiyun default CPU_CK807 171*4882a593Smuzhiyun 172*4882a593Smuzhiyunconfig CPU_CK610 173*4882a593Smuzhiyun bool "CSKY CPU ck610" 174*4882a593Smuzhiyun select CPU_NEED_TLBSYNC 175*4882a593Smuzhiyun select CPU_NEED_SOFTALIGN 176*4882a593Smuzhiyun select CPU_NO_USER_BKPT 177*4882a593Smuzhiyun 178*4882a593Smuzhiyunconfig CPU_CK810 179*4882a593Smuzhiyun bool "CSKY CPU ck810" 180*4882a593Smuzhiyun select CPU_HAS_HILO 181*4882a593Smuzhiyun select CPU_NEED_TLBSYNC 182*4882a593Smuzhiyun 183*4882a593Smuzhiyunconfig CPU_CK807 184*4882a593Smuzhiyun bool "CSKY CPU ck807" 185*4882a593Smuzhiyun select CPU_HAS_HILO 186*4882a593Smuzhiyun 187*4882a593Smuzhiyunconfig CPU_CK860 188*4882a593Smuzhiyun bool "CSKY CPU ck860" 189*4882a593Smuzhiyun select CPU_HAS_TLBI 190*4882a593Smuzhiyun select CPU_HAS_CACHEV2 191*4882a593Smuzhiyun select CPU_HAS_LDSTEX 192*4882a593Smuzhiyun select CPU_HAS_FPUV2 193*4882a593Smuzhiyunendchoice 194*4882a593Smuzhiyun 195*4882a593Smuzhiyunchoice 196*4882a593Smuzhiyun prompt "C-SKY PMU type" 197*4882a593Smuzhiyun depends on PERF_EVENTS 198*4882a593Smuzhiyun depends on CPU_CK807 || CPU_CK810 || CPU_CK860 199*4882a593Smuzhiyun 200*4882a593Smuzhiyunconfig CPU_PMU_NONE 201*4882a593Smuzhiyun bool "None" 202*4882a593Smuzhiyun 203*4882a593Smuzhiyunconfig CSKY_PMU_V1 204*4882a593Smuzhiyun bool "Performance Monitoring Unit Ver.1" 205*4882a593Smuzhiyun 206*4882a593Smuzhiyunendchoice 207*4882a593Smuzhiyun 208*4882a593Smuzhiyunchoice 209*4882a593Smuzhiyun prompt "Power Manager Instruction (wait/doze/stop)" 210*4882a593Smuzhiyun default CPU_PM_NONE 211*4882a593Smuzhiyun 212*4882a593Smuzhiyunconfig CPU_PM_NONE 213*4882a593Smuzhiyun bool "None" 214*4882a593Smuzhiyun 215*4882a593Smuzhiyunconfig CPU_PM_WAIT 216*4882a593Smuzhiyun bool "wait" 217*4882a593Smuzhiyun 218*4882a593Smuzhiyunconfig CPU_PM_DOZE 219*4882a593Smuzhiyun bool "doze" 220*4882a593Smuzhiyun 221*4882a593Smuzhiyunconfig CPU_PM_STOP 222*4882a593Smuzhiyun bool "stop" 223*4882a593Smuzhiyunendchoice 224*4882a593Smuzhiyun 225*4882a593Smuzhiyunmenuconfig HAVE_TCM 226*4882a593Smuzhiyun bool "Tightly-Coupled/Sram Memory" 227*4882a593Smuzhiyun select GENERIC_ALLOCATOR 228*4882a593Smuzhiyun help 229*4882a593Smuzhiyun The implementation are not only used by TCM (Tightly-Coupled Meory) 230*4882a593Smuzhiyun but also used by sram on SOC bus. It follow existed linux tcm 231*4882a593Smuzhiyun software interface, so that old tcm application codes could be 232*4882a593Smuzhiyun re-used directly. 233*4882a593Smuzhiyun 234*4882a593Smuzhiyunif HAVE_TCM 235*4882a593Smuzhiyunconfig ITCM_RAM_BASE 236*4882a593Smuzhiyun hex "ITCM ram base" 237*4882a593Smuzhiyun default 0xffffffff 238*4882a593Smuzhiyun 239*4882a593Smuzhiyunconfig ITCM_NR_PAGES 240*4882a593Smuzhiyun int "Page count of ITCM size: NR*4KB" 241*4882a593Smuzhiyun range 1 256 242*4882a593Smuzhiyun default 32 243*4882a593Smuzhiyun 244*4882a593Smuzhiyunconfig HAVE_DTCM 245*4882a593Smuzhiyun bool "DTCM Support" 246*4882a593Smuzhiyun 247*4882a593Smuzhiyunconfig DTCM_RAM_BASE 248*4882a593Smuzhiyun hex "DTCM ram base" 249*4882a593Smuzhiyun depends on HAVE_DTCM 250*4882a593Smuzhiyun default 0xffffffff 251*4882a593Smuzhiyun 252*4882a593Smuzhiyunconfig DTCM_NR_PAGES 253*4882a593Smuzhiyun int "Page count of DTCM size: NR*4KB" 254*4882a593Smuzhiyun depends on HAVE_DTCM 255*4882a593Smuzhiyun range 1 256 256*4882a593Smuzhiyun default 32 257*4882a593Smuzhiyunendif 258*4882a593Smuzhiyun 259*4882a593Smuzhiyunconfig CPU_HAS_VDSP 260*4882a593Smuzhiyun bool "CPU has VDSP coprocessor" 261*4882a593Smuzhiyun depends on CPU_HAS_FPU && CPU_HAS_FPUV2 262*4882a593Smuzhiyun 263*4882a593Smuzhiyunconfig CPU_HAS_FPU 264*4882a593Smuzhiyun bool "CPU has FPU coprocessor" 265*4882a593Smuzhiyun depends on CPU_CK807 || CPU_CK810 || CPU_CK860 266*4882a593Smuzhiyun 267*4882a593Smuzhiyunconfig CPU_HAS_ICACHE_INS 268*4882a593Smuzhiyun bool "CPU has Icache invalidate instructions" 269*4882a593Smuzhiyun depends on CPU_HAS_CACHEV2 270*4882a593Smuzhiyun 271*4882a593Smuzhiyunconfig CPU_HAS_TEE 272*4882a593Smuzhiyun bool "CPU has Trusted Execution Environment" 273*4882a593Smuzhiyun depends on CPU_CK810 274*4882a593Smuzhiyun 275*4882a593Smuzhiyunconfig SMP 276*4882a593Smuzhiyun bool "Symmetric Multi-Processing (SMP) support for C-SKY" 277*4882a593Smuzhiyun depends on CPU_CK860 278*4882a593Smuzhiyun default n 279*4882a593Smuzhiyun 280*4882a593Smuzhiyunconfig NR_CPUS 281*4882a593Smuzhiyun int "Maximum number of CPUs (2-32)" 282*4882a593Smuzhiyun range 2 32 283*4882a593Smuzhiyun depends on SMP 284*4882a593Smuzhiyun default "4" 285*4882a593Smuzhiyun 286*4882a593Smuzhiyunconfig HIGHMEM 287*4882a593Smuzhiyun bool "High Memory Support" 288*4882a593Smuzhiyun depends on !CPU_CK610 289*4882a593Smuzhiyun default y 290*4882a593Smuzhiyun 291*4882a593Smuzhiyunconfig FORCE_MAX_ZONEORDER 292*4882a593Smuzhiyun int "Maximum zone order" 293*4882a593Smuzhiyun default "11" 294*4882a593Smuzhiyun 295*4882a593Smuzhiyunconfig DRAM_BASE 296*4882a593Smuzhiyun hex "DRAM start addr (the same with memory-section in dts)" 297*4882a593Smuzhiyun default 0x0 298*4882a593Smuzhiyun 299*4882a593Smuzhiyunconfig HOTPLUG_CPU 300*4882a593Smuzhiyun bool "Support for hot-pluggable CPUs" 301*4882a593Smuzhiyun select GENERIC_IRQ_MIGRATION 302*4882a593Smuzhiyun depends on SMP 303*4882a593Smuzhiyun help 304*4882a593Smuzhiyun Say Y here to allow turning CPUs off and on. CPUs can be 305*4882a593Smuzhiyun controlled through /sys/devices/system/cpu/cpu1/hotplug/target. 306*4882a593Smuzhiyun 307*4882a593Smuzhiyun Say N if you want to disable CPU hotplug. 308*4882a593Smuzhiyunendmenu 309*4882a593Smuzhiyun 310*4882a593Smuzhiyunsource "arch/csky/Kconfig.platforms" 311*4882a593Smuzhiyun 312*4882a593Smuzhiyunsource "kernel/Kconfig.hz" 313