1 # SPDX-License-Identifier: GPL-2.0 << 2 # 1 # 3 # Author: Huacai Chen <chenhuacai@loongson.cn> !! 2 # sparc/Makefile 4 # Copyright (C) 2020-2022 Loongson Technology !! 3 # 5 !! 4 # Makefile for the architecture dependent flags and dependencies on the 6 boot := arch/loongarch/boot !! 5 # Sparc and sparc64. 7 !! 6 # 8 KBUILD_DEFCONFIG := loongson3_defconfig !! 7 # Copyright (C) 1994,1996,1998 David S. Miller (davem@caip.rutgers.edu) 9 KBUILD_DTBS := dtbs !! 8 # Copyright (C) 1998 Jakub Jelinek (jj@ultra.linux.cz) 10 << 11 image-name-y := vmlinux << 12 image-name-$(CONFIG_EFI_ZBOOT) := vmlinuz << 13 9 14 ifndef CONFIG_EFI_STUB !! 10 # We are not yet configured - so test on arch 15 KBUILD_IMAGE := $(boot)/vmlinux.elf !! 11 ifeq ($(ARCH),sparc) >> 12 KBUILD_DEFCONFIG := sparc32_defconfig 16 else 13 else 17 KBUILD_IMAGE := $(boot)/$(image-name-y).efi !! 14 KBUILD_DEFCONFIG := sparc64_defconfig 18 endif 15 endif 19 16 >> 17 ifeq ($(CONFIG_SPARC32),y) >> 18 ##### >> 19 # sparc32 20 # 20 # 21 # Select the object file format to substitute << 22 # << 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 21 44 ifdef CONFIG_DYNAMIC_FTRACE !! 22 # 45 KBUILD_CPPFLAGS += -DCC_USING_PATCHABLE_FUNCTI !! 23 # Uncomment the first KBUILD_CFLAGS if you are doing kgdb source level 46 CC_FLAGS_FTRACE := -fpatchable-function-entry= !! 24 # debugging of the kernel to get the proper debugging information. 47 endif << 48 25 49 ifdef CONFIG_64BIT !! 26 AS := $(AS) -32 50 tool-archpref = $(64bit-tool-archpre !! 27 LDFLAGS := -m elf32_sparc 51 UTS_MACHINE := loongarch64 !! 28 CHECKFLAGS += -D__sparc__ 52 endif !! 29 export BITS := 32 >> 30 UTS_MACHINE := sparc 53 31 54 ifneq ($(SUBARCH),$(ARCH)) !! 32 #KBUILD_CFLAGS += -g -pipe -fcall-used-g5 -fcall-used-g7 55 ifeq ($(CROSS_COMPILE),) !! 33 KBUILD_CFLAGS += -m32 -pipe -mno-fpu -fcall-used-g5 -fcall-used-g7 56 CROSS_COMPILE := $(call cc-cross-prefix, $ !! 34 KBUILD_AFLAGS += -m32 -Wa,-Av8 57 endif << 58 endif << 59 35 60 ifdef CONFIG_64BIT !! 36 #LDFLAGS_vmlinux = -N -Ttext 0xf0004000 61 ld-emul = $(64bit-emul) !! 37 # Since 2.5.40, the first stage is left not btfix-ed. 62 cflags-y += -mabi=lp64s !! 38 # Actual linking is done with "make image". 63 endif !! 39 LDFLAGS_vmlinux = -r 64 << 65 cflags-y += -pipe $(CC_ << 66 LDFLAGS_vmlinux += -static -n << 67 40 68 # When the assembler supports explicit relocat << 69 # GCC may have -mexplicit-relocs off by defaul << 70 # assembler, so we force it via an option. << 71 # << 72 # When the assembler does not supports explici << 73 # it. Disable it if the compiler supports it. << 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 41 else 91 cflags-y += $(call cc-o !! 42 ##### 92 KBUILD_AFLAGS_KERNEL += -Wa,-mla-gl !! 43 # sparc64 93 KBUILD_CFLAGS_KERNEL += -Wa,-mla-gl !! 44 # 94 KBUILD_AFLAGS_MODULE += -Wa,-mla-gl << 95 KBUILD_CFLAGS_MODULE += -fplt -Wa,- << 96 endif << 97 << 98 KBUILD_AFLAGS += $(call cc-o << 99 KBUILD_CFLAGS += $(call cc-o << 100 KBUILD_AFLAGS += $(call cc-o << 101 KBUILD_CFLAGS += $(call cc-o << 102 45 103 ifdef CONFIG_OBJTOOL !! 46 CHECKFLAGS += -D__sparc__ -D__sparc_v9__ -D__arch64__ -m64 104 KBUILD_CFLAGS += -fno-jump-t << 105 endif << 106 47 107 KBUILD_RUSTFLAGS += --target=lo !! 48 LDFLAGS := -m elf64_sparc 108 KBUILD_RUSTFLAGS_KERNEL += -Zdirect-ac !! 49 export BITS := 64 109 KBUILD_RUSTFLAGS_MODULE += -Zdirect-ac !! 50 UTS_MACHINE := sparc64 110 << 111 ifeq ($(CONFIG_RELOCATABLE),y) << 112 KBUILD_CFLAGS_KERNEL += -fPIE << 113 KBUILD_RUSTFLAGS_KERNEL += -Crelocatio << 114 LDFLAGS_vmlinux += -static -pi << 115 endif << 116 51 117 cflags-y += $(call cc-option, -mno-check-zero- !! 52 KBUILD_CFLAGS += -m64 -pipe -mno-fpu -mcpu=ultrasparc -mcmodel=medlow \ >> 53 -ffixed-g4 -ffixed-g5 -fcall-used-g7 -Wno-sign-compare \ >> 54 -Wa,--undeclared-regs >> 55 KBUILD_CFLAGS += $(call cc-option,-mtune=ultrasparc3) >> 56 KBUILD_AFLAGS += -m64 -mcpu=ultrasparc -Wa,--undeclared-regs 118 57 119 ifndef CONFIG_KASAN !! 58 ifeq ($(CONFIG_MCOUNT),y) 120 cflags-y += -fno-builtin-memcpy -fno-builtin-m !! 59 KBUILD_CFLAGS += -pg 121 endif 60 endif 122 61 123 load-y = 0x9000000000200000 << 124 bootvars-y = VMLINUX_LOAD_ADDRESS=$(load- << 125 << 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 << 142 # Optimise for performance on hardware support << 143 KBUILD_CFLAGS += $(call cc-option,-mno-strict- << 144 endif 62 endif 145 63 146 KBUILD_CFLAGS += -isystem $(shell $(CC) -print !! 64 head-y := arch/sparc/kernel/head_$(BITS).o >> 65 head-y += arch/sparc/kernel/init_task.o 147 66 148 KBUILD_LDFLAGS += -m $(ld-emul) !! 67 core-y += arch/sparc/kernel/ >> 68 core-y += arch/sparc/mm/ arch/sparc/math-emu/ 149 69 150 ifdef need-compiler !! 70 libs-y += arch/sparc/prom/ 151 CHECKFLAGS += $(shell $(CC) $(KBUILD_CPPFLAGS) !! 71 libs-y += arch/sparc/lib/ 152 grep -E -vw '__GNUC_(MINOR_|PATCHLEVEL << 153 sed -e "s/^\#define /-D'/" -e "s/ /'=' << 154 endif << 155 << 156 libs-y += arch/loongarch/lib/ << 157 libs-$(CONFIG_EFI_STUB) += $(objtree)/drivers/ << 158 72 159 drivers-y += arch/loongarch/cryp !! 73 drivers-$(CONFIG_OPROFILE) += arch/sparc/oprofile/ 160 74 161 # suspend and hibernation support !! 75 # Export what is needed by arch/sparc/boot/Makefile 162 drivers-$(CONFIG_PM) += arch/loongarch/powe !! 76 export VMLINUX_INIT VMLINUX_MAIN >> 77 VMLINUX_INIT := $(head-y) $(init-y) >> 78 VMLINUX_MAIN := $(core-y) kernel/ mm/ fs/ ipc/ security/ crypto/ block/ >> 79 VMLINUX_MAIN += $(patsubst %/, %/lib.a, $(libs-y)) $(libs-y) >> 80 VMLINUX_MAIN += $(drivers-y) $(net-y) 163 81 164 ifeq ($(KBUILD_EXTMOD),) !! 82 ifdef CONFIG_KALLSYMS 165 prepare: vdso_prepare !! 83 export kallsyms.o := .tmp_kallsyms2.o 166 vdso_prepare: prepare0 << 167 $(Q)$(MAKE) $(build)=arch/loongarch/vd << 168 endif 84 endif 169 85 170 vdso-install-y += arch/loongarch/vdso/vdso.so. !! 86 boot := arch/sparc/boot 171 87 172 all: $(notdir $(KBUILD_IMAGE)) $(KBUILD_DTB !! 88 # Default target >> 89 all: zImage 173 90 174 vmlinuz.efi: vmlinux.efi !! 91 image zImage tftpboot.img vmlinux.aout: vmlinux >> 92 $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ 175 93 176 vmlinux.elf vmlinux.efi vmlinuz.efi: vmlinux !! 94 archclean: 177 $(Q)$(MAKE) $(build)=$(boot) $(bootvar !! 95 $(Q)$(MAKE) $(clean)=$(boot) 178 96 179 install: !! 97 # This is the image used for packaging 180 $(Q)install -D -m 755 $(KBUILD_IMAGE) !! 98 KBUILD_IMAGE := $(boot)/zImage 181 $(Q)install -D -m 644 .config $(INSTAL << 182 $(Q)install -D -m 644 System.map $(INS << 183 99 >> 100 # Don't use tabs in echo arguments. >> 101 ifeq ($(ARCH),sparc) >> 102 define archhelp >> 103 echo '* image - kernel image ($(boot)/image)' >> 104 echo '* zImage - stripped kernel image ($(boot)/zImage)' >> 105 echo ' tftpboot.img - image prepared for tftp' >> 106 endef >> 107 else 184 define archhelp 108 define archhelp 185 echo ' install - install !! 109 echo '* vmlinux - standard sparc64 kernel' 186 echo !! 110 echo '* zImage - stripped and compressed sparc64 kernel ($(boot)/zImage)' >> 111 echo ' vmlinux.aout - a.out kernel for sparc64' >> 112 echo ' tftpboot.img - image prepared for tftp' 187 endef 113 endef >> 114 endif
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.