I didn't encounter this error with what will be gcc-4.9.3. Manuel On Fri, Oct 31, 2014 at 5:13 PM, Markos Chandras <Markos.Chandras@xxxxxxxxxx> wrote: > On 10/31/2014 04:03 PM, Manuel Lauss wrote: >> Starting with version 2.24.51.20140728 MIPS binutils complain loudly >> about mixing soft-float and hard-float object files, leading to this >> build failure since GCC is invoked with "-msoft-float" on MIPS: >> >> {standard input}: Warning: .gnu_attribute 4,3 requires `softfloat' >> LD arch/mips/alchemy/common/built-in.o >> mipsel-softfloat-linux-gnu-ld: Warning: arch/mips/alchemy/common/built-in.o >> uses -msoft-float (set by arch/mips/alchemy/common/prom.o), >> arch/mips/alchemy/common/sleeper.o uses -mhard-float >> >> To fix this, we detect if GAS is new enough to support "-msoft-float" command >> option, and if it does, we can let GCC pass it to GAS; but then we also need >> to sprinkle the files which make use of floating point registers with the >> necessary ".set hardfloat" directives. >> >> Signed-off-by: Manuel Lauss <manuel.lauss@xxxxxxxxx> >> --- >> Compiles with binutils 2.23 and current git head, tested with alchemy (mips32r1) >> and maltasmvp_defconfig (64bit) >> >> Tests with MSA and other extensions also appreciated! >> >> v6: #undef fp so that the preprocessor does not replace the fp in >> .set fp=64 with $30... Fixes 64bit build. > > Technically speaking, a maltasmvp_defconfig selects CONFIG_32BIT=y so > it's still a 32-bit build. >> [...] > > Ok the fp problem went away but I still have the even/odd errors with my > tools > > arch/mips/kernel/r4k_switch.S: Assembler messages: > arch/mips/kernel/r4k_switch.S:81: Error: float register should be even, > was 1 > arch/mips/kernel/r4k_switch.S:81: Error: float register should be even, > was 3 > arch/mips/kernel/r4k_switch.S:81: Error: float register should be even, > was 5 > arch/mips/kernel/r4k_switch.S:81: Error: float register should be even, > was 7 > arch/mips/kernel/r4k_switch.S:81: Error: float register should be even, > was 9 > arch/mips/kernel/r4k_switch.S:81: Error: float register should be even, > was 11 > arch/mips/kernel/r4k_switch.S:81: Error: float register should be even, > was 13 > arch/mips/kernel/r4k_switch.S:81: Error: float register should be even, > was 15 > arch/mips/kernel/r4k_switch.S:81: Error: float register should be even, > was 17 > arch/mips/kernel/r4k_switch.S:81: Error: float register should be even, > was 19 > > The following patch did not help either: > > diff --git a/arch/mips/Makefile b/arch/mips/Makefile > index 58076472bdd8..b8bb7e170fee 100644 > --- a/arch/mips/Makefile > +++ b/arch/mips/Makefile > @@ -56,7 +56,7 @@ ifdef CONFIG_FUNCTION_GRAPH_TRACER > endif > endif > cflags-y += $(call cc-option, -mno-check-zero-division) > - > +cflags-y += -mno-odd-spreg > > This is with a regular maltasmvp_defconfig > > I guess my gcc version is newer than yours. Matthew? > > -- > markos