ARM (Thumb Mode) _CPU_Context_switch_arm
Sebastian Huber
sebastian.huber at embedded-brains.de
Mon Feb 25 16:52:45 UTC 2013
On 02/25/2013 05:47 PM, Matthew J Fletcher wrote:
> Hi,
>
> r2 is 0x13 before the msr, so I guess new_level must have been 0.
>
> On 25 Feb 2013 15:02, "Sebastian Huber" <sebastian.huber at embedded-brains.de
> <mailto:sebastian.huber at embedded-brains.de>> wrote:
>
> On 02/25/2013 03:15 PM, Matthew J Fletcher wrote:
>
> Sebastian,
>
> The _Thread_Heir->Registers are ok into the _Context_Switch() call, sp
> and lr
> both sensible.
>
> At the 'mrs r2, cpsr' line sp is 0x40001b2c (rubbish) and pc sensible.
>
> In _restore, after the 'ldmia r1, ...' instruction the sp and lr are loaded
> with the correct values from _Thread_Heir->Registers.
>
> Its the 'msr cpsr, r2' messes up the sp and lr
>
>
> Ok, if you load undefined values into the CPSR, then a lot of things may
> happen. What is the value of r2 before the msr? It should be 0x13.
Ok, then maybe the mode in the BSP execution context is wrong. During
_Context_Switch() no mode change must happen. What is the CPSR before the msr?
--
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