* 'bx lr' vs 'mov pc,lr'
@ 2009-09-13 21:55 Felipe Contreras
2009-09-13 22:15 ` Daniel Silverstone
2009-09-13 22:58 ` Russell King - ARM Linux
0 siblings, 2 replies; 11+ messages in thread
From: Felipe Contreras @ 2009-09-13 21:55 UTC (permalink / raw)
To: linux-arm-kernel
Hi,
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.
--
Felipe Contreras
^ permalink raw reply [flat|nested] 11+ messages in thread
* 'bx lr' vs 'mov pc,lr'
2009-09-13 21:55 'bx lr' vs 'mov pc,lr' Felipe Contreras
@ 2009-09-13 22:15 ` Daniel Silverstone
2009-09-13 22:56 ` Felipe Contreras
2009-09-13 22:58 ` Russell King - ARM Linux
1 sibling, 1 reply; 11+ messages in thread
From: Daniel Silverstone @ 2009-09-13 22:15 UTC (permalink / raw)
To: linux-arm-kernel
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.
D.
--
Daniel Silverstone http://www.simtec.co.uk/
^ permalink raw reply [flat|nested] 11+ messages in thread
* 'bx lr' vs 'mov pc,lr'
2009-09-13 22:15 ` Daniel Silverstone
@ 2009-09-13 22:56 ` Felipe Contreras
2009-09-13 23:01 ` Russell King - ARM Linux
0 siblings, 1 reply; 11+ messages in thread
From: Felipe Contreras @ 2009-09-13 22:56 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Sep 14, 2009 at 1:15 AM, Daniel Silverstone
<dsilvers@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?
--
Felipe Contreras
^ permalink raw reply [flat|nested] 11+ messages in thread
* 'bx lr' vs 'mov pc,lr'
2009-09-13 21:55 'bx lr' vs 'mov pc,lr' Felipe Contreras
2009-09-13 22:15 ` Daniel Silverstone
@ 2009-09-13 22:58 ` Russell King - ARM Linux
2009-09-14 0:11 ` Felipe Contreras
1 sibling, 1 reply; 11+ messages in thread
From: Russell King - ARM Linux @ 2009-09-13 22:58 UTC (permalink / raw)
To: linux-arm-kernel
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.
Why do you want bx? bx isn't available on older CPUs.
^ permalink raw reply [flat|nested] 11+ messages in thread
* 'bx lr' vs 'mov pc,lr'
2009-09-13 22:56 ` Felipe Contreras
@ 2009-09-13 23:01 ` Russell King - ARM Linux
2009-09-14 0:11 ` Felipe Contreras
0 siblings, 1 reply; 11+ messages in thread
From: Russell King - ARM Linux @ 2009-09-13 23:01 UTC (permalink / raw)
To: linux-arm-kernel
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@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.
^ permalink raw reply [flat|nested] 11+ messages in thread
* 'bx lr' vs 'mov pc,lr'
2009-09-13 22:58 ` Russell King - ARM Linux
@ 2009-09-14 0:11 ` Felipe Contreras
2009-09-14 0:20 ` Jamie Lokier
0 siblings, 1 reply; 11+ messages in thread
From: Felipe Contreras @ 2009-09-14 0:11 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Sep 14, 2009 at 1:58 AM, Russell King - ARM Linux
<linux@arm.linux.org.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.
>
> Why do you want bx? ?bx isn't available on older CPUs.
Isn't it faster? I don't know if it would make sense to try it on newer CPUs.
--
Felipe Contreras
^ permalink raw reply [flat|nested] 11+ messages in thread
* 'bx lr' vs 'mov pc,lr'
2009-09-13 23:01 ` Russell King - ARM Linux
@ 2009-09-14 0:11 ` Felipe Contreras
0 siblings, 0 replies; 11+ messages in thread
From: Felipe Contreras @ 2009-09-14 0:11 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Sep 14, 2009 at 2:01 AM, Russell King - ARM Linux
<linux@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@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.
Ok. Thanks.
--
Felipe Contreras
^ permalink raw reply [flat|nested] 11+ messages in thread
* 'bx lr' vs 'mov pc,lr'
2009-09-14 0:11 ` Felipe Contreras
@ 2009-09-14 0:20 ` Jamie Lokier
2009-09-14 1:47 ` Felipe Contreras
0 siblings, 1 reply; 11+ messages in thread
From: Jamie Lokier @ 2009-09-14 0:20 UTC (permalink / raw)
To: linux-arm-kernel
Felipe Contreras wrote:
> > Why do you want bx? ?bx isn't available on older CPUs.
>
> Isn't it faster? I don't know if it would make sense to try it on
> newer CPUs.
That's interesting. Do you know if it's faster?
-- Jamie
^ permalink raw reply [flat|nested] 11+ messages in thread
* 'bx lr' vs 'mov pc,lr'
2009-09-14 0:20 ` Jamie Lokier
@ 2009-09-14 1:47 ` Felipe Contreras
2009-09-14 7:35 ` Uwe Kleine-König
0 siblings, 1 reply; 11+ messages in thread
From: Felipe Contreras @ 2009-09-14 1:47 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Sep 14, 2009 at 3:20 AM, Jamie Lokier <jamie@shareable.org> wrote:
> Felipe Contreras wrote:
>> > Why do you want bx? ?bx isn't available on older CPUs.
>>
>> Isn't it faster? I don't know if it would make sense to try it on
>> newer CPUs.
>
> That's interesting. ?Do you know if it's faster?
Nope, I'm assuming because of this:
http://newsgroups.derkeiler.com/Archive/Comp/comp.sys.arm/2006-04/msg00031.html
--
Felipe Contreras
^ permalink raw reply [flat|nested] 11+ messages in thread
* 'bx lr' vs 'mov pc,lr'
2009-09-14 1:47 ` Felipe Contreras
@ 2009-09-14 7:35 ` Uwe Kleine-König
2009-09-14 12:59 ` Felipe Contreras
0 siblings, 1 reply; 11+ messages in thread
From: Uwe Kleine-König @ 2009-09-14 7:35 UTC (permalink / raw)
To: linux-arm-kernel
On Mon, Sep 14, 2009 at 04:47:35AM +0300, Felipe Contreras wrote:
> On Mon, Sep 14, 2009 at 3:20 AM, Jamie Lokier <jamie@shareable.org> wrote:
> > Felipe Contreras wrote:
> >> > Why do you want bx? ?bx isn't available on older CPUs.
> >>
> >> Isn't it faster? I don't know if it would make sense to try it on
> >> newer CPUs.
> >
> > That's interesting. ?Do you know if it's faster?
>
> Nope, I'm assuming because of this:
> http://newsgroups.derkeiler.com/Archive/Comp/comp.sys.arm/2006-04/msg00031.html
For ARM9EJ-S the docs can be found at
http://infocenter.arm.com/help/topic/com.arm.doc.ddi0222b/I1028171.html
. bx takes 3 cycles, mov (with dest=pc) takes 4 cycles.
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-K?nig |
Industrial Linux Solutions | http://www.pengutronix.de/ |
^ permalink raw reply [flat|nested] 11+ messages in thread
* 'bx lr' vs 'mov pc,lr'
2009-09-14 7:35 ` Uwe Kleine-König
@ 2009-09-14 12:59 ` Felipe Contreras
0 siblings, 0 replies; 11+ messages in thread
From: Felipe Contreras @ 2009-09-14 12:59 UTC (permalink / raw)
To: linux-arm-kernel
2009/9/14 Uwe Kleine-K?nig <u.kleine-koenig@pengutronix.de>:
> On Mon, Sep 14, 2009 at 04:47:35AM +0300, Felipe Contreras wrote:
>> On Mon, Sep 14, 2009 at 3:20 AM, Jamie Lokier <jamie@shareable.org> wrote:
>> > Felipe Contreras wrote:
>> >> > Why do you want bx? ?bx isn't available on older CPUs.
>> >>
>> >> Isn't it faster? I don't know if it would make sense to try it on
>> >> newer CPUs.
>> >
>> > That's interesting. ?Do you know if it's faster?
>>
>> Nope, I'm assuming because of this:
>> http://newsgroups.derkeiler.com/Archive/Comp/comp.sys.arm/2006-04/msg00031.html
>
> For ARM9EJ-S the docs can be found at
>
> ? ? ? ?http://infocenter.arm.com/help/topic/com.arm.doc.ddi0222b/I1028171.html
>
> . ?bx takes 3 cycles, mov (with dest=pc) takes 4 cycles.
Couldn't we have a 'return' macro that uses the relevant one?
--
Felipe Contreras
^ permalink raw reply [flat|nested] 11+ messages in thread
end of thread, other threads:[~2009-09-14 12:59 UTC | newest]
Thread overview: 11+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-09-13 21:55 'bx lr' vs 'mov pc,lr' Felipe Contreras
2009-09-13 22:15 ` Daniel Silverstone
2009-09-13 22:56 ` Felipe Contreras
2009-09-13 23:01 ` Russell King - ARM Linux
2009-09-14 0:11 ` Felipe Contreras
2009-09-13 22:58 ` Russell King - ARM Linux
2009-09-14 0:11 ` Felipe Contreras
2009-09-14 0:20 ` Jamie Lokier
2009-09-14 1:47 ` Felipe Contreras
2009-09-14 7:35 ` Uwe Kleine-König
2009-09-14 12:59 ` Felipe Contreras
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).