📄 swi_rtx.lst
字号:
ARM Macro Assembler Page 1
1 00000000 ;/*-----------------------------------------------------
-----------------------
2 00000000 ; * R T L - K e r n e l
3 00000000 ; *-----------------------------------------------------
-----------------------
4 00000000 ; * Name: SWI_RTX.S
5 00000000 ; * Purpose: Pre-defined SWI Handler
6 00000000 ; * Rev.: V3.00 / 25-apr-2006
7 00000000 ; *-----------------------------------------------------
-----------------------
8 00000000 ; * This code is part of the RealView Run-Time Libr
ary.
9 00000000 ; * Copyright (c) 2004-2006 KEIL - An ARM Company.
All rights reserved.
10 00000000 ; *-----------------------------------------------------
----------------------*/
11 00000000
12 00000000 00000020
T_Bit EQU 0x20
13 00000000
14 00000000 IMPORT os_runtask
15 00000000 ;/* Offsets from the 'struct OS_TCB' */
16 00000000 00000021
TCB_FCTX
EQU 33
17 00000000 00000024
TCB_TSTACK
EQU 36
18 00000000
19 00000000 ;/*-------------------------- SWI handler --------------
---------------------*/
20 00000000 ;/* SWI-0 is reserved for context task switch. 'os_switc
h_tasks()' prolog */
21 00000000 ;/* and epilog are implemented here in this module.
*/
22 00000000
23 00000000 PRESERVE8 ; 8-Byte aligned St
ack
24 00000000 AREA SWI_RTX, CODE, READONLY
25 00000000 ARM
26 00000000
27 00000000 IMPORT SWI_Count
28 00000000 IMPORT SWI_Table
29 00000000
30 00000000 EXPORT SWI_Handler
31 00000000 SWI_Handler
32 00000000 E14FC000 MRS R12,SPSR ; Get SPSR
33 00000004 E31C0020 TST R12,#T_Bit ; Check Thumb Bit
34 00000008 115EC0B2 LDRNEH R12,[LR,#-2] ; Thumb: Load Half
word
35 0000000C 13CCCCFF BICNE R12,R12,#0xFF00 ; Extrac
t SWI Number
36 00000010 051EC004 LDREQ R12,[LR,#-4] ; ARM: Load Word
37 00000014 03CCC4FF BICEQ R12,R12,#0xFF000000 ; Ex
tract SWI Number
38 00000018
39 00000018 E35C0000 CMP R12, #0
40 0000001C 1A000020 BNE SWI_User
ARM Macro Assembler Page 2
41 00000020
42 00000020 ; /*------------------- os_switch_tasks --
----------------------*/
43 00000020
44 00000020 E94D2000 STMDB SP,{SP}^ ; Save reduced cont
ext
45 00000024 E1A00000 NOP ; After User Bank R
egister Access
46 00000028 E91D0002 LDMDB SP,{R1} ; User SP
47 0000002C E14FC000 MRS R12,SPSR ; User CPSR
48 00000030 E9215FF0 STMDB R1!,{R4-R11,R12,LR} ; push PC,
CPSR, R11-R4
49 00000034 E59F4090 LDR R4,=os_runtask ; os_runtask->ts
k_stack
50 00000038 E5944000 LDR R4,[R4,#0x0]
51 0000003C E5841024 STR R1,[R4,#TCB_TSTACK]
52 00000040 E1A04000 MOV R4,R0 ; R4 = p_new
53 00000044
54 00000044 E59FC084 LDR R12,=SWI_Table
55 00000048 E59CC000 LDR R12,[R12] ; Load SWI Function
Address
56 0000004C E1A0E00F MOV LR,PC ; Return Address
57 00000050 E12FFF1C BX R12 ; Call SWI Function
58 00000054
59 00000054 E594E024 LDR LR,[R4,#TCB_TSTACK]
; p_new->tsk_stack
60 00000058 E5D40021 LDRB R0,[R4,#TCB_FCTX]
; p_new->full_ctx
61 0000005C E3500000 CMP R0,#0x0
62 00000060 1A000006 BNE Full_ctx
63 00000064
64 00000064 E8BE1FF0 LDMIA LR!,{R4-R11,R12} ; Restore Redu
ced context
65 00000068 E16FF00C MSR SPSR_cxsf,R12
66 0000006C E8BE1000 LDMIA LR!,{R12}
67 00000070 E90D4000 STMDB SP,{LR} ; Set User SP
68 00000074 E95D2000 LDMDB SP,{SP}^
69 00000078 E1A00000 NOP ; After User Bank R
egister Access
70 0000007C E1B0F00C MOVS PC,R12 ; RETI
71 00000080
72 00000080 Full_ctx
73 00000080 E28E0040 ADD R0,LR,#64
74 00000084 E910000E LDMDB R0,{R1-R3} ; LR, CPSR (R3=dumm
y)
75 00000088 E16FF002 MSR SPSR_cxsf,R2 ; Set User CPSR
76 0000008C E90D0003 STMDB SP,{R0-R1}
77 00000090 E95D6000 LDMDB SP,{SP,LR}^ ; Set User SP,LR
78 00000094 E1A00000 NOP ; After User Bank R
egister Access
79 00000098 E89E1FFF LDMIA LR,{R0-R12} ; Restore R12-R0
80 0000009C E59EE03C LDR LR,[LR,#60] ; PC
81 000000A0 E1B0F00E MOVS PC,LR ; RETI
82 000000A4
83 000000A4 ; /*------------------- User SWI ---------
----------------------*/
84 000000A4
85 000000A4 E92D4100
ARM Macro Assembler Page 3
SWI_User
STMFD SP!,{R8,LR} ; Store R8, LR
86 000000A8 E51F8008 LDR R8,SWI_Count
87 000000AC E15C0008 CMP R12,R8
88 000000B0 2A000004 BHS SWI_Dead ; Overflow
89 000000B4 E59F8014 LDR R8,=SWI_Table
90 000000B8 E798C10C LDR R12,[R8,R12,LSL #2] ; Load SWI
Function Address
91 000000BC E1A0E00F MOV LR,PC ; Return Address
92 000000C0 E12FFF1C BX R12 ; Call SWI Function
93 000000C4 E8FD8100 LDMFD SP!,{R8,PC}^ ; Restore R8 and R
eturn
94 000000C8
95 000000C8 SWI_Dead
96 000000C8 EAFFFFFE B SWI_Dead ; None Existing SWI
97 000000CC
98 000000CC
99 000000CC END
00000000
00000000
Command Line: --debug --xref --device=DARMP --apcs=interwork -oSWI_RTX.o -ID:\K
eil\ARM\INC\Philips --list=SWI_RTX.lst SWI_RTX.s
ARM Macro Assembler Page 1 Alphabetic symbol ordering
Relocatable symbols
Full_ctx 00000080
Symbol: Full_ctx
Definitions
At line 72 in file SWI_RTX.s
Uses
At line 62 in file SWI_RTX.s
Comment: Full_ctx used once
SWI_Dead 000000C8
Symbol: SWI_Dead
Definitions
At line 95 in file SWI_RTX.s
Uses
At line 88 in file SWI_RTX.s
At line 96 in file SWI_RTX.s
SWI_Handler 00000000
Symbol: SWI_Handler
Definitions
At line 31 in file SWI_RTX.s
Uses
At line 30 in file SWI_RTX.s
Comment: SWI_Handler used once
SWI_RTX 00000000
Symbol: SWI_RTX
Definitions
At line 24 in file SWI_RTX.s
Uses
None
Comment: SWI_RTX unused
SWI_User 000000A4
Symbol: SWI_User
Definitions
At line 85 in file SWI_RTX.s
Uses
At line 40 in file SWI_RTX.s
Comment: SWI_User used once
5 symbols
ARM Macro Assembler Page 1 Alphabetic symbol ordering
Absolute symbols
TCB_FCTX 00000021
Symbol: TCB_FCTX
Definitions
At line 16 in file SWI_RTX.s
Uses
At line 60 in file SWI_RTX.s
Comment: TCB_FCTX used once
TCB_TSTACK 00000024
Symbol: TCB_TSTACK
Definitions
At line 17 in file SWI_RTX.s
Uses
At line 51 in file SWI_RTX.s
At line 59 in file SWI_RTX.s
T_Bit 00000020
Symbol: T_Bit
Definitions
At line 12 in file SWI_RTX.s
Uses
At line 33 in file SWI_RTX.s
Comment: T_Bit used once
3 symbols
ARM Macro Assembler Page 1 Alphabetic symbol ordering
External symbols
SWI_Count 00000000
Symbol: SWI_Count
Definitions
At line 27 in file SWI_RTX.s
Uses
At line 86 in file SWI_RTX.s
Comment: SWI_Count used once
SWI_Table 00000000
Symbol: SWI_Table
Definitions
At line 28 in file SWI_RTX.s
Uses
At line 54 in file SWI_RTX.s
At line 89 in file SWI_RTX.s
os_runtask 00000000
Symbol: os_runtask
Definitions
At line 14 in file SWI_RTX.s
Uses
At line 49 in file SWI_RTX.s
Comment: os_runtask used once
3 symbols
328 symbols in table
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -