📄 os_cpu_a.lst
字号:
92.4 0000002A 91A9 LD R26,Y+
92.5 0000002C 9199 LD R25,Y+
92.6 0000002E 9189 LD R24,Y+
92.7 00000030 9179 LD R23,Y+
92.8 00000032 9169 LD R22,Y+
92.9 00000034 9159 LD R21,Y+
92.10 00000036 9149 LD R20,Y+
92.11 00000038 9139 LD R19,Y+
92.12 0000003A 9129 LD R18,Y+
92.13 0000003C 9119 LD R17,Y+
92.14 0000003E 9109 LD R16,Y+
92.15 00000040 90F9 LD R15,Y+
92.16 00000042 90E9 LD R14,Y+
92.17 00000044 90D9 LD R13,Y+
92.18 00000046 90C9 LD R12,Y+
92.19 00000048 90B9 LD R11,Y+
92.20 0000004A 90A9 LD R10,Y+
92.21 0000004C 9099 LD R9,Y+
92.22 0000004E 9089 LD R8,Y+
92.23 00000050 9079 LD R7,Y+
92.24 00000052 9069 LD R6,Y+
92.25 00000054 9059 LD R5,Y+
92.26 00000056 9049 LD R4,Y+
92.27 00000058 9039 LD R3,Y+
92.28 0000005A 9029 LD R2,Y+
92.29 0000005C 9019 LD R1,Y+
92.30 0000005E 9009 LD R0,Y+
92.31 00000060 ENDM
93 00000060 9508 RET
; Start task
94 00000062
95 00000062
96 00000062 ;*********************************************
**********************************************
*************
97 00000062 ; TASK
LEVEL CONTEXT SWITCH
98 00000062 ;
99 00000062 ; Description : This function is called when a
task makes a higher priority task ready-to-ru
n.
100 00000062 ;
101 00000062 ; Note(s) : 1) Upon entry,
102 00000062 ; OSTCBCur points to the
OS_TCB of the task to suspend
103 00000062 ; OSTCBHighRdy points to the
OS_TCB of the task to resume
104 00000062 ;
105 00000062 ; 2) The stack frame of the task
to suspend looks as follows:
106 00000062 ;
107 00000062 ; SP+0
--> LSB of task code address
108 00000062 ; +1
MSB of task code address
(High memory)
109 00000062 ;
110 00000062 ; 3) The saved context of the
task to resume looks as follows:
111 00000062 ;
112 00000062 ; OSTCBHighRdy->OSTCBStkPtr
--> LSB of (return) stack pointer
(Low memory)
113 00000062 ;
SPH of (return) stack pointer
114 00000062 ;
Flags to load in status register
115 00000062 ;
R31
116 00000062 ;
R30
117 00000062 ;
R27
118 00000062 ;
.
119 00000062 ;
.
120 00000062 ;
.
121 00000062 ;
R0
(High memory)
122 00000062 ;*********************************************
**********************************************
*************
123 00000062
124 00000062 OSCtxSw: PUSHRS
; Save current task's context
124.1 00000062 920A ST -Y,R0
124.2 00000064 921A ST -Y,R1
124.3 00000066 922A ST -Y,R2
124.4 00000068 923A ST -Y,R3
124.5 0000006A 924A ST -Y,R4
124.6 0000006C 925A ST -Y,R5
124.7 0000006E 926A ST -Y,R6
124.8 00000070 927A ST -Y,R7
124.9 00000072 928A ST -Y,R8
124.10 00000074 929A ST -Y,R9
124.11 00000076 92AA ST -Y,R10
124.12 00000078 92BA ST -Y,R11
124.13 0000007A 92CA ST -Y,R12
124.14 0000007C 92DA ST -Y,R13
124.15 0000007E 92EA ST -Y,R14
124.16 00000080 92FA ST -Y,R15
124.17 00000082 930A ST -Y,R16
124.18 00000084 931A ST -Y,R17
124.19 00000086 932A ST -Y,R18
124.20 00000088 933A ST -Y,R19
124.21 0000008A 934A ST -Y,R20
124.22 0000008C 935A ST -Y,R21
124.23 0000008E 936A ST -Y,R22
124.24 00000090 937A ST -Y,R23
124.25 00000092 938A ST -Y,R24
124.26 00000094 939A ST -Y,R25
124.27 00000096 93AA ST -Y,R26
124.28 00000098 93BA ST -Y,R27
124.29 0000009A 93EA ST -Y,R30
124.30 0000009C 93FA ST -Y,R31
124.31 0000009E ENDM
125 0000009E PUSHSREG
125.1 0000009E B70F IN R16,SREG
125.2 000000A0 930A ST -Y,R16
125.3 000000A2 ENDM
126 000000A2 PUSHSP
126.1 000000A2 B70E IN R16,SPH
126.2 000000A4 930A ST -Y,R16
126.3 000000A6 B70D IN R16,SPL
126.4 000000A8 930A ST -Y,R16
126.5 000000AA ENDM
127 000000AA
128 000000AA 91E0.... LDS R30,OSTCBCur
; Z =
OSTCBCur->OSTCBSt
kPtr
129 000000AE 91F0.... LDS R31,OSTCBCur+1
;
130 000000B2 93C1 ST Z+,R28
; Save Y
(R29:R28)
pointer
131 000000B4 93D1 ST Z+,R29
;
132 000000B6
133 000000B6 .... RCALL OSTaskSwHook
; Call user defined task switch hook
134 000000B8
135 000000B8 9100.... LDS R16,OSPrioHighRdy
; OSPrioCur
= OSPrioHighRdy
136 000000BC 9300.... STS OSPrioCur,R16
137 000000C0
138 000000C0 91E0.... LDS R30,OSTCBHighRdy
; Let Z
point to TCB of
highest priority
task
139 000000C4 91F0.... LDS R31,OSTCBHighRdy+1
; ready to
run
140 000000C8 93E0.... STS OSTCBCur,R30
;
OSTCBCur =
OSTCBHighRdy
141 000000CC 93F0.... STS OSTCBCur+1,R31
;
142 000000D0
143 000000D0 91C1 LD R28,Z+
; Restore Y
pointer
144 000000D2 91D1 LD R29,Z+
;
145 000000D4 POPSP
; Restore stack pointer
145.1 000000D4 9109 LD R16,Y+
145.2 000000D6 BF0D OUT SPL,R16
145.3 000000D8 9109 LD R16,Y+
145.4 000000DA BF0E OUT SPH,R16
145.5 000000DC ENDM
146 000000DC POPSREG
; Restore status register
146.1 000000DC 9109 LD R16,Y+
146.2 000000DE BF0F OUT SREG,R16
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -