Please note: We are aware of an issue affecting replies on the Arm Community forums, which may not be loading as expected.

We apologize for any inconvenience and appreciate your patience while we investigate and work to resolve the issue.

Thank you for your understanding.


This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How to change CM33 State from secure to non-secure

Dear All,

Please help me to change the cpu state from secure to non-secure hust after starting in reset handler itself.

Is there any way to change its state to the non-secure region.

Parents
  • From the docs:

    C2.4.25 BLX, BLXNS
    Branch with Link and Exchange (Non-secure). Branch with Link and Exchange calls a subroutine at an address,
    with the address and instruction set specified by a register. Bit[0] complies with the Arm architecture interworking
    rules for switching between the A32 and T32 instruction sets. However, Armv8-M only supports the T32 instruction
    set, so bit[0] must be 1. If bit[0] is 0 the PE takes an INVSTATE UsageFault exception on the instruction at the
    target address.
    Branch with Link and Exchange Non-secure calls a subroutine at an address specified by a register, and if bit[0] of
    the target address is 0 then the instruction causes a transition from Secure to Non-secure state. This variant of the
    instruction must only be used when the additional steps required to make such a transition safe have been taken.

Reply
  • From the docs:

    C2.4.25 BLX, BLXNS
    Branch with Link and Exchange (Non-secure). Branch with Link and Exchange calls a subroutine at an address,
    with the address and instruction set specified by a register. Bit[0] complies with the Arm architecture interworking
    rules for switching between the A32 and T32 instruction sets. However, Armv8-M only supports the T32 instruction
    set, so bit[0] must be 1. If bit[0] is 0 the PE takes an INVSTATE UsageFault exception on the instruction at the
    target address.
    Branch with Link and Exchange Non-secure calls a subroutine at an address specified by a register, and if bit[0] of
    the target address is 0 then the instruction causes a transition from Secure to Non-secure state. This variant of the
    instruction must only be used when the additional steps required to make such a transition safe have been taken.

Children
No data