mirror of
https://github.com/hardkernel/linux.git
synced 2026-04-10 23:18:10 +09:00
Introduce a "generic" platform, which aims to be board-agnostic by
making use of device trees passed by the boot protocol defined in the
MIPS UHI (Universal Hosting Interface) specification. Provision is made
for supporting boards which use a legacy boot protocol that can't be
changed, but adding support for such boards or any others is left to
followon patches.
Right now the built kernels expect to be loaded to 0x80100000, ie. in
kseg0. This is fine for the vast majority of MIPS platforms, but
nevertheless it would be good to remove this limitation in the future by
mapping the kernel via the TLB such that it can be loaded anywhere & map
itself appropriately.
Configuration is handled by dynamically generating configs using
scripts/kconfig/merge_config.sh, somewhat similar to the way powerpc
makes use of it. This allows for variations upon the configuration, eg.
differing architecture revisions or subsets of driver support for
differing boards, to be handled without having a large number of
defconfig files.
Signed-off-by: Paul Burton <paul.burton@imgtec.com>
Cc: linux-mips@linux-mips.org
Patchwork: https://patchwork.linux-mips.org/patch/14353/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
(cherry picked from commit eed0eabd12)
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
169 lines
4.6 KiB
Makefile
169 lines
4.6 KiB
Makefile
#
|
|
# This file is subject to the terms and conditions of the GNU General Public
|
|
# License. See the file "COPYING" in the main directory of this archive
|
|
# for more details.
|
|
#
|
|
# Copyright (C) 1995, 1998, 2001, 2002 by Ralf Baechle
|
|
# Copyright (C) 2004 Maciej W. Rozycki
|
|
#
|
|
|
|
#
|
|
# Some DECstations need all possible sections of an ECOFF executable
|
|
#
|
|
ifdef CONFIG_MACH_DECSTATION
|
|
e2eflag := -a
|
|
endif
|
|
|
|
#
|
|
# Drop some uninteresting sections in the kernel.
|
|
# This is only relevant for ELF kernels but doesn't hurt a.out
|
|
#
|
|
drop-sections := .reginfo .mdebug .comment .note .pdr .options .MIPS.options
|
|
strip-flags := $(addprefix --remove-section=,$(drop-sections))
|
|
|
|
hostprogs-y := elf2ecoff
|
|
|
|
suffix-y := bin
|
|
suffix-$(CONFIG_KERNEL_BZIP2) := bz2
|
|
suffix-$(CONFIG_KERNEL_GZIP) := gz
|
|
suffix-$(CONFIG_KERNEL_LZMA) := lzma
|
|
suffix-$(CONFIG_KERNEL_LZO) := lzo
|
|
|
|
targets := vmlinux.ecoff
|
|
quiet_cmd_ecoff = ECOFF $@
|
|
cmd_ecoff = $(obj)/elf2ecoff $(VMLINUX) $@ $(e2eflag)
|
|
$(obj)/vmlinux.ecoff: $(obj)/elf2ecoff $(VMLINUX) FORCE
|
|
$(call if_changed,ecoff)
|
|
|
|
targets += vmlinux.bin
|
|
quiet_cmd_bin = OBJCOPY $@
|
|
cmd_bin = $(OBJCOPY) -O binary $(strip-flags) $(VMLINUX) $@
|
|
$(obj)/vmlinux.bin: $(VMLINUX) FORCE
|
|
$(call if_changed,bin)
|
|
|
|
targets += vmlinux.srec
|
|
quiet_cmd_srec = OBJCOPY $@
|
|
cmd_srec = $(OBJCOPY) -S -O srec $(strip-flags) $(VMLINUX) $@
|
|
$(obj)/vmlinux.srec: $(VMLINUX) FORCE
|
|
$(call if_changed,srec)
|
|
|
|
UIMAGE_LOADADDR = $(VMLINUX_LOAD_ADDRESS)
|
|
UIMAGE_ENTRYADDR = $(VMLINUX_ENTRY_ADDRESS)
|
|
|
|
#
|
|
# Compressed vmlinux images
|
|
#
|
|
|
|
extra-y += vmlinux.bin.bz2
|
|
extra-y += vmlinux.bin.gz
|
|
extra-y += vmlinux.bin.lzma
|
|
extra-y += vmlinux.bin.lzo
|
|
|
|
$(obj)/vmlinux.bin.bz2: $(obj)/vmlinux.bin FORCE
|
|
$(call if_changed,bzip2)
|
|
|
|
$(obj)/vmlinux.bin.gz: $(obj)/vmlinux.bin FORCE
|
|
$(call if_changed,gzip)
|
|
|
|
$(obj)/vmlinux.bin.lzma: $(obj)/vmlinux.bin FORCE
|
|
$(call if_changed,lzma)
|
|
|
|
$(obj)/vmlinux.bin.lzo: $(obj)/vmlinux.bin FORCE
|
|
$(call if_changed,lzo)
|
|
|
|
#
|
|
# Compressed u-boot images
|
|
#
|
|
|
|
targets += uImage
|
|
targets += uImage.bin
|
|
targets += uImage.bz2
|
|
targets += uImage.gz
|
|
targets += uImage.lzma
|
|
targets += uImage.lzo
|
|
|
|
$(obj)/uImage.bin: $(obj)/vmlinux.bin FORCE
|
|
$(call if_changed,uimage,none)
|
|
|
|
$(obj)/uImage.bz2: $(obj)/vmlinux.bin.bz2 FORCE
|
|
$(call if_changed,uimage,bzip2)
|
|
|
|
$(obj)/uImage.gz: $(obj)/vmlinux.bin.gz FORCE
|
|
$(call if_changed,uimage,gzip)
|
|
|
|
$(obj)/uImage.lzma: $(obj)/vmlinux.bin.lzma FORCE
|
|
$(call if_changed,uimage,lzma)
|
|
|
|
$(obj)/uImage.lzo: $(obj)/vmlinux.bin.lzo FORCE
|
|
$(call if_changed,uimage,lzo)
|
|
|
|
$(obj)/uImage: $(obj)/uImage.$(suffix-y)
|
|
@ln -sf $(notdir $<) $@
|
|
@echo ' Image $@ is ready'
|
|
|
|
#
|
|
# Flattened Image Tree (.itb) images
|
|
#
|
|
|
|
targets += vmlinux.itb
|
|
targets += vmlinux.gz.itb
|
|
targets += vmlinux.bz2.itb
|
|
targets += vmlinux.lzma.itb
|
|
targets += vmlinux.lzo.itb
|
|
|
|
ifeq ($(ADDR_BITS),32)
|
|
itb_addr_cells = 1
|
|
endif
|
|
ifeq ($(ADDR_BITS),64)
|
|
itb_addr_cells = 2
|
|
endif
|
|
|
|
quiet_cmd_cpp_its_S = ITS $@
|
|
cmd_cpp_its_S = $(CPP) $(cpp_flags) -P -C -o $@ $< \
|
|
-DKERNEL_NAME="\"Linux $(KERNELRELEASE)\"" \
|
|
-DVMLINUX_BINARY="\"$(3)\"" \
|
|
-DVMLINUX_COMPRESSION="\"$(2)\"" \
|
|
-DVMLINUX_LOAD_ADDRESS=$(VMLINUX_LOAD_ADDRESS) \
|
|
-DVMLINUX_ENTRY_ADDRESS=$(VMLINUX_ENTRY_ADDRESS) \
|
|
-DADDR_BITS=$(ADDR_BITS) \
|
|
-DADDR_CELLS=$(itb_addr_cells)
|
|
|
|
$(obj)/vmlinux.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S FORCE
|
|
$(call if_changed_dep,cpp_its_S,none,vmlinux.bin)
|
|
|
|
$(obj)/vmlinux.gz.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S FORCE
|
|
$(call if_changed_dep,cpp_its_S,gzip,vmlinux.bin.gz)
|
|
|
|
$(obj)/vmlinux.bz2.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S FORCE
|
|
$(call if_changed_dep,cpp_its_S,bzip2,vmlinux.bin.bz2)
|
|
|
|
$(obj)/vmlinux.lzma.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S FORCE
|
|
$(call if_changed_dep,cpp_its_S,lzma,vmlinux.bin.lzma)
|
|
|
|
$(obj)/vmlinux.lzo.its: $(srctree)/arch/mips/$(PLATFORM)/vmlinux.its.S FORCE
|
|
$(call if_changed_dep,cpp_its_S,lzo,vmlinux.bin.lzo)
|
|
|
|
quiet_cmd_itb-image = ITB $@
|
|
cmd_itb-image = \
|
|
env PATH="$(objtree)/scripts/dtc:$(PATH)" \
|
|
$(CONFIG_SHELL) $(MKIMAGE) \
|
|
-D "-I dts -O dtb -p 500 \
|
|
--include $(objtree)/arch/mips \
|
|
--warning no-unit_address_vs_reg" \
|
|
-f $(2) $@
|
|
|
|
$(obj)/vmlinux.itb: $(obj)/vmlinux.its $(obj)/vmlinux.bin FORCE
|
|
$(call if_changed,itb-image,$<)
|
|
|
|
$(obj)/vmlinux.gz.itb: $(obj)/vmlinux.gz.its $(obj)/vmlinux.bin.gz FORCE
|
|
$(call if_changed,itb-image,$<)
|
|
|
|
$(obj)/vmlinux.bz2.itb: $(obj)/vmlinux.bz2.its $(obj)/vmlinux.bin.bz2 FORCE
|
|
$(call if_changed,itb-image,$<)
|
|
|
|
$(obj)/vmlinux.lzma.itb: $(obj)/vmlinux.lzma.its $(obj)/vmlinux.bin.lzma FORCE
|
|
$(call if_changed,itb-image,$<)
|
|
|
|
$(obj)/vmlinux.lzo.itb: $(obj)/vmlinux.lzo.its $(obj)/vmlinux.bin.lzo FORCE
|
|
$(call if_changed,itb-image,$<)
|