rtl problem when processing arm thumb mode switch

Peng Fan van.freenix at gmail.com
Fri May 10 01:48:18 UTC 2013


Thanks.
I think if the rap file is compiled in thumb, this size of the rap file
will be reduced.
So i want to introduce it. If this is not needed, it would be easy to just
handle arm to arm and thumb to thumb call.


2013/5/10 Chris Johns <chrisj at rtems.org>

> Peng Fan wrote:
>
>>
>> I am trying to make the mode switch work on rtl for arm.
>>
>>
> What does "mode switch" mean ?
>
>  The following code is disassembled using arm linux gcc.
>>
>> elf object file:  compiled in thumb mode.
>> 38:f7ff bffe b.w0 <rtems>
>> 38: R_ARM_THM_JUMP24rtems
>> It invokes a function "rtems" which are in arm mode.
>>
>> elf executable file:
>> 8414:f000 b85c b.w84d0 <__rtems_from_thumb>
>>
>>
>> 000084d0 <__rtems_from_thumb>: //stub code
>>      84d0:4778 bxpc
>>      84d2:46c0 nop; (mov r8, r8)
>>      84d4:eaffffc0 b83dc <rtems>
>>
>>
>> the arm linux gcc uses a stub code to handle the thumb to arm invoking.
>>
>
> Why would we want this ? I would assume RTL loaded code must be the same
> as the base kernel code.
>
>
>  I also want to introduce this for arm rtl.But I do not have a good idea
>> about how to manage the stub code. Each rap file may contain many such
>> reloc entry, each such reloc entry needs a stub code.
>> How to manage the stub codes?
>>
>
> RTEMS does not have the requirement to support multiple code "modes" at
> runtime and Linux does. For embedded systems it is sensible to enforce one
> code type.
>
> Chris
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20130510/3ee5ece1/attachment-0001.html>


More information about the devel mailing list