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

Context protection when calling a secure function(NSC) in a non-secure interrupt function

I want to know where the context was saved when a secure function was called in a non-secure interrupt function.

As shown in the figure, when a secure NSC function is called in a non-secure SVC interrupt service function,

the PUSH {R4-R6, LR} operation is executed. At this time, CONTROL_S==0x03, that is, the Thread/PSP state.

But the PSP_S=0X00000000, I want to know where the {R4-R6, LR}  registers are pushed into?  

By the way: the result of the program is normal.

Thank you!

Parents
  • Hi Yang,

    If I understand correctly based on your description, it appears like the NSC_function1() executed from non-secure state has successfully entered secure state (i.e.) it contains SG instruction at the entry point and the branch address at the target is marked as Secure.

    So effectively, I am assuming that the  PUSH {R4-R6,LR} is getting executed in non-secure state (i.e.) before entering secure state via function call, in which case CONTROL_NS/Non-secure stack pointers shall come into picture.

    Thanks,

    Uma

Reply
  • Hi Yang,

    If I understand correctly based on your description, it appears like the NSC_function1() executed from non-secure state has successfully entered secure state (i.e.) it contains SG instruction at the entry point and the branch address at the target is marked as Secure.

    So effectively, I am assuming that the  PUSH {R4-R6,LR} is getting executed in non-secure state (i.e.) before entering secure state via function call, in which case CONTROL_NS/Non-secure stack pointers shall come into picture.

    Thanks,

    Uma

Children
No data