|  | # SPDX-License-Identifier: GPL-2.0-only | 
|  | config CSKY | 
|  | def_bool y | 
|  | select ARCH_32BIT_OFF_T | 
|  | select ARCH_HAS_DMA_PREP_COHERENT | 
|  | select ARCH_HAS_GCOV_PROFILE_ALL | 
|  | select ARCH_HAS_SYNC_DMA_FOR_CPU | 
|  | select ARCH_HAS_SYNC_DMA_FOR_DEVICE | 
|  | select ARCH_USE_BUILTIN_BSWAP | 
|  | select ARCH_USE_QUEUED_RWLOCKS if NR_CPUS>2 | 
|  | select ARCH_WANT_FRAME_POINTERS if !CPU_CK610 | 
|  | select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT | 
|  | select COMMON_CLK | 
|  | select CLKSRC_MMIO | 
|  | select CSKY_MPINTC if CPU_CK860 | 
|  | select CSKY_MP_TIMER if CPU_CK860 | 
|  | select CSKY_APB_INTC | 
|  | select DMA_DIRECT_REMAP | 
|  | select IRQ_DOMAIN | 
|  | select HANDLE_DOMAIN_IRQ | 
|  | select DW_APB_TIMER_OF | 
|  | select GENERIC_IOREMAP | 
|  | select GENERIC_LIB_ASHLDI3 | 
|  | select GENERIC_LIB_ASHRDI3 | 
|  | select GENERIC_LIB_LSHRDI3 | 
|  | select GENERIC_LIB_MULDI3 | 
|  | select GENERIC_LIB_CMPDI2 | 
|  | select GENERIC_LIB_UCMPDI2 | 
|  | select GENERIC_ALLOCATOR | 
|  | select GENERIC_ATOMIC64 | 
|  | select GENERIC_CLOCKEVENTS | 
|  | select GENERIC_CPU_DEVICES | 
|  | select GENERIC_IRQ_CHIP | 
|  | select GENERIC_IRQ_PROBE | 
|  | select GENERIC_IRQ_SHOW | 
|  | select GENERIC_IRQ_MULTI_HANDLER | 
|  | select GENERIC_SCHED_CLOCK | 
|  | select GENERIC_SMP_IDLE_THREAD | 
|  | select GX6605S_TIMER if CPU_CK610 | 
|  | select HAVE_ARCH_TRACEHOOK | 
|  | select HAVE_ARCH_AUDITSYSCALL | 
|  | select HAVE_ARCH_MMAP_RND_BITS | 
|  | select HAVE_ARCH_SECCOMP_FILTER | 
|  | select HAVE_CONTEXT_TRACKING | 
|  | select HAVE_VIRT_CPU_ACCOUNTING_GEN | 
|  | select HAVE_DEBUG_BUGVERBOSE | 
|  | select HAVE_DYNAMIC_FTRACE | 
|  | select HAVE_DYNAMIC_FTRACE_WITH_REGS | 
|  | select HAVE_FUNCTION_TRACER | 
|  | select HAVE_FUNCTION_GRAPH_TRACER | 
|  | select HAVE_FUNCTION_ERROR_INJECTION | 
|  | select HAVE_FTRACE_MCOUNT_RECORD | 
|  | select HAVE_KERNEL_GZIP | 
|  | select HAVE_KERNEL_LZO | 
|  | select HAVE_KERNEL_LZMA | 
|  | select HAVE_KPROBES if !CPU_CK610 | 
|  | select HAVE_KPROBES_ON_FTRACE if !CPU_CK610 | 
|  | select HAVE_KRETPROBES if !CPU_CK610 | 
|  | select HAVE_PERF_EVENTS | 
|  | select HAVE_PERF_REGS | 
|  | select HAVE_PERF_USER_STACK_DUMP | 
|  | select HAVE_DMA_CONTIGUOUS | 
|  | select HAVE_REGS_AND_STACK_ACCESS_API | 
|  | select HAVE_RSEQ | 
|  | select HAVE_STACKPROTECTOR | 
|  | select HAVE_SYSCALL_TRACEPOINTS | 
|  | select MAY_HAVE_SPARSE_IRQ | 
|  | select MODULES_USE_ELF_RELA if MODULES | 
|  | select OF | 
|  | select OF_EARLY_FLATTREE | 
|  | select PERF_USE_VMALLOC if CPU_CK610 | 
|  | select RTC_LIB | 
|  | select TIMER_OF | 
|  | select USB_ARCH_HAS_EHCI | 
|  | select USB_ARCH_HAS_OHCI | 
|  | select GENERIC_PCI_IOMAP | 
|  | select HAVE_PCI | 
|  | select PCI_DOMAINS_GENERIC if PCI | 
|  | select PCI_SYSCALL if PCI | 
|  | select PCI_MSI if PCI | 
|  |  | 
|  | config LOCKDEP_SUPPORT | 
|  | def_bool y | 
|  |  | 
|  | config ARCH_SUPPORTS_UPROBES | 
|  | def_bool y if !CPU_CK610 | 
|  |  | 
|  | config CPU_HAS_CACHEV2 | 
|  | bool | 
|  |  | 
|  | config CPU_HAS_FPUV2 | 
|  | bool | 
|  |  | 
|  | config CPU_HAS_HILO | 
|  | bool | 
|  |  | 
|  | config CPU_HAS_TLBI | 
|  | bool | 
|  |  | 
|  | config CPU_HAS_LDSTEX | 
|  | bool | 
|  | help | 
|  | For SMP, CPU needs "ldex&stex" instructions for atomic operations. | 
|  |  | 
|  | config CPU_NEED_TLBSYNC | 
|  | bool | 
|  |  | 
|  | config CPU_NEED_SOFTALIGN | 
|  | bool | 
|  |  | 
|  | config CPU_NO_USER_BKPT | 
|  | bool | 
|  | help | 
|  | For abiv2 we couldn't use "trap 1" as user space bkpt in gdbserver, because | 
|  | abiv2 is 16/32bit instruction set and "trap 1" is 32bit. | 
|  | So we need a 16bit instruction as user space bkpt, and it will cause an illegal | 
|  | instruction exception. | 
|  | In kernel we parse the *regs->pc to determine whether to send SIGTRAP or not. | 
|  |  | 
|  | config GENERIC_CALIBRATE_DELAY | 
|  | def_bool y | 
|  |  | 
|  | config GENERIC_CSUM | 
|  | def_bool y | 
|  |  | 
|  | config GENERIC_HWEIGHT | 
|  | def_bool y | 
|  |  | 
|  | config MMU | 
|  | def_bool y | 
|  |  | 
|  | config STACKTRACE_SUPPORT | 
|  | def_bool y | 
|  |  | 
|  | config TIME_LOW_RES | 
|  | def_bool y | 
|  |  | 
|  | config TRACE_IRQFLAGS_SUPPORT | 
|  | def_bool y | 
|  |  | 
|  | config CPU_TLB_SIZE | 
|  | int | 
|  | default "128"	if (CPU_CK610 || CPU_CK807 || CPU_CK810) | 
|  | default "1024"	if (CPU_CK860) | 
|  |  | 
|  | config CPU_ASID_BITS | 
|  | int | 
|  | default "8"	if (CPU_CK610 || CPU_CK807 || CPU_CK810) | 
|  | default "12"	if (CPU_CK860) | 
|  |  | 
|  | config L1_CACHE_SHIFT | 
|  | int | 
|  | default "4"	if (CPU_CK610) | 
|  | default "5"	if (CPU_CK807 || CPU_CK810) | 
|  | default "6"	if (CPU_CK860) | 
|  |  | 
|  | config ARCH_MMAP_RND_BITS_MIN | 
|  | default 8 | 
|  |  | 
|  | # max bits determined by the following formula: | 
|  | #  VA_BITS - PAGE_SHIFT - 3 | 
|  | config ARCH_MMAP_RND_BITS_MAX | 
|  | default 17 | 
|  |  | 
|  | menu "Processor type and features" | 
|  |  | 
|  | choice | 
|  | prompt "CPU MODEL" | 
|  | default CPU_CK807 | 
|  |  | 
|  | config CPU_CK610 | 
|  | bool "CSKY CPU ck610" | 
|  | select CPU_NEED_TLBSYNC | 
|  | select CPU_NEED_SOFTALIGN | 
|  | select CPU_NO_USER_BKPT | 
|  |  | 
|  | config CPU_CK810 | 
|  | bool "CSKY CPU ck810" | 
|  | select CPU_HAS_HILO | 
|  | select CPU_NEED_TLBSYNC | 
|  |  | 
|  | config CPU_CK807 | 
|  | bool "CSKY CPU ck807" | 
|  | select CPU_HAS_HILO | 
|  |  | 
|  | config CPU_CK860 | 
|  | bool "CSKY CPU ck860" | 
|  | select CPU_HAS_TLBI | 
|  | select CPU_HAS_CACHEV2 | 
|  | select CPU_HAS_LDSTEX | 
|  | select CPU_HAS_FPUV2 | 
|  | endchoice | 
|  |  | 
|  | choice | 
|  | prompt "C-SKY PMU type" | 
|  | depends on PERF_EVENTS | 
|  | depends on CPU_CK807 || CPU_CK810 || CPU_CK860 | 
|  |  | 
|  | config CPU_PMU_NONE | 
|  | bool "None" | 
|  |  | 
|  | config CSKY_PMU_V1 | 
|  | bool "Performance Monitoring Unit Ver.1" | 
|  |  | 
|  | endchoice | 
|  |  | 
|  | choice | 
|  | prompt "Power Manager Instruction (wait/doze/stop)" | 
|  | default CPU_PM_NONE | 
|  |  | 
|  | config CPU_PM_NONE | 
|  | bool "None" | 
|  |  | 
|  | config CPU_PM_WAIT | 
|  | bool "wait" | 
|  |  | 
|  | config CPU_PM_DOZE | 
|  | bool "doze" | 
|  |  | 
|  | config CPU_PM_STOP | 
|  | bool "stop" | 
|  | endchoice | 
|  |  | 
|  | menuconfig HAVE_TCM | 
|  | bool "Tightly-Coupled/Sram Memory" | 
|  | select GENERIC_ALLOCATOR | 
|  | help | 
|  | The implementation are not only used by TCM (Tightly-Coupled Meory) | 
|  | but also used by sram on SOC bus. It follow existed linux tcm | 
|  | software interface, so that old tcm application codes could be | 
|  | re-used directly. | 
|  |  | 
|  | if HAVE_TCM | 
|  | config ITCM_RAM_BASE | 
|  | hex "ITCM ram base" | 
|  | default 0xffffffff | 
|  |  | 
|  | config ITCM_NR_PAGES | 
|  | int "Page count of ITCM size: NR*4KB" | 
|  | range 1 256 | 
|  | default 32 | 
|  |  | 
|  | config HAVE_DTCM | 
|  | bool "DTCM Support" | 
|  |  | 
|  | config DTCM_RAM_BASE | 
|  | hex "DTCM ram base" | 
|  | depends on HAVE_DTCM | 
|  | default 0xffffffff | 
|  |  | 
|  | config DTCM_NR_PAGES | 
|  | int "Page count of DTCM size: NR*4KB" | 
|  | depends on HAVE_DTCM | 
|  | range 1 256 | 
|  | default 32 | 
|  | endif | 
|  |  | 
|  | config CPU_HAS_VDSP | 
|  | bool "CPU has VDSP coprocessor" | 
|  | depends on CPU_HAS_FPU && CPU_HAS_FPUV2 | 
|  |  | 
|  | config CPU_HAS_FPU | 
|  | bool "CPU has FPU coprocessor" | 
|  | depends on CPU_CK807 || CPU_CK810 || CPU_CK860 | 
|  |  | 
|  | config CPU_HAS_ICACHE_INS | 
|  | bool "CPU has Icache invalidate instructions" | 
|  | depends on CPU_HAS_CACHEV2 | 
|  |  | 
|  | config CPU_HAS_TEE | 
|  | bool "CPU has Trusted Execution Environment" | 
|  | depends on CPU_CK810 | 
|  |  | 
|  | config SMP | 
|  | bool "Symmetric Multi-Processing (SMP) support for C-SKY" | 
|  | depends on CPU_CK860 | 
|  | default n | 
|  |  | 
|  | config NR_CPUS | 
|  | int "Maximum number of CPUs (2-32)" | 
|  | range 2 32 | 
|  | depends on SMP | 
|  | default "4" | 
|  |  | 
|  | config HIGHMEM | 
|  | bool "High Memory Support" | 
|  | depends on !CPU_CK610 | 
|  | default y | 
|  |  | 
|  | config FORCE_MAX_ZONEORDER | 
|  | int "Maximum zone order" | 
|  | default "11" | 
|  |  | 
|  | config RAM_BASE | 
|  | hex "DRAM start addr (the same with memory-section in dts)" | 
|  | default 0x0 | 
|  |  | 
|  | config HOTPLUG_CPU | 
|  | bool "Support for hot-pluggable CPUs" | 
|  | select GENERIC_IRQ_MIGRATION | 
|  | depends on SMP | 
|  | help | 
|  | Say Y here to allow turning CPUs off and on. CPUs can be | 
|  | controlled through /sys/devices/system/cpu/cpu1/hotplug/target. | 
|  |  | 
|  | Say N if you want to disable CPU hotplug. | 
|  | endmenu | 
|  |  | 
|  | source "arch/csky/Kconfig.platforms" | 
|  |  | 
|  | source "kernel/Kconfig.hz" | 
|  |  | 
|  | config SECCOMP | 
|  | bool "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. |