1 # SPDX-License-Identifier: GPL-2.0 !! 1 # $Id: Makefile,v 1.52 2002/02/09 19:49:31 davem Exp $ >> 2 # sparc64/Makefile 2 # 3 # 3 # Author: Huacai Chen <chenhuacai@loongson.cn> !! 4 # Makefile for the architecture dependent flags and dependencies on the 4 # Copyright (C) 2020-2022 Loongson Technology !! 5 # 64-bit Sparc. 5 << 6 boot := arch/loongarch/boot << 7 << 8 KBUILD_DEFCONFIG := loongson3_defconfig << 9 KBUILD_DTBS := dtbs << 10 << 11 image-name-y := vmlinux << 12 image-name-$(CONFIG_EFI_ZBOOT) := vmlinuz << 13 << 14 ifndef CONFIG_EFI_STUB << 15 KBUILD_IMAGE := $(boot)/vmlinux.elf << 16 else << 17 KBUILD_IMAGE := $(boot)/$(image-name-y).efi << 18 endif << 19 << 20 # 6 # 21 # Select the object file format to substitute !! 7 # Copyright (C) 1996,1998 David S. Miller (davem@caip.rutgers.edu) >> 8 # Copyright (C) 1998 Jakub Jelinek (jj@ultra.linux.cz) 22 # 9 # 23 64bit-tool-archpref = loongarch64 << 24 32bit-bfd = elf32-loongarch << 25 64bit-bfd = elf64-loongarch << 26 32bit-emul = elf32loongarch << 27 64bit-emul = elf64loongarch << 28 << 29 CC_FLAGS_FPU := -mfpu=64 << 30 CC_FLAGS_NO_FPU := -msoft-float << 31 << 32 ifdef CONFIG_UNWINDER_ORC << 33 orc_hash_h := arch/$(SRCARCH)/include/generate << 34 orc_hash_sh := $(srctree)/scripts/orc_hash.sh << 35 targets += $(orc_hash_h) << 36 quiet_cmd_orc_hash = GEN $@ << 37 cmd_orc_hash = mkdir -p $(dir $@); \ << 38 $(CONFIG_SHELL) $(orc_has << 39 $(orc_hash_h): $(srctree)/arch/loongarch/inclu << 40 $(call if_changed,orc_hash) << 41 archprepare: $(orc_hash_h) << 42 endif << 43 10 44 ifdef CONFIG_DYNAMIC_FTRACE !! 11 AFLAGS_vmlinux.lds.o += -Usparc 45 KBUILD_CPPFLAGS += -DCC_USING_PATCHABLE_FUNCTI << 46 CC_FLAGS_FTRACE := -fpatchable-function-entry= << 47 endif << 48 << 49 ifdef CONFIG_64BIT << 50 tool-archpref = $(64bit-tool-archpre << 51 UTS_MACHINE := loongarch64 << 52 endif << 53 12 54 ifneq ($(SUBARCH),$(ARCH)) !! 13 CC := $(shell if gcc -m64 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo gcc; else echo sparc64-linux-gcc; fi ) 55 ifeq ($(CROSS_COMPILE),) << 56 CROSS_COMPILE := $(call cc-cross-prefix, $ << 57 endif << 58 endif << 59 14 60 ifdef CONFIG_64BIT !! 15 NEW_GCC := $(shell if $(CC) -m64 -mcmodel=medlow -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo y; else echo n; fi; ) 61 ld-emul = $(64bit-emul) !! 16 NEW_GAS := $(shell if $(LD) -V 2>&1 | grep 'elf64_sparc' > /dev/null; then echo y; else echo n; fi) 62 cflags-y += -mabi=lp64s !! 17 UNDECLARED_REGS := $(shell if $(CC) -c -x assembler /dev/null -Wa,--help | grep undeclared-regs > /dev/null; then echo y; else echo n; fi; ) 63 endif !! 18 INLINE_LIMIT := $(shell if $(CC) -m64 -finline-limit=100000 -S -o /dev/null -xc /dev/null >/dev/null 2>&1; then echo y; else echo n; fi; ) 64 19 65 cflags-y += -pipe $(CC_ !! 20 export NEW_GCC 66 LDFLAGS_vmlinux += -static -n << 67 21 68 # When the assembler supports explicit relocat !! 22 ifneq ($(NEW_GAS),y) 69 # GCC may have -mexplicit-relocs off by defaul !! 23 AS = sparc64-linux-as 70 # assembler, so we force it via an option. !! 24 LD = sparc64-linux-ld 71 # !! 25 NM = sparc64-linux-nm 72 # When the assembler does not supports explici !! 26 AR = sparc64-linux-ar 73 # it. Disable it if the compiler supports it. !! 27 RANLIB = sparc64-linux-ranlib 74 # << 75 # The combination of a "new" assembler and "ol << 76 # the rarity of this combo and the extra compl << 77 # Either upgrade the compiler or downgrade the << 78 # out if it is the case (by probing for the mo << 79 # compilers in this case would have support). << 80 # << 81 # Also, -mdirect-extern-access is useful in ca << 82 # relocs, for avoiding unnecessary GOT accesse << 83 # support though. << 84 ifdef CONFIG_AS_HAS_EXPLICIT_RELOCS << 85 cflags-y += $(call cc-o << 86 KBUILD_CFLAGS_KERNEL += $(call cc-o << 87 KBUILD_CFLAGS_KERNEL += $(call cc-o << 88 KBUILD_AFLAGS_MODULE += $(call cc-o << 89 KBUILD_CFLAGS_MODULE += $(call cc-o << 90 else 28 else 91 cflags-y += $(call cc-o !! 29 AS := $(AS) -64 92 KBUILD_AFLAGS_KERNEL += -Wa,-mla-gl !! 30 LDFLAGS := -m elf64_sparc 93 KBUILD_CFLAGS_KERNEL += -Wa,-mla-gl << 94 KBUILD_AFLAGS_MODULE += -Wa,-mla-gl << 95 KBUILD_CFLAGS_MODULE += -fplt -Wa,- << 96 endif 31 endif 97 32 98 KBUILD_AFLAGS += $(call cc-o !! 33 ifneq ($(UNDECLARED_REGS),y) 99 KBUILD_CFLAGS += $(call cc-o !! 34 CC_UNDECL = 100 KBUILD_AFLAGS += $(call cc-o !! 35 else 101 KBUILD_CFLAGS += $(call cc-o !! 36 CC_UNDECL = -Wa,--undeclared-regs 102 !! 37 AS := $(AS) --undeclared-regs 103 ifdef CONFIG_OBJTOOL << 104 KBUILD_CFLAGS += -fno-jump-t << 105 endif << 106 << 107 KBUILD_RUSTFLAGS += --target=lo << 108 KBUILD_RUSTFLAGS_KERNEL += -Zdirect-ac << 109 KBUILD_RUSTFLAGS_MODULE += -Zdirect-ac << 110 << 111 ifeq ($(CONFIG_RELOCATABLE),y) << 112 KBUILD_CFLAGS_KERNEL += -fPIE << 113 KBUILD_RUSTFLAGS_KERNEL += -Crelocatio << 114 LDFLAGS_vmlinux += -static -pi << 115 endif << 116 << 117 cflags-y += $(call cc-option, -mno-check-zero- << 118 << 119 ifndef CONFIG_KASAN << 120 cflags-y += -fno-builtin-memcpy -fno-builtin-m << 121 endif 38 endif 122 39 123 load-y = 0x9000000000200000 !! 40 ifneq ($(NEW_GCC),y) 124 bootvars-y = VMLINUX_LOAD_ADDRESS=$(load- !! 41 CFLAGS := $(CFLAGS) -pipe -mno-fpu -mtune=ultrasparc -mmedlow \ 125 !! 42 -ffixed-g4 -fcall-used-g5 -fcall-used-g7 -Wno-sign-compare 126 drivers-$(CONFIG_PCI) += arch/loonga << 127 << 128 KBUILD_AFLAGS += $(cflags-y) << 129 KBUILD_CFLAGS += $(cflags-y) << 130 KBUILD_CPPFLAGS += -DVMLINUX_LOAD_ADDRESS=$(lo << 131 << 132 # This is required to get dwarf unwinding tabl << 133 # instead of .eh_frame so we don't discard the << 134 KBUILD_CFLAGS += -fno-asynchronous-unwind-tabl << 135 << 136 ifdef CONFIG_ARCH_STRICT_ALIGN << 137 # Don't emit unaligned accesses. << 138 # Not all LoongArch cores support unaligned ac << 139 # rely on others to provide emulation for thes << 140 KBUILD_CFLAGS += $(call cc-option,-mstrict-ali << 141 else 43 else 142 # Optimise for performance on hardware support !! 44 CFLAGS := $(CFLAGS) -m64 -pipe -mno-fpu -mcpu=ultrasparc -mcmodel=medlow \ 143 KBUILD_CFLAGS += $(call cc-option,-mno-strict- !! 45 -ffixed-g4 -fcall-used-g5 -fcall-used-g7 -Wno-sign-compare \ >> 46 $(CC_UNDECL) >> 47 AFLAGS += -m64 -mcpu=ultrasparc $(CC_UNDECL) 144 endif 48 endif 145 49 146 KBUILD_CFLAGS += -isystem $(shell $(CC) -print !! 50 ifeq ($(INLINE_LIMIT),y) 147 !! 51 CFLAGS := $(CFLAGS) -finline-limit=100000 148 KBUILD_LDFLAGS += -m $(ld-emul) << 149 << 150 ifdef need-compiler << 151 CHECKFLAGS += $(shell $(CC) $(KBUILD_CPPFLAGS) << 152 grep -E -vw '__GNUC_(MINOR_|PATCHLEVEL << 153 sed -e "s/^\#define /-D'/" -e "s/ /'=' << 154 endif 52 endif 155 53 156 libs-y += arch/loongarch/lib/ !! 54 ifeq ($(CONFIG_MCOUNT),y) 157 libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/ !! 55 CFLAGS := $(subst -fomit-frame-pointer,,$(CFLAGS)) 158 !! 56 CFLAGS := $(CFLAGS) -pg 159 drivers-y += arch/loongarch/cryp << 160 << 161 # suspend and hibernation support << 162 drivers-$(CONFIG_PM) += arch/loongarch/powe << 163 << 164 ifeq ($(KBUILD_EXTMOD),) << 165 prepare: vdso_prepare << 166 vdso_prepare: prepare0 << 167 $(Q)$(MAKE) $(build)=arch/loongarch/vd << 168 endif 57 endif 169 58 170 vdso-install-y += arch/loongarch/vdso/vdso.so. !! 59 head-y := arch/sparc64/kernel/head.o arch/sparc64/kernel/init_task.o 171 60 172 all: $(notdir $(KBUILD_IMAGE)) $(KBUILD_DTB !! 61 core-y += arch/sparc64/kernel/ arch/sparc64/mm/ >> 62 core-$(CONFIG_SOLARIS_EMUL) += arch/sparc64/solaris/ >> 63 core-y += arch/sparc64/math-emu/ >> 64 libs-y += arch/sparc64/prom/ arch/sparc64/lib/ 173 65 174 vmlinuz.efi: vmlinux.efi !! 66 # FIXME: is drivers- right? >> 67 drivers-$(CONFIG_OPROFILE) += arch/sparc64/oprofile/ 175 68 176 vmlinux.elf vmlinux.efi vmlinuz.efi: vmlinux !! 69 boot := arch/sparc64/boot 177 $(Q)$(MAKE) $(build)=$(boot) $(bootvar << 178 70 179 install: !! 71 image tftpboot.img vmlinux.aout: vmlinux 180 $(Q)install -D -m 755 $(KBUILD_IMAGE) !! 72 $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ 181 $(Q)install -D -m 644 .config $(INSTAL !! 73 182 $(Q)install -D -m 644 System.map $(INS !! 74 archclean: >> 75 $(Q)$(MAKE) $(clean)=$(boot) 183 76 184 define archhelp 77 define archhelp 185 echo ' install - install !! 78 echo '* vmlinux - Standard sparc64 kernel' 186 echo !! 79 echo ' vmlinux.aout - a.out kernel for sparc64' >> 80 echo ' tftpboot.img - Image prepared for tftp' 187 endef 81 endef >> 82
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.