[PATCH] Don't use FLDMX and FSTMX on ARMv6+
Mark Shinwell
shinwell@codesourcery.com
Wed Jun 21 20:07:00 GMT 2006
Mark Shinwell wrote:
> The FLDMX and FSTMX load/store-multiple insns are deprecated in favour of
> FLDMD and FSTMD respectively on ARMv6 and above. This patch causes
> gcc to use the latter instructions instead of FLDMX and FSTMX when
> emitting code for such architectures.
>
> FLDMD and FSTMD correspond to a different set of unwind opcodes from
> FLDMX and FSTMX. I have already had approved and committed a binutils
> patch [1] that provides a new ".vsave" directive instructing the
> assembler to emit unwind opcodes to correspond to an FSTMD instruction.
> As a consequence, an ARM compiler with the attached patch requires also
> that binutils patch in the toolchain for successful emission of code
> that involves the generation of unwind information for VFP registers.
> The unwind opcodes for the `D' instructions also provide for VFPv3
> registers, which this patch also supports.
>
> Given this, I wonder if a configure check should be added to test for
> the presence of the updated assembler -- and if that fails, then gcc
> should emit FLDMX and FSTMX as before.
>
> This patch also fixes a number of off-by-one errors in pr-support.c,
> as noted below. I've combined this with the other additions since I
> have made other modifications around the same places.
>
> Regression tested with an arm-none-linux-gnueabi target, with the
> exception of course of the VFPv3 support in this patch. The patch has
> also been manually tested to check that stack unwinding is working
> correctly.
>
> OK for mainline, once open?
Sorry, I seem to have posted a slightly out-of-date version of this.
I'll post another one tomorrow.
Mark
More information about the Gcc-patches
mailing list