1# 2# alpha/Makefile 3# 4# This file is subject to the terms and conditions of the GNU General Public 5# License. See the file "COPYING" in the main directory of this archive 6# for more details. 7# 8# Copyright (C) 1994 by Linus Torvalds 9# 10 11NM := $(NM) -B 12 13LDFLAGS_vmlinux := -static -N #-relax 14CHECKFLAGS += -D__alpha__ -m64 15cflags-y := -pipe -mno-fp-regs -ffixed-8 16 17# Determine if we can use the BWX instructions with GAS. 18old_gas := $(shell if $(AS) --version 2>&1 | grep 'version 2.7' > /dev/null; then echo y; else echo n; fi) 19 20ifeq ($(old_gas),y) 21$(error The assembler '$(AS)' does not support the BWX instruction) 22endif 23 24# Determine if GCC understands the -mcpu= option. 25have_mcpu := $(call cc-option-yn, -mcpu=ev5) 26have_mcpu_pca56 := $(call cc-option-yn, -mcpu=pca56) 27have_mcpu_ev6 := $(call cc-option-yn, -mcpu=ev6) 28have_mcpu_ev67 := $(call cc-option-yn, -mcpu=ev67) 29have_msmall_data := $(call cc-option-yn, -msmall-data) 30 31cflags-$(have_msmall_data) += -msmall-data 32 33# Turn on the proper cpu optimizations. 34ifeq ($(have_mcpu),y) 35 mcpu_done := n 36 # If GENERIC, make sure to turn off any instruction set extensions that 37 # the host compiler might have on by default. Given that EV4 and EV5 38 # have the same instruction set, prefer EV5 because an EV5 schedule is 39 # more likely to keep an EV4 processor busy than vice-versa. 40 ifeq ($(CONFIG_ALPHA_GENERIC),y) 41 mcpu := ev5 42 mcpu_done := y 43 endif 44 ifeq ($(mcpu_done)$(CONFIG_ALPHA_SX164)$(have_mcpu_pca56),nyy) 45 mcpu := pca56 46 mcpu_done := y 47 endif 48 ifeq ($(mcpu_done)$(CONFIG_ALPHA_POLARIS)$(have_mcpu_pca56),nyy) 49 mcpu := pca56 50 mcpu_done := y 51 endif 52 ifeq ($(mcpu_done)$(CONFIG_ALPHA_EV4),ny) 53 mcpu := ev4 54 mcpu_done := y 55 endif 56 ifeq ($(mcpu_done)$(CONFIG_ALPHA_EV56),ny) 57 mcpu := ev56 58 mcpu_done := y 59 endif 60 ifeq ($(mcpu_done)$(CONFIG_ALPHA_EV5),ny) 61 mcpu := ev5 62 mcpu_done := y 63 endif 64 ifeq ($(mcpu_done)$(CONFIG_ALPHA_EV67)$(have_mcpu_ev67),nyy) 65 mcpu := ev67 66 mcpu_done := y 67 endif 68 ifeq ($(mcpu_done)$(CONFIG_ALPHA_EV6),ny) 69 ifeq ($(have_mcpu_ev6),y) 70 mcpu := ev6 71 else 72 ifeq ($(have_mcpu_pca56),y) 73 mcpu := pca56 74 else 75 mcpu=ev56 76 endif 77 endif 78 mcpu_done := y 79 endif 80 cflags-$(mcpu_done) += -mcpu=$(mcpu) 81endif 82 83 84# For TSUNAMI, we must have the assembler not emulate our instructions. 85# The same is true for IRONGATE, POLARIS, PYXIS. 86# BWX is most important, but we don't really want any emulation ever. 87CFLAGS += $(cflags-y) -Wa,-mev6 88 89head-y := arch/alpha/kernel/head.o 90 91core-y += arch/alpha/kernel/ arch/alpha/mm/ 92core-$(CONFIG_MATHEMU) += arch/alpha/math-emu/ 93drivers-$(CONFIG_OPROFILE) += arch/alpha/oprofile/ 94libs-y += arch/alpha/lib/ 95 96# export what is needed by arch/alpha/boot/Makefile 97LIBS_Y := $(patsubst %/, %/lib.a, $(libs-y)) 98export LIBS_Y 99 100boot := arch/alpha/boot 101 102#Default target when executing make with no arguments 103all boot: $(boot)/vmlinux.gz 104 105$(boot)/vmlinux.gz: vmlinux 106 $(Q)$(MAKE) $(build)=$(boot) $@ 107 108bootimage bootpfile bootpzfile: vmlinux 109 $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@ 110 111 112prepare: include/asm-$(ARCH)/asm_offsets.h 113 114arch/$(ARCH)/kernel/asm-offsets.s: include/asm include/linux/version.h \ 115 include/config/MARKER 116 117include/asm-$(ARCH)/asm_offsets.h: arch/$(ARCH)/kernel/asm-offsets.s 118 $(call filechk,gen-asm-offsets) 119 120archclean: 121 $(Q)$(MAKE) $(clean)=$(boot) 122 123CLEAN_FILES += include/asm-$(ARCH)/asm_offsets.h 124 125define archhelp 126 echo '* boot - Compressed kernel image (arch/alpha/boot/vmlinux.gz)' 127 echo ' bootimage - SRM bootable image (arch/alpha/boot/bootimage)' 128 echo ' bootpfile - BOOTP bootable image (arch/alpha/boot/bootpfile)' 129 echo ' bootpzfile - compressed kernel BOOTP image (arch/alpha/boot/bootpzfile)' 130endef 131