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!
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