SVC_Handler PROC ;EXPORT SVC_Handler [WEAK] IMPORT SVC_Handler_main MOV R0,SP B SVC_Handler_main ENDP
svc_number = ((char *)svc_args[6])[-2];
;--------- SVC HANDLER --------------SVC_Handler PROC ; EXPORT SVC_Handler [WEAK] IMPORT SVC_Handler_main MOVS R0, #4 MOV R1, LR TST R0, R1 BEQ stacking_used_MSP MRS R0, PSP ; first parameter - stacking was using PSP LDR R1, =SVC_Handler_main BX R1stacking_used_MSP MRS R0, MSP ; first parameter - stacking was using MSP LDR R1, =SVC_Handler_main BX R1 ENDP;--------- END SVC HANDLER --------------
__cpp
// SVC handler - Assembly wrapper to extract // stack frame starting address__asm void SVC_Handler(void){ MOVS r0, #4 MOV r1, LR TST r0, r1 BEQ stacking_used_MSP MRS R0, PSP ; first parameter - stacking was using PSP LDR R1,=__cpp(SVC_Handler_main) BX R1stacking_used_MSP MRS R0, MSP ; first parameter - stacking was using MSP LDR R1,=__cpp(SVC_Handler_main) BX R1}