This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

ARM/THUMB long calls stubs


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]