Re: [PATCH V9 01/21] csky: Build infrastructure
From: Guo Ren
Date: Mon Oct 22 2018 - 20:09:09 EST
Hi Arnd,
Could you help me review the patch, seems the patch is skipped.
ref: https://lkml.org/lkml/2018/10/16/224
Thx
On Tue, Oct 16, 2018 at 10:58:20AM +0800, Guo Ren wrote:
> This patch adds Makefile, Kconfig for build infrastructure.
>
> Signed-off-by: Guo Ren <ren_guo@xxxxxxxxx>
> Cc: Arnd Bergmann <arnd@xxxxxxxx>
> ---
> Changelog:
> - make allmodconfig is OK.
> - Use BUILTIN_DTB as string, remove bool define for compile.
> - Add xor.h in asm/Kbuild
> - Add compat.h in asm/Kbuild.
> - Add select DMA_DIRECT_OPS in Kconfig.
> - remove kernel/platform.c in Makefile.
> ---
> ---
> arch/csky/Kconfig | 205 +++++++++++++++++++++++++++++++++
> arch/csky/Kconfig.debug | 9 ++
> arch/csky/Makefile | 93 +++++++++++++++
> arch/csky/abiv1/Makefile | 8 ++
> arch/csky/abiv2/Makefile | 10 ++
> arch/csky/boot/Makefile | 24 ++++
> arch/csky/boot/dts/Makefile | 13 +++
> arch/csky/boot/dts/include/dt-bindings | 1 +
> arch/csky/include/asm/Kbuild | 72 ++++++++++++
> arch/csky/include/uapi/asm/Kbuild | 33 ++++++
> arch/csky/kernel/Makefile | 8 ++
> arch/csky/lib/Makefile | 1 +
> arch/csky/mm/Makefile | 13 +++
> 13 files changed, 490 insertions(+)
> create mode 100644 arch/csky/Kconfig
> create mode 100644 arch/csky/Kconfig.debug
> create mode 100644 arch/csky/Makefile
> create mode 100644 arch/csky/abiv1/Makefile
> create mode 100644 arch/csky/abiv2/Makefile
> create mode 100644 arch/csky/boot/Makefile
> create mode 100644 arch/csky/boot/dts/Makefile
> create mode 120000 arch/csky/boot/dts/include/dt-bindings
> create mode 100644 arch/csky/include/asm/Kbuild
> create mode 100644 arch/csky/include/uapi/asm/Kbuild
> create mode 100644 arch/csky/kernel/Makefile
> create mode 100644 arch/csky/lib/Makefile
> create mode 100644 arch/csky/mm/Makefile
>
> diff --git a/arch/csky/Kconfig b/arch/csky/Kconfig
> new file mode 100644
> index 0000000..0a05585
> --- /dev/null
> +++ b/arch/csky/Kconfig
> @@ -0,0 +1,205 @@
> +config CSKY
> + def_bool y
> + 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 COMMON_CLK
> + select CLKSRC_MMIO
> + select CLKSRC_OF
> + select DMA_DIRECT_OPS
> + select DMA_NONCOHERENT_OPS
> + select IRQ_DOMAIN
> + select HANDLE_DOMAIN_IRQ
> + select DW_APB_TIMER_OF
> + 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 HAVE_ARCH_TRACEHOOK
> + select HAVE_GENERIC_DMA_COHERENT
> + select HAVE_KERNEL_GZIP
> + select HAVE_KERNEL_LZO
> + select HAVE_KERNEL_LZMA
> + select HAVE_C_RECORDMCOUNT
> + select HAVE_DMA_API_DEBUG
> + select HAVE_DMA_CONTIGUOUS
> + select HAVE_MEMBLOCK
> + select MAY_HAVE_SPARSE_IRQ
> + select MODULES_USE_ELF_RELA if MODULES
> + select NO_BOOTMEM
> + select OF
> + select OF_EARLY_FLATTREE
> + select OF_RESERVED_MEM
> + select PERF_USE_VMALLOC
> + select RTC_LIB
> + select TIMER_OF
> + select USB_ARCH_HAS_EHCI
> + select USB_ARCH_HAS_OHCI
> +
> +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" instrcutions to 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 RWSEM_GENERIC_SPINLOCK
> + 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)
> +
> +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 "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
> +
> +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_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 "2"
> +
> +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
> +
> +endmenu
> +
> +source "kernel/Kconfig.hz"
> diff --git a/arch/csky/Kconfig.debug b/arch/csky/Kconfig.debug
> new file mode 100644
> index 0000000..48cf6ff
> --- /dev/null
> +++ b/arch/csky/Kconfig.debug
> @@ -0,0 +1,9 @@
> +menu "C-SKY Debug Options"
> +config CSKY_BUILTIN_DTB
> + string "Use kernel builtin dtb"
> + help
> + User could define the dtb instead of the one which is passed from
> + bootloader.
> + Sometimes for debug, we want to use a built-in dtb and then we needn't
> + modify bootloader at all.
> +endmenu
> diff --git a/arch/csky/Makefile b/arch/csky/Makefile
> new file mode 100644
> index 0000000..67a4ae1
> --- /dev/null
> +++ b/arch/csky/Makefile
> @@ -0,0 +1,93 @@
> +OBJCOPYFLAGS :=-O binary
> +GZFLAGS :=-9
> +KBUILD_DEFCONFIG := defconfig
> +
> +ifdef CONFIG_CPU_HAS_FPU
> +FPUEXT = f
> +endif
> +
> +ifdef CONFIG_CPU_HAS_VDSP
> +VDSPEXT = v
> +endif
> +
> +ifdef CONFIG_CPU_HAS_TEE
> +TEEEXT = t
> +endif
> +
> +ifdef CONFIG_CPU_CK610
> +CPUTYPE = ck610
> +CSKYABI = abiv1
> +endif
> +
> +ifdef CONFIG_CPU_CK810
> +CPUTYPE = ck810
> +CSKYABI = abiv2
> +endif
> +
> +ifdef CONFIG_CPU_CK807
> +CPUTYPE = ck807
> +CSKYABI = abiv2
> +endif
> +
> +ifdef CONFIG_CPU_CK860
> +CPUTYPE = ck860
> +CSKYABI = abiv2
> +endif
> +
> +ifneq ($(CSKYABI),)
> +MCPU_STR = $(CPUTYPE)$(FPUEXT)$(VDSPEXT)$(TEEEXT)
> +KBUILD_CFLAGS += -mcpu=$(MCPU_STR)
> +KBUILD_CFLAGS += -DCSKYCPU_DEF_NAME=\"$(MCPU_STR)\"
> +KBUILD_CFLAGS += -msoft-float -mdiv
> +KBUILD_CFLAGS += -fno-tree-vectorize
> +endif
> +
> +KBUILD_CFLAGS += -pipe
> +ifeq ($(CSKYABI),abiv2)
> +KBUILD_CFLAGS += -mno-stack-size
> +endif
> +
> +abidirs := $(patsubst %,arch/csky/%/,$(CSKYABI))
> +KBUILD_CFLAGS += $(patsubst %,-I$(srctree)/%inc,$(abidirs))
> +
> +KBUILD_CPPFLAGS += -mlittle-endian
> +LDFLAGS += -EL
> +
> +KBUILD_AFLAGS += $(KBUILD_CFLAGS)
> +
> +head-y := arch/csky/kernel/head.o
> +
> +core-y += arch/csky/kernel/
> +core-y += arch/csky/mm/
> +core-y += arch/csky/$(CSKYABI)/
> +
> +libs-y += arch/csky/lib/ \
> + $(shell $(CC) $(KBUILD_CFLAGS) $(KCFLAGS) -print-libgcc-file-name)
> +
> +boot := arch/csky/boot
> +ifneq '$(CONFIG_CSKY_BUILTIN_DTB)' '""'
> +core-y += $(boot)/dts/
> +endif
> +
> +all: zImage
> +
> +
> +dtbs: scripts
> + $(Q)$(MAKE) $(build)=$(boot)/dts
> +
> +%.dtb %.dtb.S %.dtb.o: scripts
> + $(Q)$(MAKE) $(build)=$(boot)/dts $(boot)/dts/$@
> +
> +zImage Image uImage: vmlinux dtbs
> + $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
> +
> +archclean:
> + $(Q)$(MAKE) $(clean)=$(boot)
> + $(Q)$(MAKE) $(clean)=$(boot)/dts
> + rm -rf arch/csky/include/generated
> +
> +define archhelp
> + echo '* zImage - Compressed kernel image (arch/$(ARCH)/boot/zImage)'
> + echo ' Image - Uncompressed kernel image (arch/$(ARCH)/boot/Image)'
> + echo ' uImage - U-Boot wrapped zImage'
> +endef
> diff --git a/arch/csky/abiv1/Makefile b/arch/csky/abiv1/Makefile
> new file mode 100644
> index 0000000..7c06276
> --- /dev/null
> +++ b/arch/csky/abiv1/Makefile
> @@ -0,0 +1,8 @@
> +obj-$(CONFIG_CPU_NEED_SOFTALIGN) += alignment.o
> +obj-y += bswapdi.o
> +obj-y += bswapsi.o
> +obj-y += cacheflush.o
> +obj-y += mmap.o
> +obj-y += memcpy.o
> +obj-y += memset.o
> +obj-y += strksyms.o
> diff --git a/arch/csky/abiv2/Makefile b/arch/csky/abiv2/Makefile
> new file mode 100644
> index 0000000..069ca72
> --- /dev/null
> +++ b/arch/csky/abiv2/Makefile
> @@ -0,0 +1,10 @@
> +obj-y += cacheflush.o
> +obj-$(CONFIG_CPU_HAS_FPU) += fpu.o
> +obj-y += memcmp.o
> +obj-y += memcpy.o
> +obj-y += memmove.o
> +obj-y += memset.o
> +obj-y += strcmp.o
> +obj-y += strcpy.o
> +obj-y += strlen.o
> +obj-y += strksyms.o
> diff --git a/arch/csky/boot/Makefile b/arch/csky/boot/Makefile
> new file mode 100644
> index 0000000..47d3d72
> --- /dev/null
> +++ b/arch/csky/boot/Makefile
> @@ -0,0 +1,24 @@
> +targets := Image zImage uImage
> +targets += $(dtb-y)
> +
> +$(obj)/Image: vmlinux FORCE
> + $(call if_changed,objcopy)
> + @echo ' Kernel: $@ is ready'
> +
> +compress-$(CONFIG_KERNEL_GZIP) = gzip
> +compress-$(CONFIG_KERNEL_LZO) = lzo
> +compress-$(CONFIG_KERNEL_LZMA) = lzma
> +compress-$(CONFIG_KERNEL_XZ) = xzkern
> +compress-$(CONFIG_KERNEL_LZ4) = lz4
> +
> +$(obj)/zImage: $(obj)/Image FORCE
> + $(call if_changed,$(compress-y))
> + @echo ' Kernel: $@ is ready'
> +
> +UIMAGE_ARCH = sandbox
> +UIMAGE_COMPRESSION = $(compress-y)
> +UIMAGE_LOADADDR = $(shell $(NM) vmlinux | awk '$$NF == "_start" {print $$1}')
> +
> +$(obj)/uImage: $(obj)/zImage
> + $(call if_changed,uimage)
> + @echo 'Image: $@ is ready'
> diff --git a/arch/csky/boot/dts/Makefile b/arch/csky/boot/dts/Makefile
> new file mode 100644
> index 0000000..305e81a
> --- /dev/null
> +++ b/arch/csky/boot/dts/Makefile
> @@ -0,0 +1,13 @@
> +dtstree := $(srctree)/$(src)
> +
> +ifneq '$(CONFIG_CSKY_BUILTIN_DTB)' '""'
> +builtindtb-y := $(patsubst "%",%,$(CONFIG_CSKY_BUILTIN_DTB))
> +dtb-y += $(builtindtb-y).dtb
> +obj-y += $(builtindtb-y).dtb.o
> +.SECONDARY: $(obj)/$(builtindtb-y).dtb.S
> +else
> +dtb-y := $(patsubst $(dtstree)/%.dts,%.dtb, $(wildcard $(dtstree)/*.dts))
> +endif
> +
> +always += $(dtb-y)
> +clean-files += *.dtb *.dtb.S
> diff --git a/arch/csky/boot/dts/include/dt-bindings b/arch/csky/boot/dts/include/dt-bindings
> new file mode 120000
> index 0000000..08c00e4
> --- /dev/null
> +++ b/arch/csky/boot/dts/include/dt-bindings
> @@ -0,0 +1 @@
> +../../../../../include/dt-bindings
> \ No newline at end of file
> diff --git a/arch/csky/include/asm/Kbuild b/arch/csky/include/asm/Kbuild
> new file mode 100644
> index 0000000..014eb57
> --- /dev/null
> +++ b/arch/csky/include/asm/Kbuild
> @@ -0,0 +1,72 @@
> +generic-y += asm-offsets.h
> +generic-y += bitsperlong.h
> +generic-y += bugs.h
> +generic-y += clkdev.h
> +generic-y += compat.h
> +generic-y += current.h
> +generic-y += delay.h
> +generic-y += device.h
> +generic-y += div64.h
> +generic-y += dma.h
> +generic-y += dma-contiguous.h
> +generic-y += dma-mapping.h
> +generic-y += emergency-restart.h
> +generic-y += errno.h
> +generic-y += exec.h
> +generic-y += fb.h
> +generic-y += ftrace.h
> +generic-y += futex.h
> +generic-y += gpio.h
> +generic-y += hardirq.h
> +generic-y += hw_irq.h
> +generic-y += ioctl.h
> +generic-y += ioctls.h
> +generic-y += irq.h
> +generic-y += irq_regs.h
> +generic-y += ipcbuf.h
> +generic-y += irq_work.h
> +generic-y += kdebug.h
> +generic-y += kmap_types.h
> +generic-y += kprobes.h
> +generic-y += kvm_para.h
> +generic-y += linkage.h
> +generic-y += local.h
> +generic-y += local64.h
> +generic-y += mman.h
> +generic-y += mm-arch-hooks.h
> +generic-y += module.h
> +generic-y += msgbuf.h
> +generic-y += mutex.h
> +generic-y += param.h
> +generic-y += pci.h
> +generic-y += percpu.h
> +generic-y += posix_types.h
> +generic-y += poll.h
> +generic-y += preempt.h
> +generic-y += qrwlock.h
> +generic-y += resource.h
> +generic-y += scatterlist.h
> +generic-y += sections.h
> +generic-y += sembuf.h
> +generic-y += serial.h
> +generic-y += setup.h
> +generic-y += shmbuf.h
> +generic-y += shm.h
> +generic-y += siginfo.h
> +generic-y += signal.h
> +generic-y += socket.h
> +generic-y += sockios.h
> +generic-y += statfs.h
> +generic-y += termbits.h
> +generic-y += termios.h
> +generic-y += timex.h
> +generic-y += topology.h
> +generic-y += trace_clock.h
> +generic-y += types.h
> +generic-y += ucontext.h
> +generic-y += unaligned.h
> +generic-y += user.h
> +generic-y += vga.h
> +generic-y += vmlinux.lds.h
> +generic-y += word-at-a-time.h
> +generic-y += xor.h
> diff --git a/arch/csky/include/uapi/asm/Kbuild b/arch/csky/include/uapi/asm/Kbuild
> new file mode 100644
> index 0000000..b65252b
> --- /dev/null
> +++ b/arch/csky/include/uapi/asm/Kbuild
> @@ -0,0 +1,33 @@
> +include include/uapi/asm-generic/Kbuild.asm
> +
> +header-y += cachectl.h
> +header-y += stat.h
> +
> +generic-y += auxvec.h
> +generic-y += param.h
> +generic-y += bpf_perf_event.h
> +generic-y += errno.h
> +generic-y += fcntl.h
> +generic-y += ioctl.h
> +generic-y += ioctls.h
> +generic-y += ipcbuf.h
> +generic-y += shmbuf.h
> +generic-y += bitsperlong.h
> +generic-y += mman.h
> +generic-y += msgbuf.h
> +generic-y += poll.h
> +generic-y += posix_types.h
> +generic-y += resource.h
> +generic-y += sembuf.h
> +generic-y += siginfo.h
> +generic-y += signal.h
> +generic-y += socket.h
> +generic-y += sockios.h
> +generic-y += statfs.h
> +generic-y += stat.h
> +generic-y += setup.h
> +generic-y += swab.h
> +generic-y += termbits.h
> +generic-y += termios.h
> +generic-y += types.h
> +generic-y += ucontext.h
> diff --git a/arch/csky/kernel/Makefile b/arch/csky/kernel/Makefile
> new file mode 100644
> index 0000000..4422de7
> --- /dev/null
> +++ b/arch/csky/kernel/Makefile
> @@ -0,0 +1,8 @@
> +extra-y := head.o vmlinux.lds
> +
> +obj-y += entry.o atomic.o signal.o traps.o irq.o time.o vdso.o
> +obj-y += power.o syscall.o syscall_table.o setup.o
> +obj-y += process.o cpu-probe.o ptrace.o dumpstack.o
> +
> +obj-$(CONFIG_MODULES) += module.o
> +obj-$(CONFIG_SMP) += smp.o
> diff --git a/arch/csky/lib/Makefile b/arch/csky/lib/Makefile
> new file mode 100644
> index 0000000..d1f368c
> --- /dev/null
> +++ b/arch/csky/lib/Makefile
> @@ -0,0 +1 @@
> +lib-y := usercopy.o delay.o
> diff --git a/arch/csky/mm/Makefile b/arch/csky/mm/Makefile
> new file mode 100644
> index 0000000..c870eb3
> --- /dev/null
> +++ b/arch/csky/mm/Makefile
> @@ -0,0 +1,13 @@
> +ifeq ($(CONFIG_CPU_HAS_CACHEV2),y)
> +obj-y += cachev2.o
> +else
> +obj-y += cachev1.o
> +endif
> +
> +obj-y += dma-mapping.o
> +obj-y += fault.o
> +obj-$(CONFIG_HIGHMEM) += highmem.o
> +obj-y += init.o
> +obj-y += ioremap.o
> +obj-y += syscache.o
> +obj-y += tlb.o
> --
> 2.7.4