252 lines
8.1 KiB
Makefile
252 lines
8.1 KiB
Makefile
# e2k/Makefile
|
|
#
|
|
# This file is included by the global makefile so that you can add your own
|
|
# architecture-specific flags and dependencies. Remember to do have actions
|
|
# for "archclean" and "archdep" for cleaning up and making dependencies for
|
|
# this architecture
|
|
#
|
|
# 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.
|
|
|
|
KBUILD_DEFCONFIG ?= defconfig
|
|
|
|
AS = $(shell $(CC) -print-prog-name=as)
|
|
OBJDUMP = $(shell $(CC) -print-prog-name=objdump)
|
|
LD = $(shell $(CC) -print-prog-name=ld)
|
|
OBJCOPY = $(shell $(CC) -print-prog-name=objcopy)
|
|
|
|
KBUILD_CFLAGS += -fkernel -gline -masm-inline $(call cc-option,-fforbid-fp) \
|
|
$(call cc-option,-fmax-errors=5) $(call cc-option,-fno-loop-apb)
|
|
|
|
ifeq ($(PROFILE_GENERATE), 1)
|
|
KBUILD_CFLAGS += -fprofile-generate-kernel
|
|
endif
|
|
ifeq ($(origin PROFILE_USE), undefined)
|
|
else
|
|
KBUILD_CFLAGS += -fprofile-use="$(PROFILE_USE)"
|
|
endif
|
|
|
|
KBUILD_CFLAGS += $(call cc-option,-finline-functions,) \
|
|
$(call cc-option,-finline-functions-called-once,)
|
|
|
|
# Some uninteresting or broken warnings can be disabled with #pragma's only
|
|
KBUILD_CFLAGS += -Wno-array-bounds -Wno-duplicate-type-qualifier \
|
|
-Wno-builtin-functions-redefined -Wno-reduced-alignment \
|
|
-Wno-unused-value -Wno-overflow -Wno-signed-one-bit-field \
|
|
-include $(srctree)/arch/e2k/include/asm/override-lcc-warnings.h
|
|
|
|
LDFLAGS_vmlinux :=
|
|
CHECKFLAGS += -D__e2k__
|
|
|
|
CFLAGS += -pipe -D__linux__
|
|
|
|
KBUILD_CFLAGS += $(CFLAGS)
|
|
|
|
ifdef CONFIG_SMP_DAM_BUG
|
|
KBUILD_CFLAGS += -fno-dam-call
|
|
endif
|
|
|
|
CFLAGS_GENERIC := -march=elbrus-v2
|
|
CFLAGS_ES2 := -mtune=elbrus-2c+
|
|
CFLAGS_E2S := -mtune=elbrus-4c
|
|
CFLAGS_E8C := -mtune=elbrus-8c
|
|
CFLAGS_E1CP := -mtune=elbrus-1c+
|
|
CFLAGS_E8C2 := -mtune=elbrus-8c2
|
|
CFLAGS_E12C := -mtune=elbrus-12c
|
|
CFLAGS_E16C := -mtune=elbrus-16c
|
|
CFLAGS_E2C3 := -mtune=elbrus-2c3
|
|
|
|
CFLAGS_ALL_CPUS := $(CFLAGS_ES2) $(CFLAGS_E2S) $(CFLAGS_E8C) $(CFLAGS_E1CP) \
|
|
$(CFLAGS_E8C2) $(CFLAGS_E12C) $(CFLAGS_E16C) $(CFLAGS_E2C3)
|
|
export CFLAGS_ALL_CPUS
|
|
|
|
CFLAGS_E2K_SIC := $(CFLAGS_ES2)
|
|
|
|
export CFLAGS_ES2 CFLAGS_E2S CFLAGS_E8C CFLAGS_E1CP CFLAGS_E8C2 CFLAGS_E2C3 \
|
|
CFLAGS_E12C CFLAGS_E16C CFLAGS_E2K_SIC
|
|
|
|
ifeq ($(CONFIG_E2K_MACHINE),y)
|
|
ifeq ($(CONFIG_E2K_ES2_DSP),y)
|
|
KBUILD_CFLAGS += $(CFLAGS_ES2)
|
|
KBUILD_AFLAGS += $(CFLAGS_ES2)
|
|
TARGET_MDL := 04
|
|
else
|
|
ifeq ($(CONFIG_E2K_ES2_RU),y)
|
|
KBUILD_CFLAGS += $(CFLAGS_ES2)
|
|
KBUILD_AFLAGS += $(CFLAGS_ES2)
|
|
TARGET_MDL := 06
|
|
else
|
|
ifeq ($(CONFIG_E2K_E2S),y)
|
|
KBUILD_CFLAGS += $(CFLAGS_E2S)
|
|
KBUILD_AFLAGS += $(CFLAGS_E2S)
|
|
TARGET_MDL := 03
|
|
else
|
|
ifeq ($(CONFIG_E2K_E8C),y)
|
|
KBUILD_CFLAGS += $(CFLAGS_E8C)
|
|
KBUILD_AFLAGS += $(CFLAGS_E8C)
|
|
TARGET_MDL := 07
|
|
else
|
|
ifeq ($(CONFIG_E2K_E1CP),y)
|
|
KBUILD_CFLAGS += $(CFLAGS_E1CP)
|
|
KBUILD_AFLAGS += $(CFLAGS_E1CP)
|
|
TARGET_MDL := 08
|
|
else
|
|
ifeq ($(CONFIG_E2K_E8C2),y)
|
|
KBUILD_CFLAGS += $(CFLAGS_E8C2)
|
|
KBUILD_AFLAGS += $(CFLAGS_E8C2)
|
|
TARGET_MDL := 09
|
|
else
|
|
ifeq ($(CONFIG_E2K_E12C),y)
|
|
KBUILD_CFLAGS += $(CFLAGS_E12C)
|
|
KBUILD_AFLAGS += $(CFLAGS_E12C)
|
|
TARGET_MDL := 0a
|
|
else
|
|
ifeq ($(CONFIG_E2K_E16C),y)
|
|
KBUILD_CFLAGS += $(CFLAGS_E16C)
|
|
KBUILD_AFLAGS += $(CFLAGS_E16C)
|
|
TARGET_MDL := 0b
|
|
else
|
|
ifeq ($(CONFIG_E2K_E2C3),y)
|
|
KBUILD_CFLAGS += $(CFLAGS_E2C3)
|
|
KBUILD_AFLAGS += $(CFLAGS_E2C3)
|
|
TARGET_MDL := 0c
|
|
else
|
|
error "Invalid e2k machine type"
|
|
endif # ifeq ($(CONFIG_E2K_E2C3),y)
|
|
endif # ifeq ($(CONFIG_E2K_E16C),y)
|
|
endif # ifeq ($(CONFIG_E2K_E12C),y)
|
|
endif # ifeq ($(CONFIG_E2K_E8C2),y)
|
|
endif # ifeq ($(CONFIG_E2K_E1CP),y)
|
|
endif # ifeq ($(CONFIG_E2K_E8C),y)
|
|
endif # ifeq ($(CONFIG_E2K_E2S),y)
|
|
endif # ifeq ($(CONFIG_E2K_ES2_RU),y)
|
|
endif # ifeq ($(CONFIG_E2K_ES2_DSP),y)
|
|
else # ! ifeq ($(CONFIG_E2K_MACHINE),y)
|
|
KBUILD_CFLAGS += $(CFLAGS_GENERIC)
|
|
KBUILD_AFLAGS += $(CFLAGS_GENERIC)
|
|
TARGET_MDL := 00
|
|
endif
|
|
|
|
KBUILD_LDFLAGS += --relaxed-e2k-machine-check
|
|
KBUILD_CFLAGS += $(cflags-y)
|
|
|
|
libs-y += arch/e2k/lib/
|
|
core-y += arch/e2k/kernel/ \
|
|
arch/e2k/mm/ \
|
|
arch/e2k/p2v/ \
|
|
arch/e2k/fast_syscalls/
|
|
|
|
core-$(CONFIG_PROTECTED_MODE) += arch/e2k/3p/
|
|
|
|
drivers-$(CONFIG_PCI) += arch/e2k/pci/
|
|
|
|
# suspend and hibernation support
|
|
drivers-$(CONFIG_PM) += arch/e2k/power/
|
|
|
|
#KVM hypervisor and guest support
|
|
core-$(CONFIG_KVM) += arch/e2k/kvm/
|
|
|
|
# Elbrus common modules
|
|
core-y += arch/l/
|
|
drivers-$(CONFIG_PCI) += arch/l/pci/
|
|
|
|
boot := arch/e2k/boot
|
|
all: es2boot
|
|
|
|
MAKEBOOT = $(MAKE) -C arch/$(ARCH)/boot
|
|
|
|
.PHONY: clean archclean archmrproper archdep bootimage image zImage
|
|
|
|
es2boot: vmlinux
|
|
$(Q)$(MAKE) $(build)=$(boot) CONFIG_ES2=y boot
|
|
|
|
e2sboot: vmlinux
|
|
$(Q)$(MAKE) $(build)=$(boot) CONFIG_E2S=y boot
|
|
|
|
e8cboot: vmlinux
|
|
$(Q)$(MAKE) $(build)=$(boot) CONFIG_E8C=y boot
|
|
|
|
e1cpboot: vmlinux
|
|
$(Q)$(MAKE) $(build)=$(boot) CONFIG_E1CP=y boot
|
|
|
|
e8c2boot: vmlinux
|
|
$(Q)$(MAKE) $(build)=$(boot) CONFIG_E8C2=y CONFIG_E8C=y boot
|
|
|
|
e12cboot: vmlinux
|
|
$(Q)$(MAKE) $(build)=$(boot) CONFIG_E12C=y boot
|
|
|
|
e16cboot: vmlinux
|
|
$(Q)$(MAKE) $(build)=$(boot) CONFIG_E16C=y boot
|
|
|
|
e2c3boot: vmlinux
|
|
$(Q)$(MAKE) $(build)=$(boot) CONFIG_E2C3=y boot
|
|
|
|
image: vmlinux
|
|
$(Q)$(MAKE) $(build)=$(boot) CONFIG_BOOT=y $(objtree)/image.boot
|
|
$(Q)echo "Target mdl: $(TARGET_MDL)"; \
|
|
echo $(TARGET_MDL) | \
|
|
xxd -r -p | \
|
|
dd of=$(objtree)/image.boot bs=1 seek=258 count=1 conv=notrunc 2>/dev/null; \
|
|
echo 00000000 | xxd -r -p | \
|
|
dd of=$(objtree)/image.boot bs=1 seek=1588 count=4 conv=notrunc 2>/dev/null; \
|
|
e2k_kernel_csum=`cksum $(objtree)/image.boot | awk '{ printf "%08x\n", $$1 }'`; \
|
|
echo "Kernel image check sum: $$e2k_kernel_csum"; \
|
|
echo $$e2k_kernel_csum | \
|
|
sed 's/\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\7\8\5\6\3\4\1\2/' | \
|
|
xxd -r -p | \
|
|
dd of=$(objtree)/image.boot bs=1 seek=1588 count=4 conv=notrunc 2>/dev/null; \
|
|
echo 'Kernel: image.boot is ready' ' (#'`cat .version`')'
|
|
|
|
zImage: vmlinux
|
|
$(Q)$(MAKE) $(build)=$(boot) CONFIG_BOOT=y $(objtree)/zImage
|
|
$(Q)echo "Target mdl: $(TARGET_MDL)"; \
|
|
echo $(TARGET_MDL) | \
|
|
xxd -r -p | \
|
|
dd of=$(objtree)/zImage bs=1 seek=258 count=1 conv=notrunc 2>/dev/null; \
|
|
echo 00000000 | xxd -r -p | \
|
|
dd of=$(objtree)/zImage bs=1 seek=1588 count=4 conv=notrunc 2>/dev/null; \
|
|
e2k_kernel_csum=`cksum $(objtree)/zImage | awk '{ printf "%08x\n", $$1 }'`; \
|
|
echo "Kernel image check sum: $$e2k_kernel_csum"; \
|
|
echo $$e2k_kernel_csum | \
|
|
sed 's/\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)\(.\)/\7\8\5\6\3\4\1\2/' | \
|
|
xxd -r -p | \
|
|
dd of=$(objtree)/zImage bs=1 seek=1588 count=4 conv=notrunc 2>/dev/null; \
|
|
echo 'Kernel: zImage is ready' ' (#'`cat .version`')'
|
|
|
|
image.boot: bootimage
|
|
bootimage: image
|
|
|
|
archclean:
|
|
$(Q)$(MAKE) $(clean)=arch/e2k/boot
|
|
|
|
archmrproper:
|
|
|
|
archdep:
|
|
@$(MAKEBOOT) dep
|
|
|
|
install-headers:
|
|
@$(MAKEBOOT) install-headers
|
|
|
|
install-includes: include/linux/version.h arch/e2k/include FORCE
|
|
$(CONFIG_SHELL) scripts/gen-osl-include -l $(srctree) -r $(ROOT_WA)
|
|
|
|
build-install: FORCE
|
|
$(CONFIG_SHELL) scripts/gen-osl-build -l $(srctree) -m $(MODLIB)
|
|
|
|
define archhelp
|
|
echo '* image/bootimage - Kernel boot image (image.boot)'
|
|
echo ' zImage - Compressed kernel boot image (image.boot)'
|
|
echo ' install-headers - Install kernel headers in '
|
|
echo ' <basedir>/usr/include'
|
|
echo ' es2boot - Build kernel boot image with small embedded boot for es2 simulator'
|
|
echo ' e2sboot - Build kernel boot image with small embedded boot for e2s simulator'
|
|
echo ' e8cboot - Build kernel boot image with small embedded boot for e8c simulator'
|
|
echo ' e1cpboot - Build kernel boot image with small embedded boot for e1cp simulator'
|
|
echo ' e8c2boot - Build kernel boot image with small embedded boot for e8c2 simulator'
|
|
echo ' e12cboot - Build kernel boot image with small embedded boot for e12c simulator'
|
|
echo ' e16cboot - Build kernel boot image with small embedded boot for e16c simulator'
|
|
echo ' e2c3boot - Build kernel boot image with small embedded boot for e2c3 simulator'
|
|
echo ' [with_kernel=1] - When building boot, build in compressed kernel into the boot image'
|
|
endef
|