📄 os_task.lst
字号:
\ 00000050 D208 LSRS R2,R2,#+3
\ 00000052 9146 MOV R9,R2
109 x_new = (INT8U)(newprio & 0x07);
\ 00000054 4246 MOV R2,R8
\ 00000056 5207 LSLS R2,R2,#+29
\ 00000058 520F LSRS R2,R2,#+29
\ 0000005A 0492 STR R2,[SP, #+16]
110 bity_new = (INT8U)(1 << y_new);
\ 0000005C 0122 MOVS R2,#+1
\ 0000005E 4B46 MOV R3,R9
\ 00000060 9A40 LSLS R2,R2,R3
\ 00000062 D2B2 UXTB R2,R2
111 bitx_new = (INT8U)(1 << x_new);
\ 00000064 0123 MOVS R3,#+1
\ 00000066 049E LDR R6,[SP, #+16]
\ 00000068 B340 LSLS R3,R3,R6
\ 0000006A DBB2 UXTB R3,R3
112 #else
113 y_new = (INT8U)((newprio >> 4) & 0x0F);
114 x_new = (INT8U)( newprio & 0x0F);
115 bity_new = (INT16U)(1 << y_new);
116 bitx_new = (INT16U)(1 << x_new);
117 #endif
118
119 OSTCBPrioTbl[oldprio] = (OS_TCB *)0; /* Remove TCB from old priority */
\ 0000006C 0026 MOVS R6,#+0
\ 0000006E 2E60 STR R6,[R5, #+0]
120 OSTCBPrioTbl[newprio] = ptcb; /* Place pointer to TCB @ new priority */
\ 00000070 2160 STR R1,[R4, #+0]
121 y_old = ptcb->OSTCBY;
\ 00000072 0C00 MOVS R4,R1
\ 00000074 3234 ADDS R4,R4,#+50
\ 00000076 A578 LDRB R5,[R4, #+2]
\ 00000078 0195 STR R5,[SP, #+4]
122 bity_old = ptcb->OSTCBBitY;
\ 0000007A 2579 LDRB R5,[R4, #+4]
\ 0000007C 0395 STR R5,[SP, #+12]
123 bitx_old = ptcb->OSTCBBitX;
\ 0000007E E578 LDRB R5,[R4, #+3]
\ 00000080 0095 STR R5,[SP, #+0]
\ 00000082 019D LDR R5,[SP, #+4]
\ 00000084 EDB2 UXTB R5,R5
\ 00000086 .... LDR.N R6,??DataTable15 ;; OSRdyTbl
\ 00000088 7519 ADDS R5,R6,R5
\ 0000008A 2E78 LDRB R6,[R5, #+0]
\ 0000008C B346 MOV R11,R6
\ 0000008E 009F LDR R7,[SP, #+0]
\ 00000090 3E42 TST R6,R7
\ 00000092 18D0 BEQ.N ??OSTaskChangePrio_5
124 if ((OSRdyTbl[y_old] & bitx_old) != 0) { /* If task is ready make it not */
125 OSRdyTbl[y_old] &= ~bitx_old;
\ 00000094 3E46 MOV R6,R7
\ 00000096 F743 MVNS R7,R6
\ 00000098 BA46 MOV R10,R7
\ 0000009A 1AEA0B06 ANDS R6,R10,R11
\ 0000009E 2E70 STRB R6,[R5, #+0]
126 if (OSRdyTbl[y_old] == 0) {
\ 000000A0 .... LDR.N R5,??DataTable16 ;; OSRdyGrp
\ 000000A2 03D1 BNE.N ??OSTaskChangePrio_6
127 OSRdyGrp &= ~bity_old;
\ 000000A4 2E78 LDRB R6,[R5, #+0]
\ 000000A6 039F LDR R7,[SP, #+12]
\ 000000A8 BE43 BICS R6,R6,R7
\ 000000AA 2E70 STRB R6,[R5, #+0]
128 }
129 OSRdyGrp |= bity_new; /* Make new priority ready to run */
\ ??OSTaskChangePrio_6:
\ 000000AC 2E78 LDRB R6,[R5, #+0]
\ 000000AE 1700 MOVS R7,R2
\ 000000B0 3743 ORRS R7,R7,R6
\ 000000B2 2F70 STRB R7,[R5, #+0]
130 OSRdyTbl[y_new] |= bitx_new;
\ 000000B4 4D46 MOV R5,R9
\ 000000B6 AB46 MOV R11,R5
\ 000000B8 .... LDR.N R5,??DataTable15 ;; OSRdyTbl
\ 000000BA 1BEB0505 ADDS R5,R11,R5
\ 000000BE 2E78 LDRB R6,[R5, #+0]
\ 000000C0 1F00 MOVS R7,R3
\ 000000C2 3743 ORRS R7,R7,R6
\ 000000C4 2F70 STRB R7,[R5, #+0]
131 }
132
133 #if (OS_EVENT_EN)
134 pevent = ptcb->OSTCBEventPtr;
\ ??OSTaskChangePrio_5:
\ 000000C6 CD69 LDR R5,[R1, #+28]
135 if (pevent != (OS_EVENT *)0) {
\ 000000C8 4E46 MOV R6,R9
\ 000000CA B346 MOV R11,R6
\ 000000CC 039F LDR R7,[SP, #+12]
\ 000000CE FE43 MVNS R6,R7
\ 000000D0 8DF80860 STRB R6,[SP, #+8]
\ 000000D4 009E LDR R6,[SP, #+0]
\ 000000D6 F743 MVNS R7,R6
\ 000000D8 BA46 MOV R10,R7
\ 000000DA 002D CMP R5,#+0
\ 000000DC 18D0 BEQ.N ??OSTaskChangePrio_7
136 pevent->OSEventTbl[y_old] &= ~bitx_old; /* Remove old task prio from wait list */
\ 000000DE 019E LDR R6,[SP, #+4]
\ 000000E0 F6B2 UXTB R6,R6
\ 000000E2 AE19 ADDS R6,R5,R6
\ 000000E4 F77A LDRB R7,[R6, #+11]
\ 000000E6 1AEA0707 ANDS R7,R10,R7
\ 000000EA F772 STRB R7,[R6, #+11]
137 if (pevent->OSEventTbl[y_old] == 0) {
\ 000000EC F67A LDRB R6,[R6, #+11]
\ 000000EE 002E CMP R6,#+0
\ 000000F0 04D1 BNE.N ??OSTaskChangePrio_8
138 pevent->OSEventGrp &= ~bity_old;
\ 000000F2 AE7A LDRB R6,[R5, #+10]
\ 000000F4 9DF80870 LDRB R7,[SP, #+8]
\ 000000F8 3740 ANDS R7,R7,R6
\ 000000FA AF72 STRB R7,[R5, #+10]
139 }
140 pevent->OSEventGrp |= bity_new; /* Add new task prio to wait list */
\ ??OSTaskChangePrio_8:
\ 000000FC AE7A LDRB R6,[R5, #+10]
\ 000000FE 1700 MOVS R7,R2
\ 00000100 3743 ORRS R7,R7,R6
\ 00000102 AF72 STRB R7,[R5, #+10]
141 pevent->OSEventTbl[y_new] |= bitx_new;
\ 00000104 1BEB0505 ADDS R5,R11,R5
\ 00000108 EE7A LDRB R6,[R5, #+11]
\ 0000010A 1F00 MOVS R7,R3
\ 0000010C 3743 ORRS R7,R7,R6
\ 0000010E EF72 STRB R7,[R5, #+11]
142 }
143 #if (OS_EVENT_MULTI_EN > 0)
144 if (ptcb->OSTCBEventMultiPtr != (OS_EVENT **)0) {
\ ??OSTaskChangePrio_7:
\ 00000110 0D6A LDR R5,[R1, #+32]
\ 00000112 002D CMP R5,#+0
\ 00000114 1FD0 BEQ.N ??OSTaskChangePrio_9
145 pevents = ptcb->OSTCBEventMultiPtr;
\ 00000116 2946 MOV R1,R5
146 pevent = *pevents;
\ 00000118 0D68 LDR R5,[R1, #+0]
\ 0000011A 1AE0 B.N ??OSTaskChangePrio_10
147 while (pevent != (OS_EVENT *)0) {
148 pevent->OSEventTbl[y_old] &= ~bitx_old; /* Remove old task prio from wait lists */
\ ??OSTaskChangePrio_11:
\ 0000011C 019E LDR R6,[SP, #+4]
\ 0000011E F6B2 UXTB R6,R6
\ 00000120 AE19 ADDS R6,R5,R6
\ 00000122 F77A LDRB R7,[R6, #+11]
\ 00000124 1AEA0707 ANDS R7,R10,R7
\ 00000128 F772 STRB R7,[R6, #+11]
149 if (pevent->OSEventTbl[y_old] == 0) {
\ 0000012A F67A LDRB R6,[R6, #+11]
\ 0000012C 002E CMP R6,#+0
\ 0000012E 04D1 BNE.N ??OSTaskChangePrio_12
150 pevent->OSEventGrp &= ~bity_old;
\ 00000130 AE7A LDRB R6,[R5, #+10]
\ 00000132 9DF80870 LDRB R7,[SP, #+8]
\ 00000136 3740 ANDS R7,R7,R6
\ 00000138 AF72 STRB R7,[R5, #+10]
151 }
152 pevent->OSEventGrp |= bity_new; /* Add new task prio to wait lists */
\ ??OSTaskChangePrio_12:
\ 0000013A AE7A LDRB R6,[R5, #+10]
\ 0000013C 1700 MOVS R7,R2
\ 0000013E 3743 ORRS R7,R7,R6
\ 00000140 AF72 STRB R7,[R5, #+10]
153 pevent->OSEventTbl[y_new] |= bitx_new;
\ 00000142 1BEB0505 ADDS R5,R11,R5
\ 00000146 EE7A LDRB R6,[R5, #+11]
\ 00000148 1F00 MOVS R7,R3
\ 0000014A 3743 ORRS R7,R7,R6
\ 0000014C EF72 STRB R7,[R5, #+11]
154 pevents++;
\ 0000014E 091D ADDS R1,R1,#+4
155 pevent = *pevents;
\ 00000150 0D68 LDR R5,[R1, #+0]
156 }
\ ??OSTaskChangePrio_10:
\ 00000152 002D CMP R5,#+0
\ 00000154 E2D1 BNE.N ??OSTaskChangePrio_11
157 }
158 #endif
159 #endif
160
161 ptcb->OSTCBPrio = newprio; /* Set new task priority */
\ ??OSTaskChangePrio_9:
\ 00000156 84F80080 STRB R8,[R4, #+0]
162 ptcb->OSTCBY = y_new;
\ 0000015A 4946 MOV R1,R9
\ 0000015C A170 STRB R1,[R4, #+2]
163 ptcb->OSTCBX = x_new;
\ 0000015E 0499 LDR R1,[SP, #+16]
\ 00000160 6170 STRB R1,[R4, #+1]
164 ptcb->OSTCBBitY = bity_new;
\ 00000162 2271 STRB R2,[R4, #+4]
165 ptcb->OSTCBBitX = bitx_new;
\ 00000164 E370 STRB R3,[R4, #+3]
166 OS_EXIT_CRITICAL();
\ 00000166 ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rT
167 if (OSRunning == OS_TRUE) {
\ 0000016A .... LDR.N R0,??DataTable17 ;; OSRunning
\ 0000016C 0078 LDRB R0,[R0, #+0]
\ 0000016E 0128 CMP R0,#+1
\ 00000170 01D1 BNE.N ??OSTaskChangePrio_13
168 OS_Sched(); /* Find new highest priority task */
\ 00000172 ........ _BLF OS_Sched,??OS_Sched??rT
169 }
170 return (OS_ERR_NONE);
\ ??OSTaskChangePrio_13:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -