📄 os_cpu_a.lst
字号:
146.3 000000E0 ENDM
147 000000E0 POPRS
; Restore all registers
147.1 000000E0 91F9 LD R31,Y+
147.2 000000E2 91E9 LD R30,Y+
147.3 000000E4 91B9 LD R27,Y+
147.4 000000E6 91A9 LD R26,Y+
147.5 000000E8 9199 LD R25,Y+
147.6 000000EA 9189 LD R24,Y+
147.7 000000EC 9179 LD R23,Y+
147.8 000000EE 9169 LD R22,Y+
147.9 000000F0 9159 LD R21,Y+
147.10 000000F2 9149 LD R20,Y+
147.11 000000F4 9139 LD R19,Y+
147.12 000000F6 9129 LD R18,Y+
147.13 000000F8 9119 LD R17,Y+
147.14 000000FA 9109 LD R16,Y+
147.15 000000FC 90F9 LD R15,Y+
147.16 000000FE 90E9 LD R14,Y+
147.17 00000100 90D9 LD R13,Y+
147.18 00000102 90C9 LD R12,Y+
147.19 00000104 90B9 LD R11,Y+
147.20 00000106 90A9 LD R10,Y+
147.21 00000108 9099 LD R9,Y+
147.22 0000010A 9089 LD R8,Y+
147.23 0000010C 9079 LD R7,Y+
147.24 0000010E 9069 LD R6,Y+
147.25 00000110 9059 LD R5,Y+
147.26 00000112 9049 LD R4,Y+
147.27 00000114 9039 LD R3,Y+
147.28 00000116 9029 LD R2,Y+
147.29 00000118 9019 LD R1,Y+
147.30 0000011A 9009 LD R0,Y+
147.31 0000011C ENDM
148 0000011C 9508 RET
149 0000011E
150 0000011E
151 0000011E ;*********************************************
**********************************************
**************
152 0000011E ; INTERRUPT
LEVEL CONTEXT SWITCH
153 0000011E ;
154 0000011E ; Description : This function is called by
OSIntExit() to perform a context switch to a
task that has
155 0000011E ; been made ready-to-run by an
ISR.
156 0000011E ;
157 0000011E ; Note(s) : 1) Upon entry,
158 0000011E ; OSTCBCur points to the
OS_TCB of the task to suspend
159 0000011E ; OSTCBHighRdy points to the
OS_TCB of the task to resume
160 0000011E ;
161 0000011E ; 2) The stack frame of the task
to suspend looks as follows:
162 0000011E ;
163 0000011E ; SP+0
--> LSB of return address of OSIntCtxSw()
(Low memory)
164 0000011E ; +1
MSB of return address of OSIntCtxSw()
165 0000011E ; +2
LSB of return address of OSIntExit()
166 0000011E ; +3
MSB of return address of OSIntExit()
167 0000011E ; +4
Saved SREG (when OS_CRITICAL_METHOD ==
2)
168 0000011E ; +5
LSB of task code address
169 0000011E ; +6
MSB of task code address
(High memory)
170 0000011E ;
171 0000011E ; 3) The saved context of the
task to resume looks as follows:
172 0000011E ;
173 0000011E ; OSTCBHighRdy->OSTCBStkPtr
--> LSB of (return) stack pointer
(Low memory)
174 0000011E ;
MSB of (return) stack pointer
175 0000011E ;
Flags to load in status register
176 0000011E ;
R31
177 0000011E ;
R30
178 0000011E ;
R27
179 0000011E ;
.
180 0000011E ;
.
181 0000011E ;
.
182 0000011E ;
R0
(High memory)
183 0000011E ;*********************************************
**********************************************
**************
184 0000011E
185 0000011E 91E0.... OSIntCtxSw: LDS R30,OSTCBCur
; Z =
OSTCBCur->OSTCBSt
kPtr
186 00000122 91F0.... LDS R31,OSTCBCur+1
;
187 00000126 93C1 ST Z+,R28
; Save Y
pointer
188 00000128 93D1 ST Z+,R29
;
189 0000012A
190 0000012A .... RCALL OSTaskSwHook
; Call user defined task switch hook
191 0000012C
192 0000012C 9100.... LDS R16,OSPrioHighRdy
; OSPrioCur
= OSPrioHighRdy
193 00000130 9300.... STS OSPrioCur,R16
;
194 00000134
195 00000134 91E0.... LDS R30,OSTCBHighRdy
; Z =
OSTCBHighRdy->OST
CBStkPtr
196 00000138 91F0.... LDS R31,OSTCBHighRdy+1
;
197 0000013C 93E0.... STS OSTCBCur,R30
;
OSTCBCur =
OSTCBHighRdy
198 00000140 93F0.... STS OSTCBCur+1,R31
;
199 00000144
200 00000144 91C1 LD R28,Z+
; Restore Y
pointer
201 00000146 91D1 LD R29,Z+
;
202 00000148 POPSP
; Restore stack pointer
202.1 00000148 9109 LD R16,Y+
202.2 0000014A BF0D OUT SPL,R16
202.3 0000014C 9109 LD R16,Y+
202.4 0000014E BF0E OUT SPH,R16
202.5 00000150 ENDM
203 00000150 POPSREG
; Restore status register
203.1 00000150 9109 LD R16,Y+
203.2 00000152 BF0F OUT SREG,R16
203.3 00000154 ENDM
204 00000154 POPRS
; Restore saved registers
204.1 00000154 91F9 LD R31,Y+
204.2 00000156 91E9 LD R30,Y+
204.3 00000158 91B9 LD R27,Y+
204.4 0000015A 91A9 LD R26,Y+
204.5 0000015C 9199 LD R25,Y+
204.6 0000015E 9189 LD R24,Y+
204.7 00000160 9179 LD R23,Y+
204.8 00000162 9169 LD R22,Y+
204.9 00000164 9159 LD R21,Y+
204.10 00000166 9149 LD R20,Y+
204.11 00000168 9139 LD R19,Y+
204.12 0000016A 9129 LD R18,Y+
204.13 0000016C 9119 LD R17,Y+
204.14 0000016E 9109 LD R16,Y+
204.15 00000170 90F9 LD R15,Y+
204.16 00000172 90E9 LD R14,Y+
204.17 00000174 90D9 LD R13,Y+
204.18 00000176 90C9 LD R12,Y+
204.19 00000178 90B9 LD R11,Y+
204.20 0000017A 90A9 LD R10,Y+
204.21 0000017C 9099 LD R9,Y+
204.22 0000017E 9089 LD R8,Y+
204.23 00000180 9079 LD R7,Y+
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -