csky: Build infrastructure
This patch adds Makefile, Kconfig for build infrastructure. Signed-off-by: Guo Ren <ren_guo@c-sky.com> Acked-by: Arnd Bergmann <arnd@arndb.de>
This commit is contained in:
Родитель
84df9525b0
Коммит
c32e64e852
|
@ -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"
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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'
|
|
@ -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
|
|
@ -0,0 +1 @@
|
|||
../../../../../include/dt-bindings
|
|
@ -0,0 +1,49 @@
|
|||
generic-y += asm-offsets.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 += 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 += irq.h
|
||||
generic-y += irq_regs.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 += mm-arch-hooks.h
|
||||
generic-y += module.h
|
||||
generic-y += mutex.h
|
||||
generic-y += pci.h
|
||||
generic-y += percpu.h
|
||||
generic-y += preempt.h
|
||||
generic-y += qrwlock.h
|
||||
generic-y += scatterlist.h
|
||||
generic-y += sections.h
|
||||
generic-y += serial.h
|
||||
generic-y += shm.h
|
||||
generic-y += timex.h
|
||||
generic-y += topology.h
|
||||
generic-y += trace_clock.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
|
|
@ -0,0 +1,32 @@
|
|||
include include/uapi/asm-generic/Kbuild.asm
|
||||
|
||||
header-y += cachectl.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
|
|
@ -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
|
|
@ -0,0 +1 @@
|
|||
lib-y := usercopy.o delay.o
|
|
@ -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
|
Загрузка…
Ссылка в новой задаче