aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/alpha/Makefile83
1 files changed, 16 insertions, 67 deletions
diff --git a/arch/alpha/Makefile b/arch/alpha/Makefile
index 1b704ee54bf3..d1004b4d942f 100644
--- a/arch/alpha/Makefile
+++ b/arch/alpha/Makefile
@@ -12,73 +12,22 @@ NM := $(NM) -B
12 12
13LDFLAGS_vmlinux := -static -N #-relax 13LDFLAGS_vmlinux := -static -N #-relax
14CHECKFLAGS += -D__alpha__ -m64 14CHECKFLAGS += -D__alpha__ -m64
15cflags-y := -pipe -mno-fp-regs -ffixed-8 15cflags-y := -pipe -mno-fp-regs -ffixed-8 -msmall-data
16 16
17# Determine if we can use the BWX instructions with GAS. 17cpuflags-$(CONFIG_ALPHA_EV67) := -mcpu=ev67
18old_gas := $(shell if $(AS) --version 2>&1 | grep 'version 2.7' > /dev/null; then echo y; else echo n; fi) 18cpuflags-$(CONFIG_ALPHA_EV6) := -mcpu=ev6
19 19cpuflags-$(CONFIG_ALPHA_POLARIS) := -mcpu=pca56
20ifeq ($(old_gas),y) 20cpuflags-$(CONFIG_ALPHA_SX164) := -mcpu=pca56
21$(error The assembler '$(AS)' does not support the BWX instruction) 21cpuflags-$(CONFIG_ALPHA_EV56) := -mcpu=ev56
22endif 22cpuflags-$(CONFIG_ALPHA_EV5) := -mcpu=ev5
23 23cpuflags-$(CONFIG_ALPHA_EV4) := -mcpu=ev4
24# Determine if GCC understands the -mcpu= option. 24# If GENERIC, make sure to turn off any instruction set extensions that
25have_mcpu := $(call cc-option-yn, -mcpu=ev5) 25# the host compiler might have on by default. Given that EV4 and EV5
26have_mcpu_pca56 := $(call cc-option-yn, -mcpu=pca56) 26# have the same instruction set, prefer EV5 because an EV5 schedule is
27have_mcpu_ev6 := $(call cc-option-yn, -mcpu=ev6) 27# more likely to keep an EV4 processor busy than vice-versa.
28have_mcpu_ev67 := $(call cc-option-yn, -mcpu=ev67) 28cpuflags-$(CONFIG_ALPHA_GENERIC) := -mcpu=ev5
29have_msmall_data := $(call cc-option-yn, -msmall-data) 29
30 30cflags-y += $(cpuflags-y)
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 31
83 32
84# For TSUNAMI, we must have the assembler not emulate our instructions. 33# For TSUNAMI, we must have the assembler not emulate our instructions.