Commit | Line | Data |
---|---|---|
fa96b57c HC |
1 | # SPDX-License-Identifier: GPL-2.0 |
2 | # | |
3 | # Author: Huacai Chen <chenhuacai@loongson.cn> | |
4 | # Copyright (C) 2020-2022 Loongson Technology Corporation Limited | |
5 | ||
6 | boot := arch/loongarch/boot | |
7 | ||
9e8536e2 HC |
8 | KBUILD_DEFCONFIG := loongson3_defconfig |
9 | ||
fa96b57c HC |
10 | KBUILD_IMAGE = $(boot)/vmlinux |
11 | ||
12 | # | |
13 | # Select the object file format to substitute into the linker script. | |
14 | # | |
15 | 64bit-tool-archpref = loongarch64 | |
16 | 32bit-bfd = elf32-loongarch | |
17 | 64bit-bfd = elf64-loongarch | |
18 | 32bit-emul = elf32loongarch | |
19 | 64bit-emul = elf64loongarch | |
20 | ||
21 | ifdef CONFIG_64BIT | |
22 | tool-archpref = $(64bit-tool-archpref) | |
23 | UTS_MACHINE := loongarch64 | |
24 | endif | |
25 | ||
26 | ifneq ($(SUBARCH),$(ARCH)) | |
27 | ifeq ($(CROSS_COMPILE),) | |
28 | CROSS_COMPILE := $(call cc-cross-prefix, $(tool-archpref)-linux- $(tool-archpref)-linux-gnu- $(tool-archpref)-unknown-linux-gnu-) | |
29 | endif | |
30 | endif | |
31 | ||
32 | ifdef CONFIG_64BIT | |
33 | ld-emul = $(64bit-emul) | |
34 | cflags-y += -mabi=lp64s | |
35 | endif | |
36 | ||
37 | cflags-y += -G0 -pipe -msoft-float | |
38 | LDFLAGS_vmlinux += -G0 -static -n -nostdlib | |
39 | KBUILD_AFLAGS_KERNEL += -Wa,-mla-global-with-pcrel | |
40 | KBUILD_CFLAGS_KERNEL += -Wa,-mla-global-with-pcrel | |
41 | KBUILD_AFLAGS_MODULE += -Wa,-mla-global-with-abs | |
42 | KBUILD_CFLAGS_MODULE += -fplt -Wa,-mla-global-with-abs,-mla-local-with-abs | |
43 | ||
44 | cflags-y += -ffreestanding | |
45 | cflags-y += $(call cc-option, -mno-check-zero-division) | |
46 | ||
47 | load-y = 0x9000000000200000 | |
48 | bootvars-y = VMLINUX_LOAD_ADDRESS=$(load-y) | |
49 | ||
50 | KBUILD_AFLAGS += $(cflags-y) | |
51 | KBUILD_CFLAGS += $(cflags-y) | |
52 | KBUILD_CPPFLAGS += -DVMLINUX_LOAD_ADDRESS=$(load-y) | |
53 | ||
54 | # This is required to get dwarf unwinding tables into .debug_frame | |
55 | # instead of .eh_frame so we don't discard them. | |
56 | KBUILD_CFLAGS += -fno-asynchronous-unwind-tables | |
57 | ||
58 | # Don't emit unaligned accesses. | |
59 | # Not all LoongArch cores support unaligned access, and as kernel we can't | |
60 | # rely on others to provide emulation for these accesses. | |
61 | KBUILD_CFLAGS += $(call cc-option,-mstrict-align) | |
62 | ||
63 | KBUILD_CFLAGS += -isystem $(shell $(CC) -print-file-name=include) | |
64 | ||
65 | KBUILD_LDFLAGS += -m $(ld-emul) | |
66 | ||
67 | ifdef CONFIG_LOONGARCH | |
68 | CHECKFLAGS += $(shell $(CC) $(KBUILD_CFLAGS) -dM -E -x c /dev/null | \ | |
69 | egrep -vw '__GNUC_(MINOR_|PATCHLEVEL_)?_' | \ | |
70 | sed -e "s/^\#define /-D'/" -e "s/ /'='/" -e "s/$$/'/" -e 's/\$$/&&/g') | |
71 | endif | |
72 | ||
73 | head-y := arch/loongarch/kernel/head.o | |
74 | ||
75 | libs-y += arch/loongarch/lib/ | |
76 | ||
77 | ifeq ($(KBUILD_EXTMOD),) | |
78 | prepare: vdso_prepare | |
79 | vdso_prepare: prepare0 | |
80 | $(Q)$(MAKE) $(build)=arch/loongarch/vdso include/generated/vdso-offsets.h | |
81 | endif | |
82 | ||
83 | PHONY += vdso_install | |
84 | vdso_install: | |
85 | $(Q)$(MAKE) $(build)=arch/loongarch/vdso $@ | |
86 | ||
87 | all: $(KBUILD_IMAGE) | |
88 | ||
89 | $(KBUILD_IMAGE): vmlinux | |
90 | $(Q)$(MAKE) $(build)=$(boot) $(bootvars-y) $@ | |
91 | ||
92 | install: | |
93 | $(Q)install -D -m 755 $(KBUILD_IMAGE) $(INSTALL_PATH)/vmlinux-$(KERNELRELEASE) | |
94 | $(Q)install -D -m 644 .config $(INSTALL_PATH)/config-$(KERNELRELEASE) | |
95 | $(Q)install -D -m 644 System.map $(INSTALL_PATH)/System.map-$(KERNELRELEASE) | |
96 | ||
97 | define archhelp | |
98 | echo ' install - install kernel into $(INSTALL_PATH)' | |
99 | echo | |
100 | endef |