sh: Re-add support for best fit ISA tuning if none is available.
This was removed in the libgcc integration, but there are still some compilers that need this. We also relax the rules on the ISA tuning in the cases where there are no matches for the CPU tuning and adopt the -any default, which matches the intent of the isa-y target list. This compensates for mismatches where binutils supports a wide array of targets whilst the compiler is much more restricted. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
parent
624c6a6750
commit
5dd614761f
1 changed files with 20 additions and 5 deletions
|
@ -35,11 +35,21 @@ cflags-$(CONFIG_CPU_SH4A) += $(call cc-option,-m4a,) \
|
|||
cflags-$(CONFIG_CPU_SH4AL_DSP) += $(call cc-option,-m4al,)
|
||||
cflags-$(CONFIG_CPU_SH5) := $(call cc-option,-m5-32media-nofpu,)
|
||||
|
||||
cflags-$(CONFIG_CPU_BIG_ENDIAN) += -mb
|
||||
cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -ml
|
||||
|
||||
cflags-y += $(call cc-option,-mno-fdpic)
|
||||
|
||||
ifeq ($(cflags-y),)
|
||||
#
|
||||
# In the case where we are stuck with a compiler that has been uselessly
|
||||
# restricted to a particular ISA, a favourite default of newer GCCs when
|
||||
# extensive multilib targets are not provided, ensure we get the best fit
|
||||
# regarding FP generation. This is intentionally stupid (albeit many
|
||||
# orders of magnitude less than GCC's default behaviour), as anything
|
||||
# with a large number of multilib targets better have been built
|
||||
# correctly for the target in mind.
|
||||
#
|
||||
cflags-y += $(shell $(CC) $(KBUILD_CFLAGS) -print-multi-lib | \
|
||||
grep nofpu | sed q | sed -e 's/^/-/;s/;.*$$//')
|
||||
# At this point, anything goes.
|
||||
isaflags-y := $(call as-option,-Wa$(comma)-isa=any,)
|
||||
else
|
||||
#
|
||||
# -Wa,-isa= tuning implies -Wa,-dsp for the versions of binutils that
|
||||
# support it, while -Wa,-dsp by itself limits the range of usable opcodes
|
||||
|
@ -52,7 +62,12 @@ isaflags-y := $(call as-option,-Wa$(comma)-isa=$(isa-y),)
|
|||
|
||||
isaflags-$(CONFIG_SH_DSP) := \
|
||||
$(call as-option,-Wa$(comma)-isa=$(isa-y),-Wa$(comma)-dsp)
|
||||
endif
|
||||
|
||||
cflags-$(CONFIG_CPU_BIG_ENDIAN) += -mb
|
||||
cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -ml
|
||||
|
||||
cflags-y += $(call cc-option,-mno-fdpic)
|
||||
cflags-y += $(isaflags-y) -ffreestanding
|
||||
|
||||
cflags-$(CONFIG_MORE_COMPILE_OPTIONS) += \
|
||||
|
|
Loading…
Reference in a new issue