ARM Macro Assembler Page 1 1 00000000 ;/* 2 00000000 ; * Copyright (c) 2006-2022, RT-Thread Development Team 3 00000000 ; * 4 00000000 ; * SPDX-License-Identifier: Apache-2.0 5 00000000 ; * 6 00000000 ; * Change Logs: 7 00000000 ; * Date Author Notes 8 00000000 ; * 2019-10-25 tyx first version 9 00000000 ; */ 10 00000000 11 00000000 AREA |.text|, CODE, READONLY, ALIGN= 2 12 00000000 THUMB 13 00000000 REQUIRE8 14 00000000 PRESERVE8 15 00000000 16 00000000 IMPORT rt_secure_svc_handle 17 00000000 18 00000000 ;/* 19 00000000 ; * int tzcall(int id, rt_ubase_t arg0, rt_ubase_t arg1, rt_ubase_t arg2); 20 00000000 ; */ 21 00000000 tzcall PROC 22 00000000 EXPORT tzcall 23 00000000 DF01 SVC 1 ;call SVC 1 24 00000002 4770 BX LR 25 00000004 26 00000004 ENDP 27 00000004 28 00000004 tzcall_entry PROC 29 00000004 B512 PUSH {R1, R4, LR} 30 00000006 460C MOV R4, R1 ; copy thread SP to R4 31 00000008 CC0F LDMFD R4!, {r0 - r3} ; pop user stack , get input arg0, a rg1, arg2 32 0000000A E924 000F STMFD R4!, {r0 - r3} ; push stack, us er stack recovery 33 0000000E F7FF FFFE BL rt_secure_svc_handle ; call fun 34 00000012 E8BD 4012 POP {R1, R4, LR} 35 00000016 6008 STR R0, [R1] ; update return val ue 36 00000018 4770 BX LR ; return to thread 37 0000001A 38 0000001A ENDP 39 0000001A 40 0000001A syscall_entry PROC 41 0000001A 4770 BX LR ; return to user ap p 42 0000001C 43 0000001C ENDP 44 0000001C 45 0000001C ;/* 46 0000001C ; * void SVC_Handler(void); 47 0000001C ; */ 48 0000001C SVC_Handler ARM Macro Assembler Page 2 PROC 49 0000001C EXPORT SVC_Handler 50 0000001C 51 0000001C ; get SP, save to R1 52 0000001C F3EF 8108 MRS R1, MSP ;get fault context from handler 53 00000020 F01E 0F04 TST LR, #0x04 ;if(!EXC_RETURN[2]) 54 00000024 D001 BEQ get_sp_done 55 00000026 F3EF 8109 MRS R1, PSP ;get fault context from thread 56 0000002A get_sp_done 57 0000002A 58 0000002A ; get svc index 59 0000002A 6988 LDR R0, [R1, #24] 60 0000002C F810 0C02 LDRB R0, [R0, #-2] 61 00000030 62 00000030 ;if svc == 0, do system call 63 00000030 2800 CMP R0, #0x0 64 00000032 D0FE BEQ syscall_entry 65 00000034 66 00000034 ;if svc == 1, do TrustZone call 67 00000034 2801 CMP R0, #0x1 68 00000036 D0FE BEQ tzcall_entry 69 00000038 70 00000038 ENDP 71 00000038 72 00000038 ALIGN 73 00000038 74 00000038 END Command Line: --debug --xref --diag_suppress=9931 --cpu=Cortex-M33 --fpu=FPv5-S P --depend=.\build\keil\obj\syscall_rvds.d -o.\build\keil\obj\syscall_rvds.o -I D:\1_tool_prog\2_MDK\pack\Keil\STM32H5xx_DFP\1.1.0\Drivers\CMSIS\Device\ST\STM3 2H5xx\Include --predefine="__UVISION_VERSION SETA 536" --predefine="STM32H563xx SETA 1" --list=syscall_rvds.lst ..\..\..\libcpu\arm\cortex-m33\syscall_rvds.S ARM Macro Assembler Page 1 Alphabetic symbol ordering Relocatable symbols .text 00000000 Symbol: .text Definitions At line 11 in file ..\..\..\libcpu\arm\cortex-m33\syscall_rvds.S Uses None Comment: .text unused SVC_Handler 0000001C Symbol: SVC_Handler Definitions At line 48 in file ..\..\..\libcpu\arm\cortex-m33\syscall_rvds.S Uses At line 49 in file ..\..\..\libcpu\arm\cortex-m33\syscall_rvds.S Comment: SVC_Handler used once get_sp_done 0000002A Symbol: get_sp_done Definitions At line 56 in file ..\..\..\libcpu\arm\cortex-m33\syscall_rvds.S Uses At line 54 in file ..\..\..\libcpu\arm\cortex-m33\syscall_rvds.S Comment: get_sp_done used once syscall_entry 0000001A Symbol: syscall_entry Definitions At line 40 in file ..\..\..\libcpu\arm\cortex-m33\syscall_rvds.S Uses At line 64 in file ..\..\..\libcpu\arm\cortex-m33\syscall_rvds.S Comment: syscall_entry used once tzcall 00000000 Symbol: tzcall Definitions At line 21 in file ..\..\..\libcpu\arm\cortex-m33\syscall_rvds.S Uses At line 22 in file ..\..\..\libcpu\arm\cortex-m33\syscall_rvds.S Comment: tzcall used once tzcall_entry 00000004 Symbol: tzcall_entry Definitions At line 28 in file ..\..\..\libcpu\arm\cortex-m33\syscall_rvds.S Uses At line 68 in file ..\..\..\libcpu\arm\cortex-m33\syscall_rvds.S Comment: tzcall_entry used once 6 symbols ARM Macro Assembler Page 1 Alphabetic symbol ordering External symbols rt_secure_svc_handle 00000000 Symbol: rt_secure_svc_handle Definitions At line 16 in file ..\..\..\libcpu\arm\cortex-m33\syscall_rvds.S Uses At line 33 in file ..\..\..\libcpu\arm\cortex-m33\syscall_rvds.S Comment: rt_secure_svc_handle used once 1 symbol 340 symbols in table