📄 os_cpu_a.lst
字号:
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
OS_CPU_A.ASM PAGE 5
183 0000003e 06BE POP ACC
184 0000003f D009 MOVB XAR0,#9
185 00000040 9794 MOV *+XAR4[AR0],AH ;保存 PH
186 00000041 D008 MOVB XAR0,#8
187 00000042 9694 MOV *+XAR4[AR0],AL ;保存 PL
188
189 00000043 06BE POP ACC
190 00000044 D007 MOVB XAR0,#7
191 00000045 9794 MOV *+XAR4[AR0],AH ;保存 AH
192 00000046 D006 MOVB XAR0,#6
193 00000047 9694 MOV *+XAR4[AR0],AL ;保存 AL
194
195 00000048 06BE POP ACC
196 00000049 D005 MOVB XAR0,#5
197 0000004a 9794 MOV *+XAR4[AR0],AH ;保存 T
198 0000004b D004 MOVB XAR0,#4
199 0000004c 9694 MOV *+XAR4[AR0],AL ;保存 ST0
200
201 0000004d 2AA9 POP AL
202 ;********************************************************************************
203
204 ;=================================================================================
205 0000004e 761F! MOVW DP,#_OSTCBHighRdy ; OSTCBCur = OSTCBHighRdy
0000004f 0000
206 00000050 0600! MOVL ACC,@_OSTCBHighRdy
207 00000051 761F! MOVW DP,#_OSTCBCur
00000052 0000
208 00000053 1E00! MOVL @_OSTCBCur,ACC
209
210
211 00000054 761F! MOVW DP,#_OSPrioHighRdy ;OSPrioCur = OSPrioHighRdy
00000055 0000
212 00000056 9200! MOV AL,@_OSPrioHighRdy
213 00000057 761F! MOVW DP,#_OSPrioCur
00000058 0000
214 00000059 9600! MOV @_OSPrioCur,AL
215 ;=================================================================================
216
217 ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
218 ;模拟中断
219 ;装载新任务的cpu环境
220
221
222 0000005a 761F! MOVW DP,#_OSTCBHighRdy
0000005b 0000
223 0000005c 8A00! MOVL XAR4,@_OSTCBHighRdy ; |165|
224 0000005d 8AC4 MOVL XAR4,*+XAR4[0] ; |165|
225
226
227 ;模拟中断
228 0000005e 22A9 PUSH AL
229
230
231 0000005f D004 MOVB XAR0,#4
232 00000060 9294 MOV AL,*+XAR4[AR0] ;得到 ST0
TMS320C2000 COFF Assembler PC Version 3.03 Sat Aug 02 12:26:42 2003
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
OS_CPU_A.ASM PAGE 6
233 00000061 D005 MOVB XAR0,#5
234 00000062 9394 MOV AH,*+XAR4[AR0] ;得到 T
235 00000063 1EBD PUSH ACC
236
237
238 00000064 D006 MOVB XAR0,#6
239 00000065 9294 MOV AL,*+XAR4[AR0] ;得到 AL
240 00000066 D007 MOVB XAR0,#7
241 00000067 9394 MOV AH,*+XAR4[AR0] ;得到 AH
242 00000068 1EBD PUSH ACC
243
244 00000069 D008 MOVB XAR0,#8
245 0000006a 9294 MOV AL,*+XAR4[AR0] ;得到 PL
246 0000006b D009 MOVB XAR0,#9
247 0000006c 9394 MOV AH,*+XAR4[AR0] ;得到 PH
248 0000006d 1EBD PUSH ACC
249
250
251 0000006e D00A MOVB XAR0,#10
252 0000006f 9294 MOV AL,*+XAR4[AR0] ;得到 AR0
253 00000070 D00B MOVB XAR0,#11
254 00000071 9394 MOV AH,*+XAR4[AR0] ;得到 AR1
255 00000072 1EBD PUSH ACC
256
257 00000073 D00C MOVB XAR0,#12
258 00000074 9294 MOV AL,*+XAR4[AR0] ;得到 ST1
259 00000075 D00D MOVB XAR0,#13
260 00000076 9394 MOV AH,*+XAR4[AR0] ;得到 DP
261 00000077 1EBD PUSH ACC
262
263 00000078 D00E MOVB XAR0,#14
264 00000079 9294 MOV AL,*+XAR4[AR0] ;得到 IER
265 0000007a D00F MOVB XAR0,#15
266 0000007b 9394 MOV AH,*+XAR4[AR0] ;得到 DBGSTAT
267 0000007c 1EBD PUSH ACC
268
269 0000007d 93D4 MOV AH,*+XAR4[2] ;task addr
270 0000007e 92DC MOV AL,*+XAR4[3]
271 0000007f 1EBD PUSH ACC
272 ;%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
273
274 00000080 7602 IRET
275
276
277
278 ;*********************************************************************************************************
279 ; PERFORM A CONTEXT SWITCH (From an ISR)
280 ; void OSIntCtxSw(void)
281 ;
282 ; Note(s): 1) Upon entry,
283 ; OSTCBCur points to the OS_TCB of the task to suspend
284 ; OSTCBHighRdy points to the OS_TCB of the task to resume
285 ;
286 ; 2) The stack frame of the task to suspend looks as follows:
287 ;
TMS320C2000 COFF Assembler PC Version 3.03 Sat Aug 02 12:26:42 2003
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
OS_CPU_A.ASM PAGE 7
288 ; SP+0 --> OFFSET of return address of OSIntCtxSw() (Low memory)
289 ; +2 SEGMENT of return address of OSIntCtxSw()
290 ; +4 PSW saved by OS_ENTER_CRITICAL() in OSIntExit()
291 ; +6 OFFSET of return address of OSIntExit()
292 ; +8 SEGMENT of return address of OSIntExit()
293 ; +10 DS
294 ; ES
295 ; DI
296 ; SI
297 ; BP
298 ; SP
299 ; BX
300 ; DX
301 ; CX
302 ; AX
303 ; OFFSET of task code address
304 ; SEGMENT of task code address
305 ; Flags to load in PSW (High memory)
306 ;
307 ; 3) The stack frame of the task to resume looks as follows:
308 ;
309 ; OSTCBHighRdy->OSTCBStkPtr --> DS (Low memory)
310 ; ES
311 ; DI
312 ; SI
313 ; BP
314 ; SP
315 ; BX
316 ; DX
317 ; CX
318 ; AX
319 ; OFFSET of task code address
320 ; SEGMENT of task code address
321 ; Flags to load in PSW (High memory)
322 ;*********************************************************************************************************
323 00000081 _OSIntCtxSw:
324 .ref _OSTCBHighRdy
325 .ref _OSTCBCur
326 .ref _OSPrioHighRdy
327 .ref _OSPrioCur
328 .global _OSIntCtxSw
329
330 ;模拟返回中断
331 ;保存当前环境
332
333 ;********************************************************************************
334 00000081 761F! MOVW DP,#_OSTCBCur
00000082 0000
335 00000083 8A00! MOVL XAR4,@_OSTCBCur ; |165|
336 00000084 8AC4 MOVL XAR4,*+XAR4[0] ; |165|
337
338 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
339 ;保存被切换的RPC
340 00000085 FE82 SUBB SP,#2
341
TMS320C2000 COFF Assembler PC Version 3.03 Sat Aug 02 12:26:42 2003
Tools Copyright (c) 1996-2002 Texas Instruments Incorporated
OS_CPU_A.ASM PAGE 8
342 00000086 2AA9 POP AL
343 00000087 D011 MOVB XAR0,#17
344 00000088 9694 MOV *+XAR4[AR0],AL
345
346 00000089 2AA9 POP AL
347 0000008a D010 MOVB XAR0,#16
348 0000008b 9694 MOV *+XAR4[AR0],AL
349 ;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
350
351 0000008c 06BE POP ACC
352 0000008d 97D4 MOV *+XAR4[2],AH ;保存task addr
353 0000008e 96DC MOV *+XAR4[3],AL
354
355
356
357 0000008f 06BE POP ACC
358 00000090 D00F MOVB XAR0,#15
359 00000091 9794 MOV *+XAR4[AR0],AH ;保存DBGSTAT
360 00000092 D00E MOVB XAR0,#14
361 00000093 9694 MOV *+XAR4[AR0],AL ;保存 IER
362
363 00000094 06BE POP ACC
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -