How to enter USR mode from SVC mode?

Note: This was originally posted on 1st August 2011 at http://forums.arm.com

I changed CPSR to 0x1D0(which means USR mode )in SVC mode in cortex-a8 platform(freescale imx51), but a perfetch_error occured, the PC hung at 0x0c.  Could anybody help me figure this issue out, please?
OR anybody has some code some hwo to enter USR mode from SVC mode?

Best Regards
Jerry
  • Note: This was originally posted on 2nd August 2011 at http://forums.arm.com


    Hi Jerry,

    Here is how I do for Cortex-R4F :

            mrs r1, cpsr
            orr r1, r1, #0x0010
            bic r1, r1, #0x000F
            msr cpsr_c, r1

    Hope it helps

    Best regards

    Christophe


    Thank, Chris
    I tried the code on Cortex-a8(freescale i.mx51), it does not work. Once "msr cpsr_c, r1" , a undefined instruction exception occured.

    BR
    Jerry
  • Note: This was originally posted on 1st August 2011 at http://forums.arm.com

    Hi Jerry,

    Here is how I do for Cortex-R4F :

         mrs r1, cpsr
         orr r1, r1, #0x0010
         bic r1, r1, #0x000F
         msr cpsr_c, r1

    Hope it helps

    Best regards

    Christophe
  • Note: This was originally posted on 2nd August 2011 at http://forums.arm.com

    Hi Jerry,

    Hum, it is strange, because Cortex-A8 and R4 seem to share the same architecture !? What is your compiler ? (for me, it works with both RVCT 4.0 and CCS v4)

    did you also try
    msr cpsr, r1
    ?

    cpsr_c is a sub mask for writing only specific bits... maybe not available for cortex-A8

    Regards

    Christophe
More questions in this forum