ARM (Thumb Mode) _CPU_Context_switch_arm

Joel Sherrill joel.sherrill at OARcorp.com
Mon Feb 25 17:40:41 UTC 2013


On 2/25/2013 11:25 AM, Matthew J Fletcher wrote:
> Sebastain,
>
> I changed the code so now with the cpsr set as expected before main() 
> the context switch occurs fine and we end up in Init().
>
Is this a generic issue that needs addressing in the RTEMS
git repo? Or something you broke accidentally when making
other changes?
> Thanks for all your help.
>
A little early for a beer here but it is definitely after 5 for
Sebastian. Good job Sebastian!

--joel
>
> On 25 February 2013 17:10, Matthew J Fletcher <amimjf at gmail.com 
> <mailto:amimjf at gmail.com>> wrote:
>
>     Hi,
>
>     The cpsr thats saved out to r2 is 0x800000df, but is restored back
>     to 0x13. Thanks for pointing out that no cpsr change must happen,
>     i will check how the rtl22xx_t bsp sets up the cpsr.
>
>
>
>     On 25 February 2013 16:52, Sebastian Huber
>     <sebastian.huber at embedded-brains.de
>     <mailto:sebastian.huber at embedded-brains.de>> wrote:
>
>         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>
>             <mailto: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 <tel:%2B49%2089%20189%2047%2041-16>
>         Fax     : +49 89 189 47 41-09 <tel:%2B49%2089%20189%2047%2041-09>
>         E-Mail  : sebastian.huber at embedded-brains.de
>         <mailto: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
>
>
>
>
> -- 
>
> regards
> ---
> Matthew J Fletcher
>


-- 
Joel Sherrill, Ph.D.             Director of Research & Development
joel.sherrill at OARcorp.com        On-Line Applications Research
Ask me about RTEMS: a free RTOS  Huntsville AL 35805
Support Available                (256) 722-9985

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20130225/3cf754ba/attachment-0001.html>


More information about the users mailing list