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

Security State transitions - Processor Mode

Edit: CONTROL.nPRIV is actually banked so I modified my question

Hi,

I have a question regarding S/NS state transitions and PE modes.

From what I read in the ARMv8-M ARM there is no restriction in terms of PE mode for state transitions.

The PE mode is preserved during the State transition (IPSR is not banked, and not modified by transition mechanims) but the privileged flag is (CONTROL.nPRIV is banked), right?

Is the following correct:

  • I am for example running in NS unprivileged Thread Mode, say I am calling an NSC veneer and thus switching to Secure State. I would then execute the target function in S state in Thread Mode but I can't be sure of the privilege level, it would be the last privilege level used in S (because CONTROL.nPRIV is banked). The only predictable case is when I transition from Handler Mode which is always privileged.
  • When running in S state, if I BLXNS into an NS function the current PE Mode is preserved but the privilege level can't be predicted (as in previous bullet).

?

Am I correct? If so is it not an issue?

Thanks

Parents
  • Hi Pierre,
    The information you wrote are correct.
    Please note that Secure and Non-secure software are typically developed by separated parties (except when Secure software developers create their code, they normally create their own Non-secure code for testing).

    For each side, the privileged software should (and have to) decide how their privileged and unprivileged partitioning works. It is very flexible, but I agree that it could also be confusing.
    regards,
    joseph
Reply
  • Hi Pierre,
    The information you wrote are correct.
    Please note that Secure and Non-secure software are typically developed by separated parties (except when Secure software developers create their code, they normally create their own Non-secure code for testing).

    For each side, the privileged software should (and have to) decide how their privileged and unprivileged partitioning works. It is very flexible, but I agree that it could also be confusing.
    regards,
    joseph
Children