📄 os_dcc.lst
字号:
162 | OS_DCC_OP_GET_CAPS)) != 0) {
\ ??OSDCC_Handler_3:
\ 0000005C 18029FE5 LDR R0,??OSDCC_Handler_2 ;; OSDCC_Cmd
\ 00000060 000090E5 LDR R0,[R0, #+0]
\ 00000064 F00610E3 TST R0,#0xF000000
\ 00000068 0600000A BEQ ??OSDCC_Handler_4
163 OSDCC_ItemCnt = (OSDCC_Cmd >> 2) & 0xffff;
\ 0000006C 10029FE5 LDR R0,??OSDCC_Handler_2+0x8 ;; OSDCC_ItemCnt
\ 00000070 04129FE5 LDR R1,??OSDCC_Handler_2 ;; OSDCC_Cmd
\ 00000074 001091E5 LDR R1,[R1, #+0]
\ 00000078 0117B0E1 LSLS R1,R1,#+14
\ 0000007C 2118B0E1 LSRS R1,R1,#+16
\ 00000080 001080E5 STR R1,[R0, #+0]
\ 00000084 3D0000EA B ??OSDCC_Handler_5
164 } else { /* Data will be written; initialize OSDCC_Data */
165 if ((OSDCC_Cmd & OS_DCC_OP_WRITE_U32) != 0) {
\ ??OSDCC_Handler_4:
\ 00000088 EC019FE5 LDR R0,??OSDCC_Handler_2 ;; OSDCC_Cmd
\ 0000008C 000090E5 LDR R0,[R0, #+0]
\ 00000090 400510E3 TST R0,#0x10000000
\ 00000094 0900000A BEQ ??OSDCC_Handler_6
166 OSDCC_Data |= (OSDCC_Cmd << 14) & 0xffff0000;
\ 00000098 E8019FE5 LDR R0,??OSDCC_Handler_2+0xC ;; OSDCC_Data
\ 0000009C E4119FE5 LDR R1,??OSDCC_Handler_2+0xC ;; OSDCC_Data
\ 000000A0 001091E5 LDR R1,[R1, #+0]
\ 000000A4 D0219FE5 LDR R2,??OSDCC_Handler_2 ;; OSDCC_Cmd
\ 000000A8 002092E5 LDR R2,[R2, #+0]
\ 000000AC 0227B0E1 LSLS R2,R2,#+14
\ 000000B0 2228B0E1 LSRS R2,R2,#+16
\ 000000B4 021891E1 ORRS R1,R1,R2, LSL #+16
\ 000000B8 001080E5 STR R1,[R0, #+0]
\ 000000BC 050000EA B ??OSDCC_Handler_7
167 } else {
168 OSDCC_Data = (OSDCC_Cmd >> 2) & 0xffff;
\ ??OSDCC_Handler_6:
\ 000000C0 C0019FE5 LDR R0,??OSDCC_Handler_2+0xC ;; OSDCC_Data
\ 000000C4 B0119FE5 LDR R1,??OSDCC_Handler_2 ;; OSDCC_Cmd
\ 000000C8 001091E5 LDR R1,[R1, #+0]
\ 000000CC 0117B0E1 LSLS R1,R1,#+14
\ 000000D0 2118B0E1 LSRS R1,R1,#+16
\ 000000D4 001080E5 STR R1,[R0, #+0]
169 }
170 /* Write a single byte */
171 if ((OSDCC_Cmd & OS_DCC_OP_WRITE_U8) != 0) {
\ ??OSDCC_Handler_7:
\ 000000D8 9C019FE5 LDR R0,??OSDCC_Handler_2 ;; OSDCC_Cmd
\ 000000DC 000090E5 LDR R0,[R0, #+0]
\ 000000E0 400410E3 TST R0,#0x40000000
\ 000000E4 0900000A BEQ ??OSDCC_Handler_8
172 *(INT8U *)OSDCC_Addr = OSDCC_Data;
\ 000000E8 90019FE5 LDR R0,??OSDCC_Handler_2+0x4 ;; OSDCC_Addr
\ 000000EC 000090E5 LDR R0,[R0, #+0]
\ 000000F0 90119FE5 LDR R1,??OSDCC_Handler_2+0xC ;; OSDCC_Data
\ 000000F4 001091E5 LDR R1,[R1, #+0]
\ 000000F8 0010C0E5 STRB R1,[R0, #+0]
173 OSDCC_Addr += 1;
\ 000000FC 7C019FE5 LDR R0,??OSDCC_Handler_2+0x4 ;; OSDCC_Addr
\ 00000100 78119FE5 LDR R1,??OSDCC_Handler_2+0x4 ;; OSDCC_Addr
\ 00000104 001091E5 LDR R1,[R1, #+0]
\ 00000108 011091E2 ADDS R1,R1,#+1
\ 0000010C 001080E5 STR R1,[R0, #+0]
174 }
175 /* Write two bytes */
176 if ((OSDCC_Cmd & OS_DCC_OP_WRITE_U16) != 0) {
\ ??OSDCC_Handler_8:
\ 00000110 64019FE5 LDR R0,??OSDCC_Handler_2 ;; OSDCC_Cmd
\ 00000114 000090E5 LDR R0,[R0, #+0]
\ 00000118 800510E3 TST R0,#0x20000000
\ 0000011C 0900000A BEQ ??OSDCC_Handler_9
177 *(INT16U *)OSDCC_Addr = OSDCC_Data;
\ 00000120 58019FE5 LDR R0,??OSDCC_Handler_2+0x4 ;; OSDCC_Addr
\ 00000124 000090E5 LDR R0,[R0, #+0]
\ 00000128 58119FE5 LDR R1,??OSDCC_Handler_2+0xC ;; OSDCC_Data
\ 0000012C 001091E5 LDR R1,[R1, #+0]
\ 00000130 B010C0E1 STRH R1,[R0, #+0]
178 OSDCC_Addr += 2;
\ 00000134 44019FE5 LDR R0,??OSDCC_Handler_2+0x4 ;; OSDCC_Addr
\ 00000138 40119FE5 LDR R1,??OSDCC_Handler_2+0x4 ;; OSDCC_Addr
\ 0000013C 001091E5 LDR R1,[R1, #+0]
\ 00000140 021091E2 ADDS R1,R1,#+2
\ 00000144 001080E5 STR R1,[R0, #+0]
179 }
180 /* Write four bytes */
181 if ((OSDCC_Cmd & OS_DCC_OP_WRITE_U32) != 0) {
\ ??OSDCC_Handler_9:
\ 00000148 2C019FE5 LDR R0,??OSDCC_Handler_2 ;; OSDCC_Cmd
\ 0000014C 000090E5 LDR R0,[R0, #+0]
\ 00000150 400510E3 TST R0,#0x10000000
\ 00000154 0900000A BEQ ??OSDCC_Handler_5
182 *(INT32U *)OSDCC_Addr =OSDCC_Data;
\ 00000158 20019FE5 LDR R0,??OSDCC_Handler_2+0x4 ;; OSDCC_Addr
\ 0000015C 000090E5 LDR R0,[R0, #+0]
\ 00000160 20119FE5 LDR R1,??OSDCC_Handler_2+0xC ;; OSDCC_Data
\ 00000164 001091E5 LDR R1,[R1, #+0]
\ 00000168 001080E5 STR R1,[R0, #+0]
183 OSDCC_Addr += 4;
\ 0000016C 0C019FE5 LDR R0,??OSDCC_Handler_2+0x4 ;; OSDCC_Addr
\ 00000170 08119FE5 LDR R1,??OSDCC_Handler_2+0x4 ;; OSDCC_Addr
\ 00000174 001091E5 LDR R1,[R1, #+0]
\ 00000178 041091E2 ADDS R1,R1,#+4
\ 0000017C 001080E5 STR R1,[R0, #+0]
184 }
185 }
186 OS_EXIT_CRITICAL();
\ ??OSDCC_Handler_5:
\ 00000180 0500B0E1 MOVS R0,R5
\ 00000184 ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rA
187 return;
\ 00000188 3A0000EA B ??OSDCC_Handler_10
188 }
189 OSDCC_Addr = reg_val; /* An address was received; OSDCC_Addr is updated */
\ ??OSDCC_Handler_1:
\ 0000018C EC009FE5 LDR R0,??OSDCC_Handler_2+0x4 ;; OSDCC_Addr
\ 00000190 004080E5 STR R4,[R0, #+0]
190 }
191 /* Determine whether data must be read */
192 if (OSDCC_ItemCnt != 0) {
\ ??OSDCC_Handler_0:
\ 00000194 E8009FE5 LDR R0,??OSDCC_Handler_2+0x8 ;; OSDCC_ItemCnt
\ 00000198 000090E5 LDR R0,[R0, #+0]
\ 0000019C 000050E3 CMP R0,#+0
\ 000001A0 3200000A BEQ ??OSDCC_Handler_11
193 /* Confirm that the comms data write register... */
194 /* ...is free from the processor point of view */
195 if ((OSDCC_ReadCtrl() & OS_DCC_COMM_CTRL_WR) == 0) {
\ 000001A4 ........ BL OSDCC_ReadCtrl
\ 000001A8 020010E3 TST R0,#0x2
\ 000001AC 2F00001A BNE ??OSDCC_Handler_11
196 reg_val = (OS_DCC_CONFIG | OS_DCC_SIGNATURE);
\ 000001B0 D4009FE5 LDR R0,??OSDCC_Handler_2+0x10 ;; 0xffffffff91ca0077
\ 000001B4 0040B0E1 MOVS R4,R0
197 /* Read a single byte */
198 if ((OSDCC_Cmd & OS_DCC_OP_READ_U8) != 0) {
\ 000001B8 BC009FE5 LDR R0,??OSDCC_Handler_2 ;; OSDCC_Cmd
\ 000001BC 000090E5 LDR R0,[R0, #+0]
\ 000001C0 400610E3 TST R0,#0x4000000
\ 000001C4 0800000A BEQ ??OSDCC_Handler_12
199 reg_val = *(INT8U *)OSDCC_Addr;
\ 000001C8 B0009FE5 LDR R0,??OSDCC_Handler_2+0x4 ;; OSDCC_Addr
\ 000001CC 000090E5 LDR R0,[R0, #+0]
\ 000001D0 0000D0E5 LDRB R0,[R0, #+0]
\ 000001D4 0040B0E1 MOVS R4,R0
200 OSDCC_Addr += 1;
\ 000001D8 A0009FE5 LDR R0,??OSDCC_Handler_2+0x4 ;; OSDCC_Addr
\ 000001DC 9C109FE5 LDR R1,??OSDCC_Handler_2+0x4 ;; OSDCC_Addr
\ 000001E0 001091E5 LDR R1,[R1, #+0]
\ 000001E4 011091E2 ADDS R1,R1,#+1
\ 000001E8 001080E5 STR R1,[R0, #+0]
201 }
202 /* Read two bytes */
203 if ((OSDCC_Cmd & OS_DCC_OP_READ_U16) != 0) {
\ ??OSDCC_Handler_12:
\ 000001EC 88009FE5 LDR R0,??OSDCC_Handler_2 ;; OSDCC_Cmd
\ 000001F0 000090E5 LDR R0,[R0, #+0]
\ 000001F4 800710E3 TST R0,#0x2000000
\ 000001F8 0800000A BEQ ??OSDCC_Handler_13
204 reg_val = *(INT16U *)OSDCC_Addr;
\ 000001FC 7C009FE5 LDR R0,??OSDCC_Handler_2+0x4 ;; OSDCC_Addr
\ 00000200 000090E5 LDR R0,[R0, #+0]
\ 00000204 B000D0E1 LDRH R0,[R0, #+0]
\ 00000208 0040B0E1 MOVS R4,R0
205 OSDCC_Addr += 2;
\ 0000020C 6C009FE5 LDR R0,??OSDCC_Handler_2+0x4 ;; OSDCC_Addr
\ 00000210 68109FE5 LDR R1,??OSDCC_Handler_2+0x4 ;; OSDCC_Addr
\ 00000214 001091E5 LDR R1,[R1, #+0]
\ 00000218 021091E2 ADDS R1,R1,#+2
\ 0000021C 001080E5 STR R1,[R0, #+0]
206 }
207 /* Read four bytes */
208 if ((OSDCC_Cmd & OS_DCC_OP_READ_U32) != 0) {
\ ??OSDCC_Handler_13:
\ 00000220 54009FE5 LDR R0,??OSDCC_Handler_2 ;; OSDCC_Cmd
\ 00000224 000090E5 LDR R0,[R0, #+0]
\ 00000228 400710E3 TST R0,#0x1000000
\ 0000022C 0800000A BEQ ??OSDCC_Handler_14
209 reg_val = *(INT32U *)OSDCC_Addr;
\ 00000230 48009FE5 LDR R0,??OSDCC_Handler_2+0x4 ;; OSDCC_Addr
\ 00000234 000090E5 LDR R0,[R0, #+0]
\ 00000238 000090E5 LDR R0,[R0, #+0]
\ 0000023C 0040B0E1 MOVS R4,R0
210 OSDCC_Addr += 4;
\ 00000240 38009FE5 LDR R0,??OSDCC_Handler_2+0x4 ;; OSDCC_Addr
\ 00000244 34109FE5 LDR R1,??OSDCC_Handler_2+0x4 ;; OSDCC_Addr
\ 00000248 001091E5 LDR R1,[R1, #+0]
\ 0000024C 041091E2 ADDS R1,R1,#+4
\ 00000250 001080E5 STR R1,[R0, #+0]
211 }
212
213 OSDCC_Write(reg_val); /* Place data in the comms data write register */
\ ??OSDCC_Handler_14:
\ 00000254 0400B0E1 MOVS R0,R4
\ 00000258 ........ BL OSDCC_Write
214 OSDCC_ItemCnt--; /* Decrement the number of items to be read */
\ 0000025C 20009FE5 LDR R0,??OSDCC_Handler_2+0x8 ;; OSDCC_ItemCnt
\ 00000260 1C109FE5 LDR R1,??OSDCC_Handler_2+0x8 ;; OSDCC_ItemCnt
\ 00000264 001091E5 LDR R1,[R1, #+0]
\ 00000268 011051E2 SUBS R1,R1,#+1
\ 0000026C 001080E5 STR R1,[R0, #+0]
215 }
216 }
217 OS_EXIT_CRITICAL();
\ ??OSDCC_Handler_11:
\ 00000270 0500B0E1 MOVS R0,R5
\ 00000274 ........ _BLF OS_CPU_SR_Restore,??OS_CPU_SR_Restore??rA
218 }
\ ??OSDCC_Handler_10:
\ 00000278 3080BDE8 POP {R4,R5,PC} ;; return
\ ??OSDCC_Handler_2:
\ 0000027C ........ DC32 OSDCC_Cmd
\ 00000280 ........ DC32 OSDCC_Addr
\ 00000284 ........ DC32 OSDCC_ItemCnt
\ 00000288 ........ DC32 OSDCC_Data
\ 0000028C 7700CA91 DC32 0xffffffff91ca0077
219
220 #endif
Maximum stack usage in bytes:
Function CSTACK
-------- ------
OSDCC_Handler 12
OSDCC_Read 0
OSDCC_ReadCtrl 0
OSDCC_Write 0
Segment part sizes:
Function/Label Bytes
-------------- -----
OSDCC_Cmd 4
OSDCC_Addr 4
OSDCC_ItemCnt 4
OSDCC_Data 4
OSDCC_ReadCtrl 8
OSDCC_Read 8
OSDCC_Write 8
OSDCC_Handler 656
Others 36
704 bytes in segment CODE
16 bytes in segment DATA_Z
12 bytes in segment INITTAB
680 bytes of CODE memory (+ 36 bytes shared)
16 bytes of DATA memory
Errors: none
Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -