MIPS: Loongson-3: Improve -march option and move it to Platform
If GCC >= 4.9 and Binutils >=2.25, we use -march=loongson3a, otherwise we use -march=mips64r2, this can slightly improve performance. Besides, arch/mips/loongson64/Platform is a better location rather than arch/ mips/Makefile. Signed-off-by: Huacai Chen <chenhc@lemote.com> Cc: Aurelien Jarno <aurelien@aurel32.net> Cc: Steven J. Hill <Steven.Hill@imgtec.com> Cc: Fuxin Zhang <zhangfx@lemote.com> Cc: Zhangjin Wu <wuzhangjin@gmail.com> Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/12161/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
6e52684467
commit
5188129b8c
|
@ -166,16 +166,6 @@ cflags-$(CONFIG_CPU_CAVIUM_OCTEON) += -Wa,-march=octeon
|
||||||
endif
|
endif
|
||||||
cflags-$(CONFIG_CAVIUM_CN63XXP1) += -Wa,-mfix-cn63xxp1
|
cflags-$(CONFIG_CAVIUM_CN63XXP1) += -Wa,-mfix-cn63xxp1
|
||||||
cflags-$(CONFIG_CPU_BMIPS) += -march=mips32 -Wa,-mips32 -Wa,--trap
|
cflags-$(CONFIG_CPU_BMIPS) += -march=mips32 -Wa,-mips32 -Wa,--trap
|
||||||
#
|
|
||||||
# binutils from v2.25 on and gcc starting from v4.9.0 treat -march=loongson3a
|
|
||||||
# as MIPS64 R1; older versions as just R1. This leaves the possibility open
|
|
||||||
# that GCC might generate R2 code for -march=loongson3a which then is rejected
|
|
||||||
# by GAS. The cc-option can't probe for this behaviour so -march=loongson3a
|
|
||||||
# can't easily be used safely within the kbuild framework.
|
|
||||||
#
|
|
||||||
cflags-$(CONFIG_CPU_LOONGSON3) += \
|
|
||||||
$(call cc-option,-march=mips64r2,-mips64r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64) \
|
|
||||||
-Wa,-mips64r2 -Wa,--trap
|
|
||||||
|
|
||||||
cflags-$(CONFIG_CPU_R4000_WORKAROUNDS) += $(call cc-option,-mfix-r4000,)
|
cflags-$(CONFIG_CPU_R4000_WORKAROUNDS) += $(call cc-option,-mfix-r4000,)
|
||||||
cflags-$(CONFIG_CPU_R4400_WORKAROUNDS) += $(call cc-option,-mfix-r4400,)
|
cflags-$(CONFIG_CPU_R4400_WORKAROUNDS) += $(call cc-option,-mfix-r4400,)
|
||||||
|
|
|
@ -22,6 +22,27 @@ ifdef CONFIG_CPU_LOONGSON2F_WORKAROUNDS
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
cflags-$(CONFIG_CPU_LOONGSON3) += -Wa,--trap
|
||||||
|
#
|
||||||
|
# binutils from v2.25 on and gcc starting from v4.9.0 treat -march=loongson3a
|
||||||
|
# as MIPS64 R2; older versions as just R1. This leaves the possibility open
|
||||||
|
# that GCC might generate R2 code for -march=loongson3a which then is rejected
|
||||||
|
# by GAS. The cc-option can't probe for this behaviour so -march=loongson3a
|
||||||
|
# can't easily be used safely within the kbuild framework.
|
||||||
|
#
|
||||||
|
ifeq ($(call cc-ifversion, -ge, 0409, y), y)
|
||||||
|
ifeq ($(call ld-ifversion, -ge, 22500000, y), y)
|
||||||
|
cflags-$(CONFIG_CPU_LOONGSON3) += \
|
||||||
|
$(call cc-option,-march=loongson3a -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64)
|
||||||
|
else
|
||||||
|
cflags-$(CONFIG_CPU_LOONGSON3) += \
|
||||||
|
$(call cc-option,-march=mips64r2,-mips64r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64)
|
||||||
|
endif
|
||||||
|
else
|
||||||
|
cflags-$(CONFIG_CPU_LOONGSON3) += \
|
||||||
|
$(call cc-option,-march=mips64r2,-mips64r2 -U_MIPS_ISA -D_MIPS_ISA=_MIPS_ISA_MIPS64)
|
||||||
|
endif
|
||||||
|
|
||||||
#
|
#
|
||||||
# Loongson Machines' Support
|
# Loongson Machines' Support
|
||||||
#
|
#
|
||||||
|
|
Loading…
Reference in New Issue