📄 emac.lst
字号:
\ 0000005E 0968 LDR R1,[R1, #+0]
\ 00000060 0818 ADDS R0,R1,R0
\ 00000062 0500 MOVS R5,R0
227 TxtdList[i].addr = val & 0xFFFFFFF8;
\ 00000064 0820 MOVS R0,#+8
\ 00000066 6043 MULS R0,R4,R0
\ 00000068 .... LDR R1,??DataTable24 ;; TxtdList
\ 0000006A 0968 LDR R1,[R1, #+0]
\ 0000006C EA08 LSRS R2,R5,#+3
\ 0000006E D200 LSLS R2,R2,#+3
\ 00000070 0A50 STR R2,[R1, R0]
228 TxtdList[i].U_Status.status = 0;
\ 00000072 0820 MOVS R0,#+8
\ 00000074 6043 MULS R0,R4,R0
\ 00000076 .... LDR R1,??DataTable24 ;; TxtdList
\ 00000078 0968 LDR R1,[R1, #+0]
\ 0000007A 0818 ADDS R0,R1,R0
\ 0000007C 0021 MOVS R1,#+0
\ 0000007E 4160 STR R1,[R0, #+4]
229 }
\ 00000080 641C ADDS R4,R4,#+1
\ 00000082 E6E7 B ??AT91F_EmacEntry_3
230 // Set the WRAP bit at the end of the list descriptor
231 TxtdList[NB_TX_BUFFERS-1].U_Status.S_Status.Wrap = 1;
\ ??AT91F_EmacEntry_4:
\ 00000084 .... LDR R0,??DataTable24 ;; TxtdList
\ 00000086 0068 LDR R0,[R0, #+0]
\ 00000088 .... LDR R1,??DataTable24 ;; TxtdList
\ 0000008A 0968 LDR R1,[R1, #+0]
\ 0000008C C968 LDR R1,[R1, #+12]
\ 0000008E 8022 MOVS R2,#+128
\ 00000090 D205 LSLS R2,R2,#+23 ;; #+1073741824
\ 00000092 0A43 ORRS R2,R2,R1
\ 00000094 C260 STR R2,[R0, #+12]
232
233 return(AT91F_EMACInit(AT91C_BASE_EMAC, (unsigned int) RxtdList, (unsigned int) TxtdList));
\ 00000096 .... LDR R0,??DataTable24 ;; TxtdList
\ 00000098 0268 LDR R2,[R0, #+0]
\ 0000009A .... LDR R0,??DataTable10 ;; RxtdList
\ 0000009C 0168 LDR R1,[R0, #+0]
\ 0000009E .... LDR R0,??DataTable19 ;; 0xfffdc000
\ 000000A0 ........ BL AT91F_EMACInit
\ 000000A4 30BC POP {R4,R5}
\ 000000A6 02BC POP {R1}
\ 000000A8 0847 BX R1 ;; return
\ 000000AA C046 Nop
\ ??AT91F_EmacEntry_2:
\ 000000AC ........ DC32 RxPacket
\ 000000B0 ........ DC32 TxPacket
234 }
235
236
237 //*----------------------------------------------------------------------------
238 //* \fn AT91F_TransmitPacket
239 //* \brief Send a packet
240 //*----------------------------------------------------------------------------
\ In segment CODE, align 4, keep-with-next
241 int AT91F_TransmitPacket(char *pData, unsigned int length)
242 {
\ AT91F_TransmitPacket:
\ 00000000 30B5 PUSH {R4,R5,LR}
\ 00000002 81B0 SUB SP,SP,#+4
\ 00000004 0200 MOVS R2,R0
243 AT91PS_EMAC pEmac = (AT91PS_EMAC)AT91C_BASE_EMAC;
\ 00000006 .... LDR R0,??DataTable19 ;; 0xfffdc000
\ 00000008 0300 MOVS R3,R0
244 volatile int intstatus = pEmac->EMAC_TSR;
\ 0000000A 5869 LDR R0,[R3, #+20]
\ 0000000C 0090 STR R0,[SP, #+0]
245
246 if ((TxtdList[TxBuffIndex].U_Status.S_Status.BuffUsed == 0))
\ 0000000E 2948 LDR R0,??AT91F_TransmitPacket_0 ;; TxBuffIndex
\ 00000010 0068 LDR R0,[R0, #+0]
\ 00000012 0824 MOVS R4,#+8
\ 00000014 6043 MULS R0,R4,R0
\ 00000016 .... LDR R4,??DataTable24 ;; TxtdList
\ 00000018 2468 LDR R4,[R4, #+0]
\ 0000001A 2018 ADDS R0,R4,R0
\ 0000001C 4068 LDR R0,[R0, #+4]
\ 0000001E C00F LSRS R0,R0,#+31
\ 00000020 0028 CMP R0,#+0
\ 00000022 42D1 BNE ??AT91F_TransmitPacket_1
247 {
248 TxtdList[TxBuffIndex].addr = (unsigned int)pData;
\ 00000024 2348 LDR R0,??AT91F_TransmitPacket_0 ;; TxBuffIndex
\ 00000026 0068 LDR R0,[R0, #+0]
\ 00000028 0824 MOVS R4,#+8
\ 0000002A 6043 MULS R0,R4,R0
\ 0000002C .... LDR R4,??DataTable24 ;; TxtdList
\ 0000002E 2468 LDR R4,[R4, #+0]
\ 00000030 2250 STR R2,[R4, R0]
249 TxtdList[TxBuffIndex].U_Status.S_Status.Length = length;
\ 00000032 2048 LDR R0,??AT91F_TransmitPacket_0 ;; TxBuffIndex
\ 00000034 0068 LDR R0,[R0, #+0]
\ 00000036 0824 MOVS R4,#+8
\ 00000038 6043 MULS R0,R4,R0
\ 0000003A .... LDR R4,??DataTable24 ;; TxtdList
\ 0000003C 2468 LDR R4,[R4, #+0]
\ 0000003E 2018 ADDS R0,R4,R0
\ 00000040 1C4C LDR R4,??AT91F_TransmitPacket_0 ;; TxBuffIndex
\ 00000042 2468 LDR R4,[R4, #+0]
\ 00000044 0825 MOVS R5,#+8
\ 00000046 6C43 MULS R4,R5,R4
\ 00000048 .... LDR R5,??DataTable24 ;; TxtdList
\ 0000004A 2D68 LDR R5,[R5, #+0]
\ 0000004C 2C19 ADDS R4,R5,R4
\ 0000004E 6468 LDR R4,[R4, #+4]
\ 00000050 E40A LSRS R4,R4,#+11
\ 00000052 E402 LSLS R4,R4,#+11
\ 00000054 4D05 LSLS R5,R1,#+21 ;; ZeroExtS R5,R1,#+21,#+21
\ 00000056 6D0D LSRS R5,R5,#+21
\ 00000058 2543 ORRS R5,R5,R4
\ 0000005A 4560 STR R5,[R0, #+4]
250 TxtdList[TxBuffIndex].U_Status.S_Status.LastBuff = 1;
\ 0000005C 1548 LDR R0,??AT91F_TransmitPacket_0 ;; TxBuffIndex
\ 0000005E 0068 LDR R0,[R0, #+0]
\ 00000060 0824 MOVS R4,#+8
\ 00000062 6043 MULS R0,R4,R0
\ 00000064 .... LDR R4,??DataTable24 ;; TxtdList
\ 00000066 2468 LDR R4,[R4, #+0]
\ 00000068 2018 ADDS R0,R4,R0
\ 0000006A 124C LDR R4,??AT91F_TransmitPacket_0 ;; TxBuffIndex
\ 0000006C 2468 LDR R4,[R4, #+0]
\ 0000006E 0825 MOVS R5,#+8
\ 00000070 6C43 MULS R4,R5,R4
\ 00000072 .... LDR R5,??DataTable24 ;; TxtdList
\ 00000074 2D68 LDR R5,[R5, #+0]
\ 00000076 2C19 ADDS R4,R5,R4
\ 00000078 6468 LDR R4,[R4, #+4]
\ 0000007A 8025 MOVS R5,#+128
\ 0000007C 2D02 LSLS R5,R5,#+8 ;; #+32768
\ 0000007E 2543 ORRS R5,R5,R4
\ 00000080 4560 STR R5,[R0, #+4]
251 if (TxBuffIndex == (NB_TX_BUFFERS - 1))
\ 00000082 0C48 LDR R0,??AT91F_TransmitPacket_0 ;; TxBuffIndex
\ 00000084 0068 LDR R0,[R0, #+0]
\ 00000086 0128 CMP R0,#+1
\ 00000088 03D1 BNE ??AT91F_TransmitPacket_2
252 TxBuffIndex = 0;
\ 0000008A 0A48 LDR R0,??AT91F_TransmitPacket_0 ;; TxBuffIndex
\ 0000008C 0024 MOVS R4,#+0
\ 0000008E 0460 STR R4,[R0, #+0]
\ 00000090 04E0 B ??AT91F_TransmitPacket_3
253 else
254 TxBuffIndex ++;
\ ??AT91F_TransmitPacket_2:
\ 00000092 0848 LDR R0,??AT91F_TransmitPacket_0 ;; TxBuffIndex
\ 00000094 074C LDR R4,??AT91F_TransmitPacket_0 ;; TxBuffIndex
\ 00000096 2468 LDR R4,[R4, #+0]
\ 00000098 641C ADDS R4,R4,#+1
\ 0000009A 0460 STR R4,[R0, #+0]
255 }
256 else
257 return 2;
258 pEmac->EMAC_NCR |= AT91C_EMAC_TSTART;
\ ??AT91F_TransmitPacket_3:
\ 0000009C 1868 LDR R0,[R3, #+0]
\ 0000009E 8024 MOVS R4,#+128
\ 000000A0 A400 LSLS R4,R4,#+2 ;; #+512
\ 000000A2 0443 ORRS R4,R4,R0
\ 000000A4 1C60 STR R4,[R3, #+0]
259 return 0;
\ 000000A6 0020 MOVS R0,#+0
\ 000000A8 00E0 B ??AT91F_TransmitPacket_4
\ ??AT91F_TransmitPacket_1:
\ 000000AA 0220 MOVS R0,#+2
\ ??AT91F_TransmitPacket_4:
\ 000000AC 01B0 ADD SP,SP,#+4
\ 000000AE 30BC POP {R4,R5}
\ 000000B0 02BC POP {R1}
\ 000000B2 0847 BX R1 ;; return
\ ??AT91F_TransmitPacket_0:
\ 000000B4 ........ DC32 TxBuffIndex
260 }
261
262
263 //*----------------------------------------------------------------------------
264 //* \fn AT75F_EMACInt
265 //* \brief Initialise Emac to receive packets
266 //*----------------------------------------------------------------------------
\ In segment CODE, align 4, keep-with-next
267 void AT91F_EMAC_HANDLER (void)
268 {
\ AT91F_EMAC_HANDLER:
\ 00000000 70B5 PUSH {R4-R6,LR}
\ 00000002 87B0 SUB SP,SP,#+28
269 AT91S_IPheader IpHeader;
270 AT91PS_EMAC pEmac = (AT91PS_EMAC)AT91C_BASE_EMAC;
\ 00000004 .... LDR R0,??DataTable19 ;; 0xfffdc000
\ 00000006 0400 MOVS R4,R0
271 unsigned int intstatus;
272 unsigned int i;
273
274 intstatus = pEmac->EMAC_ISR;
\ 00000008 606A LDR R0,[R4, #+36]
\ 0000000A 0500 MOVS R5,R0
275
276 if (intstatus & AT91C_EMAC_RCOMP)
\ 0000000C 2800 MOVS R0,R5
\ 0000000E 8007 LSLS R0,R0,#+30
\ 00000010 13D5 BPL ??AT91F_EMAC_HANDLER_0
277 {
278 LED_TurnOn(LED1);
\ 00000012 8020 MOVS R0,#+128
\ 00000014 0003 LSLS R0,R0,#+12 ;; #+524288
\ 00000016 ........ _BLF LED_TurnOn,??LED_TurnOn??rT
279 if (AT91F_ProcessEmacPacket(&IpHeader) == AT91C_IPPACKET)
\ 0000001A 6846 MOV R0,SP
\ 0000001C ........ BL AT91F_ProcessEmacPacket
\ 00000020 0128 CMP R0,#+1
\ 00000022 02D1 BNE ??AT91F_EMAC_HANDLER_1
280 AT91F_DisplayIpPacket(&IpHeader);
\ 00000024 6846 MOV R0,SP
\ 00000026 ........ _BLF AT91F_DisplayIpPacket,??AT91F_DisplayIpPacket??rT
281 pEmac->EMAC_RSR |= AT91C_EMAC_REC;
\ ??AT91F_EMAC_HANDLER_1:
\ 0000002A 206A LDR R0,[R4, #+32]
\ 0000002C 0221 MOVS R1,#+2
\ 0000002E 0143 ORRS R1,R1,R0
\ 00000030 2162 STR R1,[R4, #+32]
282 LED_TurnOff(LED1);
\ 00000032 8020 MOVS R0,#+128
\ 00000034 0003 LSLS R0,R0,#+12 ;; #+524288
\ 00000036 ........ _BLF LED_TurnOff,??LED_TurnOff??rT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -