?? usbhw.lst
字號:
00000012 6B00 LDR R0,[R0,#0x30]
00000014 2310 MOV R3,#0x10
00000016 4218 TST R0,R3
00000018 D013 BEQ L_42 ; T=0x00000042
357: if ((DualBankEP & (1 << EPNum)) && (TxDataBank[EPNum] == 0)) {
0000001A 1C20 MOV R0,R4 ; EPNum
0000001C 2301 MOV R3,#0x1
0000001E 4083 LSL R3,R0
00000020 4800 LDR R0,=DualBankEP ; DualBankEP
00000022 7800 LDRB R0,[R0,#0x0] ; DualBankEP
00000024 4018 AND R0,R3
00000026 2800 CMP R0,#0x0
00000028 D009 BEQ L_35 ; T=0x0000003E
0000002A 1C23 MOV R3,R4 ; EPNum
0000002C 4800 LDR R0,=TxDataBank ; TxDataBank
0000002E 5CC0 LDRB R0,[R0,R3]
00000030 2800 CMP R0,#0x0
00000032 D104 BNE L_35 ; T=0x0000003E
358: TxDataBank[EPNum] = 1;
00000034 2301 MOV R3,#0x1
00000036 1C25 MOV R5,R4 ; EPNum
00000038 4800 LDR R0,=TxDataBank ; TxDataBank
0000003A 5543 STRB R3,[R0,R5]
359: } else {
0000003C E001 B L_42 ; T=0x00000042
0000003E L_35:
360: return (0);
0000003E 2000 MOV R0,#0x0
00000040 E01A B L_37 ; T=0x00000078
363: for (n = 0; n < cnt; n++) {
00000042 L_42:
00000042 2300 MOV R3,#0x0
00000044 ---- Variable 'n' assigned to Register 'R3' ----
00000044 E009 B L_40 ; T=0x0000005A
00000046 L_41:
364: pUDP->UDP_FDR[EPNum] = *pData++;
00000046 1C08 MOV R0,R1 ; pData
00000048 3101 ADD R1,#0x1
0000004A 7805 LDRB R5,[R0,#0x0] ; pData
0000004C 1C26 MOV R6,R4 ; EPNum
0000004E 00B6 LSL R6,R6,#0x2 ; EPNum
00000050 4800 LDR R0,=pUDP ; pUDP
00000052 6800 LDR R0,[R0,#0x0] ; pUDP
00000054 1980 ADD R0,R6
00000056 6505 STR R5,[R0,#0x50]
365: }
00000058 3301 ADD R3,#0x1
0000005A L_40:
0000005A 1C15 MOV R5,R2 ; cnt
0000005C 1C18 MOV R0,R3 ; n
0000005E 42A8 CMP R0,R5 ; n
00000060 D3F1 BCC L_41 ; T=0x00000046
366: pUDP->UDP_CSR[EPNum] |= AT91C_UDP_TXPKTRDY;
00000062 2310 MOV R3,#0x10
00000064 1C21 MOV R1,R4 ; EPNum
ARM COMPILER V2.53, usbhw 02/11/07 08:22:50 PAGE 20
00000066 0089 LSL R1,R1,#0x2 ; EPNum
00000068 4800 LDR R0,=pUDP ; pUDP
0000006A 6800 LDR R0,[R0,#0x0] ; pUDP
0000006C 1840 ADD R0,R1
0000006E 3030 ADD R0,#0x30
00000070 6801 LDR R1,[R0,#0x0]
00000072 4319 ORR R1,R3
00000074 6001 STR R1,[R0,#0x0]
368: return (cnt);
00000076 1C10 MOV R0,R2 ; cnt
00000078 ; SCOPE-END
369: }
00000078 L_37:
00000078 BC70 POP {R4-R6}
0000007A 4770 BX R14
0000007C ENDP ; 'USB_WriteEP?T'
*** CODE SEGMENT '?PR?USB_GetFrame?T?usbhw':
378: DWORD USB_GetFrame (void) {
00000000 ---- Variable 'val' assigned to Register 'R1' ----
00000000 ; SCOPE-START
380: while ((pUDP->UDP_NUM & (AT91C_UDP_FRM_OK | AT91C_UDP_FRM_ERR)) == 0);
00000000 L_43:
00000000 4800 LDR R0,=pUDP ; pUDP
00000002 6800 LDR R0,[R0,#0x0] ; pUDP
00000004 6802 LDR R2,[R0,#0x0]
00000006 4800 LDR R3,=0x30000
00000008 421A TST R2,R3
0000000A D0F9 BEQ L_43 ; T=0x00000000
381: if (pUDP->UDP_NUM & AT91C_UDP_FRM_OK) {
0000000C 6802 LDR R2,[R0,#0x0]
0000000E 4800 LDR R3,=0x20000
00000010 421A TST R2,R3
00000012 D003 BEQ L_47 ; T=0x0000001C
382: val = pUDP->UDP_NUM & AT91C_UDP_FRM_NUM;
00000014 6801 LDR R1,[R0,#0x0]
00000016 4800 LDR R0,=0x7FF
00000018 4001 AND R1,R0
383: } else {
0000001A E000 B L_48 ; T=0x0000001E
0000001C L_47:
384: val = 0xFFFFFFFF;
0000001C 4800 LDR R1,=0xFFFFFFFF
385: }
0000001E L_48:
386: return (val);
0000001E 1C08 MOV R0,R1 ; val
00000020 ; SCOPE-END
387: }
00000020 4770 BX R14
00000022 ENDP ; 'USB_GetFrame?T'
*** CODE SEGMENT '?PR?USB_ISR?A?usbhw':
392: void USB_ISR (void) __irq {
00000000 E92D5FFF STMDB R13!,{R0-R12,LR}
00000004 ---- Variable 'isr' assigned to Register 'R4' ----
00000004 ; SCOPE-START
395: while (isr = pUDP->UDP_ISR) {
00000004 EA0000B8 B L_50 ; Targ=0x2EC
00000008 L_52:
398: if (isr & AT91C_UDP_ENDBUSRES) {
00000008 E1A00004 MOV R0,R4 ; isr
0000000C E3100A01 TST R0,#0x1000 ; isr
00000010 0A000005 BEQ L_54 ; Targ=0x2C
399: USB_Reset();
00000014 EBFFFFF9 BL USB_Reset?A ; Targ=0x0
401: USB_Reset_Event();
00000018 EBFFFFF8 BL USB_Reset_Event?A ; Targ=0x0
ARM COMPILER V2.53, usbhw 02/11/07 08:22:50 PAGE 21
403: pUDP->UDP_ICR = AT91C_UDP_ENDBUSRES;
0000001C E3A00A01 MOV R0,#0x1000
00000020 E5101000 LDR R1,=pUDP ; pUDP
00000024 E5911000 LDR R1,[R1,#0x0] ; pUDP
00000028 E5810020 STR R0,[R1,#0x20]
404: }
0000002C L_54:
407: if (isr & AT91C_UDP_RXSUSP) {
0000002C E1A00004 MOV R0,R4 ; isr
00000030 E3100C01 TST R0,#0x0100 ; isr
00000034 0A000005 BEQ L_55 ; Targ=0x50
408: USB_Suspend();
00000038 EBFFFFF0 BL USB_Suspend?A ; Targ=0x0
410: USB_Suspend_Event();
0000003C EBFFFFEF BL USB_Suspend_Event?A ; Targ=0x0
412: pUDP->UDP_ICR = AT91C_UDP_RXSUSP;
00000040 E3A00C01 MOV R0,#0x100
00000044 E5101000 LDR R1,=pUDP ; pUDP
00000048 E5911000 LDR R1,[R1,#0x0] ; pUDP
0000004C E5810020 STR R0,[R1,#0x20]
413: }
00000050 L_55:
415: if (isr & AT91C_UDP_RXRSM) {
00000050 E1A00004 MOV R0,R4 ; isr
00000054 E3100C02 TST R0,#0x0200 ; isr
00000058 0A000005 BEQ L_56 ; Targ=0x74
416: USB_Resume();
0000005C EBFFFFE7 BL USB_Resume?A ; Targ=0x0
418: USB_Resume_Event();
00000060 EBFFFFE6 BL USB_Resume_Event?A ; Targ=0x0
420: pUDP->UDP_ICR = AT91C_UDP_RXRSM;
00000064 E3A00C02 MOV R0,#0x200
00000068 E5101000 LDR R1,=pUDP ; pUDP
0000006C E5911000 LDR R1,[R1,#0x0] ; pUDP
00000070 E5810020 STR R0,[R1,#0x20]
421: }
00000074 L_56:
424: if (isr & AT91C_UDP_EXTRSM) {
00000074 E1A00004 MOV R0,R4 ; isr
00000078 E3100B01 TST R0,#0x0400 ; isr
0000007C 0A000004 BEQ L_57 ; Targ=0x94
425: USB_WakeUp();
00000080 EBFFFFDE BL USB_WakeUp?A ; Targ=0x0
429: pUDP->UDP_ICR = AT91C_UDP_EXTRSM;
00000084 E3A00B01 MOV R0,#0x400
00000088 E5101000 LDR R1,=pUDP ; pUDP
0000008C E5911000 LDR R1,[R1,#0x0] ; pUDP
00000090 E5810020 STR R0,[R1,#0x20]
430: }
00000094 L_57:
433: if (isr & AT91C_UDP_SOFINT) {
00000094 E1A00004 MOV R0,R4 ; isr
00000098 E3100B02 TST R0,#0x0800 ; isr
0000009C 0A000003 BEQ L_63 ; Targ=0xB0
437: pUDP->UDP_ICR = AT91C_UDP_SOFINT;
000000A0 E3A00B02 MOV R0,#0x800
000000A4 E5101000 LDR R1,=pUDP ; pUDP
000000A8 E5911000 LDR R1,[R1,#0x0] ; pUDP
000000AC E5810020 STR R0,[R1,#0x20]
441: for (n = 0; n < USB_EP_NUM; n++) {
000000B0 L_63:
000000B0 E3A05000 MOV R5,#0x0
000000B4 ---- Variable 'n' assigned to Register 'R5' ----
000000B4 L_62:
442: if (isr & (1 << n)) {
000000B4 E1A01005 MOV R1,R5 ; n
ARM COMPILER V2.53, usbhw 02/11/07 08:22:50 PAGE 22
000000B8 E3A00001 MOV R0,#0x1
000000BC E1A02000 MOV R2,R0
000000C0 E1A02112 MOV R2,R2,LSL R1
000000C4 E1A01004 MOV R1,R4 ; isr
000000C8 E0011002 AND R1,R1,R2 ; isr
000000CC E3510000 CMP R1,#0x0000
000000D0 0A000081 BEQ L_59 ; Targ=0x2DC
444: csr = pUDP->UDP_CSR[n];
000000D4 E1A02005 MOV R2,R5 ; n
000000D8 E1A02102 MOV R2,R2,LSL #2 ; n
000000DC E5101000 LDR R1,=pUDP ; pUDP
000000E0 E5911000 LDR R1,[R1,#0x0] ; pUDP
000000E4 E0811002 ADD R1,R1,R2
000000E8 E5916030 LDR R6,[R1,#0x30]
000000EC ---- Variable 'csr' assigned to Register 'R6' ----
446: if (csr & AT91C_UDP_RXSETUP) {
000000EC E1A01006 MOV R1,R6 ; csr
000000F0 E3110004 TST R1,#0x0004 ; csr
000000F4 0A000007 BEQ L_65 ; Targ=0x118
447: if (USB_P_EP[n]) {
000000F8 E5101000 LDR R1,=USB_P_EP ; USB_P_EP
000000FC E7911002 LDR R1,[R1,+R2]
00000100 E3510000 CMP R1,#0x0000
00000104 0A000003 BEQ L_65 ; Targ=0x118
448: USB_P_EP[n](USB_EVT_SETUP);
00000108 E5101000 LDR R1,=USB_P_EP ; USB_P_EP
0000010C E7911002 LDR R1,[R1,+R2]
00000110 E1A0E00F MOV R14,R15
00000114 E12FFF11 BX R1
452: }
00000118 L_65:
455: bkm = RX_DATA_BK[RxDataBank[n]];
00000118 E1A01005 MOV R1,R5 ; n
0000011C E5100000 LDR R0,=RxDataBank ; RxDataBank
00000120 E7D00001 LDRB R0,[R0,+R1]
00000124 E1A01000 MOV R1,R0
00000128 E1A01101 MOV R1,R1,LSL #2
0000012C E5100000 LDR R0,=RX_DATA_BK ; RX_DATA_BK
00000130 E7907001 LDR R7,[R0,+R1]
00000134 ---- Variable 'bkm' assigned to Register 'R7' ----
456: if (csr & bkm) {
00000134 E1A01007 MOV R1,R7 ; bkm
00000138 E1A00006 MOV R0,R6 ; csr
0000013C E0000001 AND R0,R0,R1 ; csr
00000140 E3500000 CMP R0,#0x0000
00000144 0A000023 BEQ L_67 ; Targ=0x1D8
457: if (USB_P_EP[n]) {
00000148 E1A02005 MOV R2,R5 ; n
0000014C E1A02102 MOV R2,R2,LSL #2 ; n
00000150 E5100000 LDR R0,=USB_P_EP ; USB_P_EP
00000154 E7900002 LDR R0,[R0,+R2]
00000158 E3500000 CMP R0,#0x0000
0000015C 0A000004 BEQ L_68 ; Targ=0x174
458: USB_P_EP[n](USB_EVT_OUT);
00000160 E3A00002 MOV R0,#0x2
00000164 E5101000 LDR R1,=USB_P_EP ; USB_P_EP
00000168 E7911002 LDR R1,[R1,+R2]
0000016C E1A0E00F MOV R14,R15
00000170 E12FFF11 BX R1
459: }
00000174 L_68:
460: pUDP->UDP_CSR[n] &= ~bkm;
00000174 E1A02007 MOV R2,R7 ; bkm
00000178 E1E02002 MVN R2,R2 ; bkm
0000017C E1A01005 MOV R1,R5 ; n
00000180 E1A01101 MOV R1,R1,LSL #2 ; n
ARM COMPILER V2.53, usbhw 02/11/07 08:22:50 PAGE 23
00000184 E5100000 LDR R0,=pUDP ; pUDP
00000188 E5900000 LDR R0,[R0,#0x0] ; pUDP
0000018C E0800001 ADD R0,R0,R1
00000190 E2800030 ADD R0,R0,#0x0030
00000194 E5901000 LDR R1,[R0,#0x0]
00000198 E0011002 AND R1,R1,R2
0000019C E5801000 STR R1,[R0,#0x0]
461: if (DualBankEP & (1 << n)) {
000001A0 E1A00005 MOV R0,R5 ; n
000001A4 E3A01001 MOV R1,#0x1
000001A8 E1A01011 MOV R1,R1,LSL R0
000001AC E5100000 LDR R0,=DualBankEP ; DualBankEP
000001B0 E5D00000 LDRB R0,[R0,#0x0] ; DualBankEP
000001B4 E0000001 AND R0,R0,R1
000001B8 E3500000 CMP R0,#0x0000
000001BC 0A000005 BEQ L_67 ; Targ=0x1D8
462: RxDataBank[n] ^= 1;
000001C0 E1A01005 MOV R1,R5 ; n
000001C4 E5100000 LDR R0,=RxDataBank ; RxDataBank
000001C8 E0800001 ADD R0,R0,R1 ; RxDataBank
000001CC E5D01000 LDRB R1,[R0,#0x0]
000001D0 E2211001 EOR R1,R1,#0x0001
000001D4 E5C01000 STRB R1,[R0,#0x0]
464: }
000001D8 L_67:
467: if (csr & AT91C_UDP_TXCOMP) {
000001D8 E1A00006 MOV R0,R6 ; csr
000001DC E3100001 TST R0,#0x0001 ; csr
000001E0 0A000025 BEQ L_70 ; Targ=0x27C
468: pUDP->UDP_CSR[n] &= ~AT91C_UDP_TXCOMP;
000001E4 E1A01005 MOV R1,R5 ; n
000001E8 E1A01101 MOV R1,R1,LSL #2 ; n
000001EC E5100000 LDR R0,=pUDP ; pUDP
000001F0 E5900000 LDR R0,[R0,#0x0] ; pUDP
000001F4 E0800001 ADD R0,R0,R1
000001F8 E2800030 ADD R0,R0,#0x0030
000001FC E5901000 LDR R1,[R0,#0x0]
00000200 E3C11001 BIC R1,R1,#0x0001
00000204 E5801000 STR R1,[R0,#0x0]
469: if (TxDataBank[n]) {
00000208 E1A01005 MOV R1,R5 ; n
0000020C E5100000 LDR R0,=TxDataBank ; TxDataBank
00000210 E7D00001 LDRB R0,[R0,+R1]
00000214 E3500000 CMP R0,#0x0000
00000218 0A00000C BEQ L_71 ; Targ=0x250
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -