On Wed, Nov 13, 2013 at 04:45:00PM +0100, Vladimir 'φ-coder/phcoder' Serbinenko 
wrote:
> >>>   misc.S: Assembler messages:
> >>>   misc.S:56: Error: r13 not allowed here -- `sub sp,fp,#4'
> >>>   make[3]: *** [kern/arm/kernel_exec-misc.o] Error 1
> >>>
> >>> I don't think SP can be used that way in Thumb mode?
> >>>
> >> I think that our asm routines should be in full ARM. Attached patch
> >> follows this strategy. One remaining problem is to make sure that thumb
> >> flags in TARGET_CFLAGS and TARGET_CCASFLAGS match.
> > 
> > There should be no need for this - the only thing is to ensure the
> > -mthumb-interwork is set in CCASFLAGS_PLATFORM as well as
> > CFLAGS_PLATFORM, and even that is just to prevent linker warnings..
> > 
> > There is no special ARM_PROLOGUE needed, and (on armv5te onwards)
> > pop {..., pc} is an interworking branch.
> > 
> > If we want to force a file to build as ARM (which I'm not sure is
> > necessary now that we have split up armv6 separate from later
> > architectures), all that is required is a .arm directive up top.
> > 
> Hm. I'm confused. According to
> http://stuff.mit.edu/afs/sipb/project/egcs/src/egcs/gcc/config/arm/README-interworking:
> "Note that specifying -mthumb-interwork does result in slightly larger,
> slower code being produced.  This is why interworking support must be
> specifically enabled by a switch."

That is fairly outdated documentation (1998).
Yes, it was true before armv5te.

Since then, pop {pc} has been valid, so different code sequences are no
longer required for state changes than for normal subroutine calls.

/
    Leif

_______________________________________________
Grub-devel mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/grub-devel

Reply via email to