📄 emac.lst
字号:
283 }
284
285 if(pEmac->EMAC_TSR & AT91C_EMAC_COMP == AT91C_EMAC_COMP)
\ ??AT91F_EMAC_HANDLER_0:
\ 0000003A 6069 LDR R0,[R4, #+20]
\ 0000003C C007 LSLS R0,R0,#+31
\ 0000003E 36D5 BPL ??AT91F_EMAC_HANDLER_2
286 {
287 LED_TurnOn(LED2);
\ 00000040 8020 MOVS R0,#+128
\ 00000042 4003 LSLS R0,R0,#+13 ;; #+1048576
\ 00000044 ........ _BLF LED_TurnOn,??LED_TurnOn??rT
288 pEmac->EMAC_TSR |= AT91C_EMAC_COMP;
\ 00000048 6069 LDR R0,[R4, #+20]
\ 0000004A 2021 MOVS R1,#+32
\ 0000004C 0143 ORRS R1,R1,R0
\ 0000004E 6161 STR R1,[R4, #+20]
289 for (i = 0; i <NB_TX_BUFFERS; i++)
\ 00000050 0020 MOVS R0,#+0
\ 00000052 0600 MOVS R6,R0
\ ??AT91F_EMAC_HANDLER_3:
\ 00000054 022E CMP R6,#+2
\ 00000056 26D2 BCS ??AT91F_EMAC_HANDLER_4
290 {
291 if(TxtdList[i].U_Status.S_Status.BuffUsed == 1)
\ 00000058 0820 MOVS R0,#+8
\ 0000005A 7043 MULS R0,R6,R0
\ 0000005C .... LDR R1,??DataTable24 ;; TxtdList
\ 0000005E 0968 LDR R1,[R1, #+0]
\ 00000060 0818 ADDS R0,R1,R0
\ 00000062 4068 LDR R0,[R0, #+4]
\ 00000064 C00F LSRS R0,R0,#+31
\ 00000066 0128 CMP R0,#+1
\ 00000068 1BD1 BNE ??AT91F_EMAC_HANDLER_5
292 {
293 TxtdList[i].U_Status.S_Status.Length = 0;
\ 0000006A 0820 MOVS R0,#+8
\ 0000006C 7043 MULS R0,R6,R0
\ 0000006E .... LDR R1,??DataTable24 ;; TxtdList
\ 00000070 0968 LDR R1,[R1, #+0]
\ 00000072 0818 ADDS R0,R1,R0
\ 00000074 0821 MOVS R1,#+8
\ 00000076 7143 MULS R1,R6,R1
\ 00000078 .... LDR R2,??DataTable24 ;; TxtdList
\ 0000007A 1268 LDR R2,[R2, #+0]
\ 0000007C 5118 ADDS R1,R2,R1
\ 0000007E 4968 LDR R1,[R1, #+4]
\ 00000080 C90A LSRS R1,R1,#+11
\ 00000082 C902 LSLS R1,R1,#+11
\ 00000084 4160 STR R1,[R0, #+4]
294 TxtdList[i].U_Status.S_Status.BuffUsed = 0;
\ 00000086 0820 MOVS R0,#+8
\ 00000088 7043 MULS R0,R6,R0
\ 0000008A .... LDR R1,??DataTable24 ;; TxtdList
\ 0000008C 0968 LDR R1,[R1, #+0]
\ 0000008E 0818 ADDS R0,R1,R0
\ 00000090 0821 MOVS R1,#+8
\ 00000092 7143 MULS R1,R6,R1
\ 00000094 .... LDR R2,??DataTable24 ;; TxtdList
\ 00000096 1268 LDR R2,[R2, #+0]
\ 00000098 5118 ADDS R1,R2,R1
\ 0000009A 4968 LDR R1,[R1, #+4]
\ 0000009C 4900 LSLS R1,R1,#+1 ;; ZeroExtS R1,R1,#+1,#+1
\ 0000009E 4908 LSRS R1,R1,#+1
\ 000000A0 4160 STR R1,[R0, #+4]
295 }
296 }
\ ??AT91F_EMAC_HANDLER_5:
\ 000000A2 761C ADDS R6,R6,#+1
\ 000000A4 D6E7 B ??AT91F_EMAC_HANDLER_3
297 LED_TurnOff(LED2);
\ ??AT91F_EMAC_HANDLER_4:
\ 000000A6 8020 MOVS R0,#+128
\ 000000A8 4003 LSLS R0,R0,#+13 ;; #+1048576
\ 000000AA ........ _BLF LED_TurnOff,??LED_TurnOff??rT
298 }
299
300 if(pEmac->EMAC_TSR & AT91C_EMAC_UBR == AT91C_EMAC_UBR )
\ ??AT91F_EMAC_HANDLER_2:
\ 000000AE 6069 LDR R0,[R4, #+20]
\ 000000B0 C007 LSLS R0,R0,#+31
\ 000000B2 0BD5 BPL ??AT91F_EMAC_HANDLER_6
301 {
302 LED_TurnOn(LED3);
\ 000000B4 8020 MOVS R0,#+128
\ 000000B6 8003 LSLS R0,R0,#+14 ;; #+2097152
\ 000000B8 ........ _BLF LED_TurnOn,??LED_TurnOn??rT
303 pEmac->EMAC_TSR |= AT91C_EMAC_UBR;
\ 000000BC 6069 LDR R0,[R4, #+20]
\ 000000BE 0121 MOVS R1,#+1
\ 000000C0 0143 ORRS R1,R1,R0
\ 000000C2 6161 STR R1,[R4, #+20]
304 LED_TurnOff(LED3);
\ 000000C4 8020 MOVS R0,#+128
\ 000000C6 8003 LSLS R0,R0,#+14 ;; #+2097152
\ 000000C8 ........ _BLF LED_TurnOff,??LED_TurnOff??rT
305 }
306 }
\ ??AT91F_EMAC_HANDLER_6:
\ 000000CC 07B0 ADD SP,SP,#+28
\ 000000CE 70BC POP {R4-R6}
\ 000000D0 01BC POP {R0}
\ 000000D2 0047 BX R0 ;; return
307
308 //*----------------------------------------------------------------------------
309 //* \fn AT91F_IcmpChksum
310 //* \brief Process ICMP Checksum...
311 //*----------------------------------------------------------------------------
\ In segment CODE, align 4, keep-with-next
312 unsigned short AT91F_IcmpChksum(unsigned short *p, int len)
313 {
\ AT91F_IcmpChksum:
\ 00000000 30B5 PUSH {R4,R5,LR}
\ 00000002 0200 MOVS R2,R0
314 int i, t;
315 for (i=0,t=0; i < len; i++, p++)
\ 00000004 0020 MOVS R0,#+0
\ 00000006 0300 MOVS R3,R0
\ 00000008 0020 MOVS R0,#+0
\ 0000000A 0400 MOVS R4,R0
\ ??AT91F_IcmpChksum_0:
\ 0000000C 8B42 CMP R3,R1
\ 0000000E 0EDA BGE ??AT91F_IcmpChksum_1
316 t += SWAP16(*p);
\ 00000010 1088 LDRH R0,[R2, #+0]
\ 00000012 0006 LSLS R0,R0,#+24 ;; ZeroExtS R0,R0,#+24,#+24
\ 00000014 000E LSRS R0,R0,#+24
\ 00000016 0002 LSLS R0,R0,#+8
\ 00000018 1588 LDRH R5,[R2, #+0]
\ 0000001A 2D04 LSLS R5,R5,#+16 ;; ZeroExtS R5,R5,#+16,#+16
\ 0000001C 2D0C LSRS R5,R5,#+16
\ 0000001E 2D0A LSRS R5,R5,#+8
\ 00000020 2D04 LSLS R5,R5,#+16 ;; ZeroExtS R5,R5,#+16,#+16
\ 00000022 2D0C LSRS R5,R5,#+16
\ 00000024 0543 ORRS R5,R5,R0
\ 00000026 6419 ADDS R4,R4,R5
\ 00000028 5B1C ADDS R3,R3,#+1
\ 0000002A 921C ADDS R2,R2,#+2
\ 0000002C EEE7 B ??AT91F_IcmpChksum_0
317 t = (t & 0xffff) + (t >> 16);
\ ??AT91F_IcmpChksum_1:
\ 0000002E 2004 LSLS R0,R4,#+16 ;; ZeroExtS R0,R4,#+16,#+16
\ 00000030 000C LSRS R0,R0,#+16
\ 00000032 2414 ASRS R4,R4,#+16
\ 00000034 0419 ADDS R4,R0,R4
318 return (~t);
\ 00000036 E043 MVNS R0,R4
\ 00000038 0004 LSLS R0,R0,#+16 ;; ZeroExtS R0,R0,#+16,#+16
\ 0000003A 000C LSRS R0,R0,#+16
\ 0000003C 30BC POP {R4,R5}
\ 0000003E 02BC POP {R1}
\ 00000040 0847 BX R1 ;; return
319 }
320
321
322 //*----------------------------------------------------------------------------
323 //* \fn AT91F_ProcessEmacPacket
324 //* \brief Process ARP and ICMP packets...
325 //*----------------------------------------------------------------------------
\ In segment CODE, align 4, keep-with-next
326 int AT91F_ProcessEmacPacket(AT91PS_IPheader pHeader)
327 {
\ AT91F_ProcessEmacPacket:
\ 00000000 F1B5 PUSH {R0,R4-R7,LR}
\ 00000002 86B0 SUB SP,SP,#+24
328
329
330 unsigned int i, icmp_len;
331 char *pData;
332 int status = AT91C_NO_IPPACKET;
\ 00000004 0020 MOVS R0,#+0
\ 00000006 0490 STR R0,[SP, #+16]
333 AT91PS_EMAC pEmac = (AT91PS_EMAC)AT91C_BASE_EMAC;
\ 00000008 .... LDR R0,??DataTable25 ;; 0xfffdc000
\ 0000000A 0590 STR R0,[SP, #+20]
334
335 AT91PS_EthHdr pEth;
336 AT91PS_ArpHdr pArp;
337 AT91PS_IPheader pIpHeader;
338 AT91PS_IcmpEchoHdr pIcmpEcho;
339 int process = 0;
\ 0000000C 0020 MOVS R0,#+0
\ 0000000E 0500 MOVS R5,R0
340
341 // Receive one packet
342 process = 0;
\ 00000010 0020 MOVS R0,#+0
\ 00000012 0500 MOVS R5,R0
343 status = 0;
\ 00000014 0020 MOVS R0,#+0
\ 00000016 0490 STR R0,[SP, #+16]
344
345
346 for (i = 0; i < NB_RX_BUFFERS; ++i)
\ 00000018 0020 MOVS R0,#+0
\ 0000001A 0600 MOVS R6,R0
\ ??AT91F_ProcessEmacPacket_0:
\ 0000001C 642E CMP R6,#+100
\ 0000001E 15D2 BCS ??AT91F_ProcessEmacPacket_1
347 {
348 if(RxtdList[i].addr & AT91C_OWNERSHIP_BIT)
\ 00000020 0820 MOVS R0,#+8
\ 00000022 7043 MULS R0,R6,R0
\ 00000024 .... LDR R1,??DataTable37 ;; RxtdList
\ 00000026 0968 LDR R1,[R1, #+0]
\ 00000028 0858 LDR R0,[R1, R0]
\ 0000002A C007 LSLS R0,R0,#+31
\ 0000002C 0CD5 BPL ??AT91F_ProcessEmacPacket_2
349 {
350 if (pEmac->EMAC_RSR & AT91C_EMAC_REC == AT91C_EMAC_REC)
\ 0000002E 0598 LDR R0,[SP, #+20]
\ 00000030 006A LDR R0,[R0, #+32]
\ 00000032 C007 LSLS R0,R0,#+31
\ 00000034 05D5 BPL ??AT91F_ProcessEmacPacket_3
351 (pEmac->EMAC_RSR) |= AT91C_EMAC_REC;
\ 00000036 0598 LDR R0,[SP, #+20]
\ 00000038 0599 LDR R1,[SP, #+20]
\ 0000003A 096A LDR R1,[R1, #+32]
\ 0000003C 0222 MOVS R2,#+2
\ 0000003E 0A43 ORRS R2,R2,R1
\ 00000040 0262 STR R2,[R0, #+32]
352 process = 1;
\ ??AT91F_ProcessEmacPacket_3:
\ 00000042 0120
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -