'bx lr' vs 'mov pc,lr'
felipe.contreras at gmail.com
Sun Sep 13 20:11:23 EDT 2009
On Mon, Sep 14, 2009 at 2:01 AM, Russell King - ARM Linux
<linux at arm.linux.org.uk> wrote:
> On Mon, Sep 14, 2009 at 01:56:16AM +0300, Felipe Contreras wrote:
>> On Mon, Sep 14, 2009 at 1:15 AM, Daniel Silverstone
>> <dsilvers at simtec.co.uk> wrote:
>> > On Mon, Sep 14, 2009 at 12:55:24AM +0300, Felipe Contreras wrote:
>> >> I noticed that in 'arch/arm/lib/delay.S' we are using 'mov pc, lr'
>> >> instead of 'bx lr'. Why? It looks like 'mov pc, lr' is used all over
>> >> the place, but I can't find out what's the reason.
>> > I'd guess at the reason being that not all ARM processors whose ports use
>> > arch/arm/lib/delay.S support the bx instruction, whereas the 'mov pc, lr'
>> > instruction is universally supported.
>> Are there really processors that don't support 'bx'? Can you give some examples?
> Any ARMv3 CPU and any ARMv4 which doesn't support Thumb. Eg, StrongARM.
More information about the linux-arm-kernel