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 Uma

    Thanks for the detailed answer.

    I found the place where the "R4-R6,LR" registers  pushed into, these registers are pushed into the where the MSP_S points.

    I think this is because this NSC_function is called in the SVC interrupt function, so the CPU is still in Handler mode instead of Thread mode and should use the MSP_S stack pointer.

    Here I want you to help me confirm a problem:

    When the NSC function is called in a non-secure SVC interrupt function, and the CPU switches from a non-secure state to secure state. Is the CPU still in Handler mode?

    If the CPU is still in Handler mode, then the usage of the MSP_S can be understood after the state swich. The only thing that is puzzling is why the IDE indicates that the SP value is 0X00000000 instead ot the value of the MSP_S. I think there may be an error in the IDE display.

    Thank you very much.

    Best Regards

    Yang

Reply
  • Hi Uma

    Thanks for the detailed answer.

    I found the place where the "R4-R6,LR" registers  pushed into, these registers are pushed into the where the MSP_S points.

    I think this is because this NSC_function is called in the SVC interrupt function, so the CPU is still in Handler mode instead of Thread mode and should use the MSP_S stack pointer.

    Here I want you to help me confirm a problem:

    When the NSC function is called in a non-secure SVC interrupt function, and the CPU switches from a non-secure state to secure state. Is the CPU still in Handler mode?

    If the CPU is still in Handler mode, then the usage of the MSP_S can be understood after the state swich. The only thing that is puzzling is why the IDE indicates that the SP value is 0X00000000 instead ot the value of the MSP_S. I think there may be an error in the IDE display.

    Thank you very much.

    Best Regards

    Yang

Children