ARM/THUMB long calls stubs
Sami Kantoluoto
sami.kantoluoto@embedtronics.fi
Thu Jul 29 13:58:00 GMT 2004
Hi,
Found following post from the archive (as I'm having the same problem):
---8<---------8<----
Hi Richard,
> The whole point of the _call_via instructions is to get the current PC in
> r14 without losing the Thumb bit. This can only be do with a BL
> instruction, so we must call something. If it weren't for the fact that
> mov lr, pc lost the thumb bit we could just write
>
> mov lr, pc
> bx Rn
Doh! I forgot about that. So my recent suggested patch is not going
to work because the return address will be incorrect. Darn.
Cheers
Nick
---8<---------8<----
Would it be hard to do patch (against gcc 3.4.1) to try following (thumb
mode):
bl 1f
b 2f
1: bx Rn
2:
And maybe following in ARM mode:
bl 1f
1: add lr,lr,#8 /* is this ok? */
bx Rn
Not very optimal but could work (?).
-sk
More information about the Gcc-bugs
mailing list