📄 os_task.lst
字号:
\ 00000030 0068 LDR R0,[R0, #+0]
\ 00000032 2D30 ADDS R0,R0,#+45
\ 00000034 0578 LDRB R5,[R0, #+0]
382 }
383 ptcb = OSTCBPrioTbl[prio];
\ ??OSTaskDel_5:
\ 00000036 2D06 LSLS R5,R5,#+24 ;; ZeroExtS R5,R5,#+24,#+24
\ 00000038 2D0E LSRS R5,R5,#+24
\ 0000003A 0420 MOVS R0,#+4
\ 0000003C 6843 MULS R0,R5,R0
\ 0000003E .... LDR R1,??DataTable42 ;; OSTCBPrioTbl
\ 00000040 0E58 LDR R6,[R1, R0]
384 if (ptcb != (OS_TCB *)0) { /* Task to delete must exist */
\ 00000042 002E CMP R6,#+0
\ 00000044 .... BNE .+5
\ 00000046 83E0 B ??OSTaskDel_6
385 y = ptcb->OSTCBY;
\ 00000048 2F20 MOVS R0,#+47
\ 0000004A 315C LDRB R1,[R6, R0]
386 OSRdyTbl[y] &= ~ptcb->OSTCBBitX;
\ 0000004C 0906 LSLS R1,R1,#+24 ;; ZeroExtS R1,R1,#+24,#+24
\ 0000004E 090E LSRS R1,R1,#+24
\ 00000050 .... LDR R0,??DataTable31 ;; OSRdyTbl
\ 00000052 0906 LSLS R1,R1,#+24 ;; ZeroExtS R1,R1,#+24,#+24
\ 00000054 090E LSRS R1,R1,#+24
\ 00000056 .... LDR R2,??DataTable31 ;; OSRdyTbl
\ 00000058 525C LDRB R2,[R2, R1]
\ 0000005A 3023 MOVS R3,#+48
\ 0000005C F35C LDRB R3,[R6, R3]
\ 0000005E 9A43 BICS R2,R2,R3
\ 00000060 4254 STRB R2,[R0, R1]
387 if (OSRdyTbl[y] == 0x00) { /* Make task not ready */
\ 00000062 0906 LSLS R1,R1,#+24 ;; ZeroExtS R1,R1,#+24,#+24
\ 00000064 090E LSRS R1,R1,#+24
\ 00000066 .... LDR R0,??DataTable31 ;; OSRdyTbl
\ 00000068 405C LDRB R0,[R0, R1]
\ 0000006A 0028 CMP R0,#+0
\ 0000006C 06D1 BNE ??OSTaskDel_7
388 OSRdyGrp &= ~ptcb->OSTCBBitY;
\ 0000006E .... LDR R0,??DataTable45 ;; OSRdyGrp
\ 00000070 .... LDR R2,??DataTable45 ;; OSRdyGrp
\ 00000072 1278 LDRB R2,[R2, #+0]
\ 00000074 3123 MOVS R3,#+49
\ 00000076 F35C LDRB R3,[R6, R3]
\ 00000078 9A43 BICS R2,R2,R3
\ 0000007A 0270 STRB R2,[R0, #+0]
389 }
390 #if OS_EVENT_EN > 0
391 pevent = ptcb->OSTCBEventPtr;
\ ??OSTaskDel_7:
\ 0000007C F269 LDR R2,[R6, #+28]
392 if (pevent != (OS_EVENT *)0) { /* If task is waiting on event */
\ 0000007E 002A CMP R2,#+0
\ 00000080 13D0 BEQ ??OSTaskDel_8
393 pevent->OSEventTbl[y] &= ~ptcb->OSTCBBitX;
\ 00000082 0906 LSLS R1,R1,#+24 ;; ZeroExtS R1,R1,#+24,#+24
\ 00000084 090E LSRS R1,R1,#+24
\ 00000086 5018 ADDS R0,R2,R1
\ 00000088 0906 LSLS R1,R1,#+24 ;; ZeroExtS R1,R1,#+24,#+24
\ 0000008A 090E LSRS R1,R1,#+24
\ 0000008C 5318 ADDS R3,R2,R1
\ 0000008E 1B7A LDRB R3,[R3, #+8]
\ 00000090 3027 MOVS R7,#+48
\ 00000092 F75D LDRB R7,[R6, R7]
\ 00000094 BB43 BICS R3,R3,R7
\ 00000096 0372 STRB R3,[R0, #+8]
394 if (pevent->OSEventTbl[y] == 0) { /* ... remove task from ... */
\ 00000098 5018 ADDS R0,R2,R1
\ 0000009A 007A LDRB R0,[R0, #+8]
\ 0000009C 0028 CMP R0,#+0
\ 0000009E 04D1 BNE ??OSTaskDel_8
395 pevent->OSEventGrp &= ~ptcb->OSTCBBitY; /* ... event ctrl block */
\ 000000A0 5078 LDRB R0,[R2, #+1]
\ 000000A2 3121 MOVS R1,#+49
\ 000000A4 715C LDRB R1,[R6, R1]
\ 000000A6 8843 BICS R0,R0,R1
\ 000000A8 5070 STRB R0,[R2, #+1]
396 }
397 }
398 #endif
399 #if (OS_VERSION >= 251) && (OS_FLAG_EN > 0) && (OS_MAX_FLAGS > 0)
400 pnode = ptcb->OSTCBFlagNode;
\ ??OSTaskDel_8:
\ 000000AA 706A LDR R0,[R6, #+36]
401 if (pnode != (OS_FLAG_NODE *)0) { /* If task is waiting on event flag */
\ 000000AC 0028 CMP R0,#+0
\ 000000AE 01D0 BEQ ??OSTaskDel_9
402 OS_FlagUnlink(pnode); /* Remove from wait list */
\ 000000B0 ........ _BLF OS_FlagUnlink,??OS_FlagUnlink??rT
403 }
404 #endif
405 ptcb->OSTCBDly = 0; /* Prevent OSTimeTick() from updating */
\ ??OSTaskDel_9:
\ 000000B4 0020 MOVS R0,#+0
\ 000000B6 7085 STRH R0,[R6, #+42]
406 ptcb->OSTCBStat = OS_STAT_RDY; /* Prevent task from being resumed */
\ 000000B8 2C20 MOVS R0,#+44
\ 000000BA 0021 MOVS R1,#+0
\ 000000BC 3154 STRB R1,[R6, R0]
407 if (OSLockNesting < 255u) {
\ 000000BE 2948 LDR R0,??OSTaskDel_0+0x4 ;; OSLockNesting
\ 000000C0 0078 LDRB R0,[R0, #+0]
\ 000000C2 FF28 CMP R0,#+255
\ 000000C4 04D0 BEQ ??OSTaskDel_10
408 OSLockNesting++;
\ 000000C6 2748 LDR R0,??OSTaskDel_0+0x4 ;; OSLockNesting
\ 000000C8 2649 LDR R1,??OSTaskDel_0+0x4 ;; OSLockNesting
\ 000000CA 0978 LDRB R1,[R1, #+0]
\ 000000CC 491C ADDS R1,R1,#+1
\ 000000CE 0170 STRB R1,[R0, #+0]
409 }
410 OS_EXIT_CRITICAL(); /* Enabling INT. ignores next instruc. */
\ ??OSTaskDel_10:
\ 000000D0 2000 MOVS R0,R4
\ 000000D2 ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
411 OS_Dummy(); /* ... Dummy ensures that INTs will be */
\ 000000D6 ........ _BLF OS_Dummy,??OS_Dummy??rT
412 OS_ENTER_CRITICAL(); /* ... disabled HERE! */
\ 000000DA ........ _BLF OS_CPU_SR_Save,??OS_CPU_SR_Save??rT
\ 000000DE 0400 MOVS R4,R0
413 if (OSLockNesting > 0) {
\ 000000E0 2048 LDR R0,??OSTaskDel_0+0x4 ;; OSLockNesting
\ 000000E2 0078 LDRB R0,[R0, #+0]
\ 000000E4 0128 CMP R0,#+1
\ 000000E6 04D3 BCC ??OSTaskDel_11
414 OSLockNesting--;
\ 000000E8 1E48 LDR R0,??OSTaskDel_0+0x4 ;; OSLockNesting
\ 000000EA 1E49 LDR R1,??OSTaskDel_0+0x4 ;; OSLockNesting
\ 000000EC 0978 LDRB R1,[R1, #+0]
\ 000000EE 491E SUBS R1,R1,#+1
\ 000000F0 0170 STRB R1,[R0, #+0]
415 }
416 OSTaskDelHook(ptcb); /* Call user defined hook */
\ ??OSTaskDel_11:
\ 000000F2 3000 MOVS R0,R6
\ 000000F4 ........ _BLF OSTaskDelHook,??OSTaskDelHook??rT
417 OSTaskCtr--; /* One less task being managed */
\ 000000F8 .... LDR R0,??DataTable35 ;; OSTaskCtr
\ 000000FA .... LDR R1,??DataTable35 ;; OSTaskCtr
\ 000000FC 0978 LDRB R1,[R1, #+0]
\ 000000FE 491E SUBS R1,R1,#+1
\ 00000100 0170 STRB R1,[R0, #+0]
418 OSTCBPrioTbl[prio] = (OS_TCB *)0; /* Clear old priority entry */
\ 00000102 0420 MOVS R0,#+4
\ 00000104 4543 MULS R5,R0,R5
\ 00000106 .... LDR R0,??DataTable42 ;; OSTCBPrioTbl
\ 00000108 0021 MOVS R1,#+0
\ 0000010A 4151 STR R1,[R0, R5]
419 if (ptcb->OSTCBPrev == (OS_TCB *)0) { /* Remove from TCB chain */
\ 0000010C B069 LDR R0,[R6, #+24]
\ 0000010E 0028 CMP R0,#+0
\ 00000110 06D1 BNE ??OSTaskDel_12
420 ptcb->OSTCBNext->OSTCBPrev = (OS_TCB *)0;
\ 00000112 7069 LDR R0,[R6, #+20]
\ 00000114 0021 MOVS R1,#+0
\ 00000116 8161 STR R1,[R0, #+24]
421 OSTCBList = ptcb->OSTCBNext;
\ 00000118 1348 LDR R0,??OSTaskDel_0+0x8 ;; OSTCBList
\ 0000011A 7169 LDR R1,[R6, #+20]
\ 0000011C 0160 STR R1,[R0, #+0]
\ 0000011E 05E0 B ??OSTaskDel_13
422 } else {
423 ptcb->OSTCBPrev->OSTCBNext = ptcb->OSTCBNext;
\ ??OSTaskDel_12:
\ 00000120 B069 LDR R0,[R6, #+24]
\ 00000122 7169 LDR R1,[R6, #+20]
\ 00000124 4161 STR R1,[R0, #+20]
424 ptcb->OSTCBNext->OSTCBPrev = ptcb->OSTCBPrev;
\ 00000126 7069 LDR R0,[R6, #+20]
\ 00000128 B169 LDR R1,[R6, #+24]
\ 0000012A 8161 STR R1,[R0, #+24]
425 }
426 ptcb->OSTCBNext = OSTCBFreeList; /* Return TCB to free TCB list */
\ ??OSTaskDel_13:
\ 0000012C 0F48 LDR R0,??OSTaskDel_0+0xC ;; OSTCBFreeList
\ 0000012E 0068 LDR R0,[R0, #+0]
\ 00000130 7061 STR R0,[R6, #+20]
427 OSTCBFreeList = ptcb;
\ 00000132 0E48 LDR R0,??OSTaskDel_0+0xC ;; OSTCBFreeList
\ 00000134 0660 STR R6,[R0, #+0]
428 #if OS_TASK_NAME_SIZE > 1
429 ptcb->OSTCBTaskName[0] = '?'; /* Unknown name */
\ 00000136 4820 MOVS R0,#+72
\ 00000138 3F21 MOVS R1,#+63
\ 0000013A 3154 STRB R1,[R6, R0]
430 ptcb->OSTCBTaskName[1] = OS_ASCII_NUL;
\ 0000013C 4936 ADDS R6,R6,#+73
\ 0000013E 0020 MOVS R0,#+0
\ 00000140 3070 STRB R0,[R6, #+0]
431 #endif
432 OS_EXIT_CRITICAL();
\ 00000142 2000 MOVS R0,R4
\ 00000144 ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
433 OS_Sched(); /* Find new highest priority task */
\ 00000148 ........ _BLF OS_Sched,??OS_Sched??rT
434 return (OS_NO_ERR);
\ 0000014C 0020 MOVS R0,#+0
\ 0000014E 03E0 B ??OSTaskDel_2
435 }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -