ARM (Thumb Mode) _CPU_Context_switch_arm
Sebastian Huber
sebastian.huber at embedded-brains.de
Mon Feb 25 08:04:06 UTC 2013
On 02/22/2013 06:31 PM, Matthew J Fletcher wrote:
> 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.
This Start structure is irrelevant for the context switch.
>
> 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.
Are the values (sp and lr) of heir context correct on entry of the first
_CPU_Context_switch()?
>
> 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 ?
The context switch code is unchanged since 2002 and it works well. I suppose
something is wrong with the call to _CPU_Context_switch() or the heir context.
I can only help you with the latest RTEMS master branch since this is what I
am using.
--
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
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
More information about the users
mailing list