📄 os_task.lst
字号:
\ 0000007E 8DF80100 STRB R0,[SP, #+1]
109 bitx_new = (OS_PRIO)(1uL << x_new);
\ 00000082 0120 MOVS R0,#+1
\ 00000084 9DF80310 LDRB R1,[SP, #+3]
\ 00000088 8840 LSLS R0,R0,R1
\ 0000008A 8DF80000 STRB R0,[SP, #+0]
110
111 OSTCBPrioTbl[oldprio] = (OS_TCB *)0; /* Remove TCB from old priority */
\ 0000008E 9DF80800 LDRB R0,[SP, #+8]
\ 00000092 ........ LDR.W R1,??DataTable14
\ 00000096 0022 MOVS R2,#+0
\ 00000098 41F82020 STR R2,[R1, R0, LSL #+2]
112 OSTCBPrioTbl[newprio] = ptcb; /* Place pointer to TCB @ new priority */
\ 0000009C E4B2 UXTB R4,R4 ;; ZeroExt R4,R4,#+24,#+24
\ 0000009E ........ LDR.W R0,??DataTable14
\ 000000A2 40F82470 STR R7,[R0, R4, LSL #+2]
113 y_old = ptcb->OSTCBY;
\ 000000A6 97F83800 LDRB R0,[R7, #+56]
\ 000000AA 8146 MOV R9,R0
114 bity_old = ptcb->OSTCBBitY;
\ 000000AC 97F83A00 LDRB R0,[R7, #+58]
\ 000000B0 8DF80200 STRB R0,[SP, #+2]
115 bitx_old = ptcb->OSTCBBitX;
\ 000000B4 97F83900 LDRB R0,[R7, #+57]
\ 000000B8 8246 MOV R10,R0
116 if ((OSRdyTbl[y_old] & bitx_old) != 0u) { /* If task is ready make it not */
\ 000000BA 5FFA89F9 UXTB R9,R9 ;; ZeroExt R9,R9,#+24,#+24
\ 000000BE ........ LDR.W R0,??DataTable14_2
\ 000000C2 19F80000 LDRB R0,[R9, R0]
\ 000000C6 5FFA8AFA UXTB R10,R10 ;; ZeroExt R10,R10,#+24,#+24
\ 000000CA 1AEA0000 ANDS R0,R10,R0
\ 000000CE C0B2 UXTB R0,R0 ;; ZeroExt R0,R0,#+24,#+24
\ 000000D0 0028 CMP R0,#+0
\ 000000D2 36D0 BEQ.N ??OSTaskChangePrio_5
117 OSRdyTbl[y_old] &= (OS_PRIO)~bitx_old;
\ 000000D4 5FFA89F9 UXTB R9,R9 ;; ZeroExt R9,R9,#+24,#+24
\ 000000D8 ........ LDR.W R0,??DataTable14_2
\ 000000DC 19F80000 LDRB R0,[R9, R0]
\ 000000E0 30EA0A00 BICS R0,R0,R10
\ 000000E4 5FFA89F9 UXTB R9,R9 ;; ZeroExt R9,R9,#+24,#+24
\ 000000E8 ........ LDR.W R1,??DataTable14_2
\ 000000EC 09F80100 STRB R0,[R9, R1]
118 if (OSRdyTbl[y_old] == 0u) {
\ 000000F0 5FFA89F9 UXTB R9,R9 ;; ZeroExt R9,R9,#+24,#+24
\ 000000F4 ........ LDR.W R0,??DataTable14_2
\ 000000F8 19F80000 LDRB R0,[R9, R0]
\ 000000FC 0028 CMP R0,#+0
\ 000000FE 08D1 BNE.N ??OSTaskChangePrio_6
119 OSRdyGrp &= (OS_PRIO)~bity_old;
\ 00000100 ........ LDR.W R0,??DataTable14_3
\ 00000104 0078 LDRB R0,[R0, #+0]
\ 00000106 9DF80210 LDRB R1,[SP, #+2]
\ 0000010A 8843 BICS R0,R0,R1
\ 0000010C ........ LDR.W R1,??DataTable14_3
\ 00000110 0870 STRB R0,[R1, #+0]
120 }
121 OSRdyGrp |= bity_new; /* Make new priority ready to run */
\ ??OSTaskChangePrio_6:
\ 00000112 ........ LDR.W R0,??DataTable14_3
\ 00000116 0078 LDRB R0,[R0, #+0]
\ 00000118 9DF80110 LDRB R1,[SP, #+1]
\ 0000011C 0843 ORRS R0,R1,R0
\ 0000011E ........ LDR.W R1,??DataTable14_3
\ 00000122 0870 STRB R0,[R1, #+0]
122 OSRdyTbl[y_new] |= bitx_new;
\ 00000124 5FFA88F8 UXTB R8,R8 ;; ZeroExt R8,R8,#+24,#+24
\ 00000128 ........ LDR.W R0,??DataTable14_2
\ 0000012C 18F80000 LDRB R0,[R8, R0]
\ 00000130 9DF80010 LDRB R1,[SP, #+0]
\ 00000134 0843 ORRS R0,R1,R0
\ 00000136 5FFA88F8 UXTB R8,R8 ;; ZeroExt R8,R8,#+24,#+24
\ 0000013A ........ LDR.W R1,??DataTable14_2
\ 0000013E 08F80100 STRB R0,[R8, R1]
123 }
124
125 #if (OS_EVENT_EN)
126 pevent = ptcb->OSTCBEventPtr;
\ ??OSTaskChangePrio_5:
\ 00000142 F869 LDR R0,[R7, #+28]
\ 00000144 0500 MOVS R5,R0
127 if (pevent != (OS_EVENT *)0) {
\ 00000146 002D CMP R5,#+0
\ 00000148 29D0 BEQ.N ??OSTaskChangePrio_7
128 pevent->OSEventTbl[y_old] &= (OS_PRIO)~bitx_old; /* Remove old task prio from wait list */
\ 0000014A 5FFA89F9 UXTB R9,R9 ;; ZeroExt R9,R9,#+24,#+24
\ 0000014E 19EB0500 ADDS R0,R9,R5
\ 00000152 C07A LDRB R0,[R0, #+11]
\ 00000154 30EA0A00 BICS R0,R0,R10
\ 00000158 5FFA89F9 UXTB R9,R9 ;; ZeroExt R9,R9,#+24,#+24
\ 0000015C 19EB0501 ADDS R1,R9,R5
\ 00000160 C872 STRB R0,[R1, #+11]
129 if (pevent->OSEventTbl[y_old] == 0u) {
\ 00000162 5FFA89F9 UXTB R9,R9 ;; ZeroExt R9,R9,#+24,#+24
\ 00000166 19EB0500 ADDS R0,R9,R5
\ 0000016A C07A LDRB R0,[R0, #+11]
\ 0000016C 0028 CMP R0,#+0
\ 0000016E 04D1 BNE.N ??OSTaskChangePrio_8
130 pevent->OSEventGrp &= (OS_PRIO)~bity_old;
\ 00000170 A87A LDRB R0,[R5, #+10]
\ 00000172 9DF80210 LDRB R1,[SP, #+2]
\ 00000176 8843 BICS R0,R0,R1
\ 00000178 A872 STRB R0,[R5, #+10]
131 }
132 pevent->OSEventGrp |= bity_new; /* Add new task prio to wait list */
\ ??OSTaskChangePrio_8:
\ 0000017A A87A LDRB R0,[R5, #+10]
\ 0000017C 9DF80110 LDRB R1,[SP, #+1]
\ 00000180 0843 ORRS R0,R1,R0
\ 00000182 A872 STRB R0,[R5, #+10]
133 pevent->OSEventTbl[y_new] |= bitx_new;
\ 00000184 5FFA88F8 UXTB R8,R8 ;; ZeroExt R8,R8,#+24,#+24
\ 00000188 18EB0500 ADDS R0,R8,R5
\ 0000018C C07A LDRB R0,[R0, #+11]
\ 0000018E 9DF80010 LDRB R1,[SP, #+0]
\ 00000192 0843 ORRS R0,R1,R0
\ 00000194 5FFA88F8 UXTB R8,R8 ;; ZeroExt R8,R8,#+24,#+24
\ 00000198 18EB0501 ADDS R1,R8,R5
\ 0000019C C872 STRB R0,[R1, #+11]
134 }
135 #if (OS_EVENT_MULTI_EN > 0u)
136 if (ptcb->OSTCBEventMultiPtr != (OS_EVENT **)0) {
\ ??OSTaskChangePrio_7:
\ 0000019E 386A LDR R0,[R7, #+32]
\ 000001A0 0028 CMP R0,#+0
\ 000001A2 33D0 BEQ.N ??OSTaskChangePrio_9
137 pevents = ptcb->OSTCBEventMultiPtr;
\ 000001A4 386A LDR R0,[R7, #+32]
\ 000001A6 0600 MOVS R6,R0
138 pevent = *pevents;
\ 000001A8 3068 LDR R0,[R6, #+0]
\ 000001AA 0500 MOVS R5,R0
139 while (pevent != (OS_EVENT *)0) {
\ ??OSTaskChangePrio_10:
\ 000001AC 002D CMP R5,#+0
\ 000001AE 2DD0 BEQ.N ??OSTaskChangePrio_9
140 pevent->OSEventTbl[y_old] &= (OS_PRIO)~bitx_old; /* Remove old task prio from wait lists */
\ 000001B0 5FFA89F9 UXTB R9,R9 ;; ZeroExt R9,R9,#+24,#+24
\ 000001B4 19EB0500 ADDS R0,R9,R5
\ 000001B8 C07A LDRB R0,[R0, #+11]
\ 000001BA 30EA0A00 BICS R0,R0,R10
\ 000001BE 5FFA89F9 UXTB R9,R9 ;; ZeroExt R9,R9,#+24,#+24
\ 000001C2 19EB0501 ADDS R1,R9,R5
\ 000001C6 C872 STRB R0,[R1, #+11]
141 if (pevent->OSEventTbl[y_old] == 0u) {
\ 000001C8 5FFA89F9 UXTB R9,R9 ;; ZeroExt R9,R9,#+24,#+24
\ 000001CC 19EB0500 ADDS R0,R9,R5
\ 000001D0 C07A LDRB R0,[R0, #+11]
\ 000001D2 0028 CMP R0,#+0
\ 000001D4 04D1 BNE.N ??OSTaskChangePrio_11
142 pevent->OSEventGrp &= (OS_PRIO)~bity_old;
\ 000001D6 A87A LDRB R0,[R5, #+10]
\ 000001D8 9DF80210 LDRB R1,[SP, #+2]
\ 000001DC 8843 BICS R0,R0,R1
\ 000001DE A872 STRB R0,[R5, #+10]
143 }
144 pevent->OSEventGrp |= bity_new; /* Add new task prio to wait lists */
\ ??OSTaskChangePrio_11:
\ 000001E0 A87A LDRB R0,[R5, #+10]
\ 000001E2 9DF80110 LDRB R1,[SP, #+1]
\ 000001E6 0843 ORRS R0,R1,R0
\ 000001E8 A872 STRB R0,[R5, #+10]
145 pevent->OSEventTbl[y_new] |= bitx_new;
\ 000001EA 5FFA88F8 UXTB R8,R8 ;; ZeroExt R8,R8,#+24,#+24
\ 000001EE 18EB0500 ADDS R0,R8,R5
\ 000001F2 C07A LDRB R0,[R0, #+11]
\ 000001F4 9DF80010 LDRB R1,[SP, #+0]
\ 000001F8 0843 ORRS R0,R1,R0
\ 000001FA 5FFA88F8 UXTB R8,R8 ;; ZeroExt R8,R8,#+24,#+24
\ 000001FE 18EB0501 ADDS R1,R8,R5
\ 00000202 C872 STRB R0,[R1, #+11]
146 pevents++;
\ 00000204 361D ADDS R6,R6,#+4
147 pevent = *pevents;
\ 00000206 3068 LDR R0,[R6, #+0]
\ 00000208 0500 MOVS R5,R0
\ 0000020A CFE7 B.N ??OSTaskChangePrio_10
148 }
149 }
150 #endif
151 #endif
152
153 ptcb->OSTCBPrio = newprio; /* Set new task priority */
\ ??OSTaskChangePrio_9:
\ 0000020C 87F83640 STRB R4,[R7, #+54]
154 ptcb->OSTCBY = y_new;
\ 00000210 87F83880 STRB R8,[R7, #+56]
155 ptcb->OSTCBX = x_new;
\ 00000214 9DF80300 LDRB R0,[SP, #+3]
\ 00000218 87F83700 STRB R0,[R7, #+55]
156 ptcb->OSTCBBitY = bity_new;
\ 0000021C 9DF80100 LDRB R0,[SP, #+1]
\ 00000220 87F83A00 STRB R0,[R7, #+58]
157 ptcb->OSTCBBitX = bitx_new;
\ 00000224 9DF80000 LDRB R0,[SP, #+0]
\ 00000228 87F83900 STRB R0,[R7, #+57]
158 OS_EXIT_CRITICAL();
\ 0000022C 5846 MOV R0,R11
\ 0000022E ........ BL OS_CPU_SR_Restore
159 if (OSRunning == OS_TRUE) {
\ 00000232 ........ LDR.W R0,??DataTable14_4
\ 00000236 0078 LDRB R0,[R0, #+0]
\ 00000238 0128 CMP R0,#+1
\ 0000023A 01D1 BNE.N ??OSTaskChangePrio_12
160 OS_Sched(); /* Find new highest priority task */
\ 0000023C ........ BL OS_Sched
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -