ARM (Thumb Mode) _CPU_Context_switch_arm

Matthew J Fletcher amimjf at gmail.com
Fri Feb 22 17:31:36 UTC 2013


Hi,

>Which code is at address 0x7fffe369 - 1?  The context will be initialized
in the function >_Thread_Load_environment().

I believe that's the issue, there is no code at that address, code starts
at 0x81000000

In _Thread_Start(), i can see that the_thread->Start.entry_point is set to
0x81007219, which is the Init() function.

I can also see _Thread_Load_environment() set the stack and the entry point
correctly, the _Thread_Heir->Registers contains the correct information
into passed into _Context_Switch.

But by the 'bx lr' line in _restore the sp and lr registers are showing the
wrong values, well gdb says they are wrong anyway, the sp is now 0x40001c80
which is not even ram, and the lr is before code space.

Doing a single instruction step sets the pc to 0x7fffe368, so it looks like
its branched to that address, the next instruction will fault as its just
some rubbish.

Is it possible this code is wrong for the arm7tdmi ? its not exactly
cutting edge now, there are commends in the context switch code that it was
tested on a arm7tdmi but with different instructions, was this code
diffrent in the past ?


On 22 February 2013 10:05, Sebastian Huber <
sebastian.huber at embedded-brains.de> wrote:

> On 02/22/2013 10:39 AM, Matthew J Fletcher wrote:
>
>> Sebastian,
>>
>> I am using 4.10.2 and the standard rtl22xx_t compiler options of
>> -mcpu=arm7tdmi
>> -mthumb -mstructure-size-boundary=8 -mfpu=vfp -mfloat-abi=soft
>> -mapcs-frame
>> -fno-schedule-insns2
>>
>> The registers at before the 'bx lr' instruction in _restore() in
>> cpu.asm.s are;
>>
>> r0 = 0x81485f54
>> r1 = 0x814879a4
>> r2 = 0x13
>> r3 = 0x81485ee4
>> sp = 0x40001c80
>> lr = 0x7fffe369
>> pc = 0x81189178
>>
>> gdb says 'p _Thread_Handler'
>> $2 = {void (void)} 0x811999f4 <_Thread_Handler>
>>
>
> Which code is at address 0x7fffe369 - 1?  The context will be initialized
> in the function _Thread_Load_environment().
>
>
> --
> Sebastian Huber, embedded brains GmbH
>
> Address : Dornierstr. 4, D-82178 Puchheim, Germany
> Phone   : +49 89 189 47 41-16
> Fax     : +49 89 189 47 41-09
> E-Mail  : sebastian.huber at embedded-**brains.de<sebastian.huber at embedded-brains.de>
> PGP     : Public key available on request.
>
> Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
>



-- 

regards
---
Matthew J Fletcher
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20130222/3b023ad0/attachment-0001.html>


More information about the users mailing list