?? usbhw.lst
字號:
00000076 L_22:
218: pUDP->UDP_CSR[num] = AT91C_UDP_EPTYPE_BULK_OUT;
00000076 4880 LDR R0,=0x200
00000078 1C0C MOV R4,R1 ; num
0000007A 00A4 LSL R4,R4,#0x2 ; num
0000007C 4800 LDR R3,=pUDP ; pUDP
0000007E 681B LDR R3,[R3,#0x0] ; pUDP
00000080 191B ADD R3,R4
00000082 6318 STR R0,[R3,#0x30]
220: break;
00000084 E019 B L_14 ; T=0x000000BA
221: case USB_ENDPOINT_TYPE_INTERRUPT:
ARM COMPILER V2.53, usbhw 02/11/07 08:22:50 PAGE 15
00000086 L_19:
222: if (dir) {
00000086 1C10 MOV R0,R2 ; dir
00000088 2800 CMP R0,#0x0 ; dir
0000008A D007 BEQ L_24 ; T=0x0000009C
223: pUDP->UDP_CSR[num] = AT91C_UDP_EPTYPE_INT_IN;
0000008C 4800 LDR R0,=0x700
0000008E 1C0B MOV R3,R1 ; num
00000090 009B LSL R3,R3,#0x2 ; num
00000092 4800 LDR R2,=pUDP ; pUDP
00000094 6812 LDR R2,[R2,#0x0] ; pUDP
00000096 18D2 ADD R2,R3
00000098 6310 STR R0,[R2,#0x30]
224: } else {
0000009A E00E B L_14 ; T=0x000000BA
0000009C L_24:
225: pUDP->UDP_CSR[num] = AT91C_UDP_EPTYPE_INT_OUT;
0000009C 48C0 LDR R0,=0x300
0000009E 1C0B MOV R3,R1 ; num
000000A0 009B LSL R3,R3,#0x2 ; num
000000A2 4800 LDR R2,=pUDP ; pUDP
000000A4 6812 LDR R2,[R2,#0x0] ; pUDP
000000A6 18D2 ADD R2,R3
000000A8 6310 STR R0,[R2,#0x30]
227: break;
000000AA E006 B L_14 ; T=0x000000BA
228: default:
000000AC L_16:
229: pUDP->UDP_CSR[num] = 0;
000000AC 2000 MOV R0,#0x0
000000AE 1C0A MOV R2,R1 ; num
000000B0 0092 LSL R2,R2,#0x2 ; num
000000B2 4800 LDR R1,=pUDP ; pUDP
000000B4 6809 LDR R1,[R1,#0x0] ; pUDP
000000B6 1889 ADD R1,R2
000000B8 6308 STR R0,[R1,#0x30]
231: }
000000BA L_14:
000000BA ; SCOPE-END
232: }
000000BA BC10 POP {R4}
000000BC 4770 BX R14
000000BE ENDP ; 'USB_ConfigEP?T'
*** CODE SEGMENT '?PR?USB_DirCtrlEP?T?usbhw':
239: void USB_DirCtrlEP (DWORD dir) {
00000000 1C01 MOV R1,R0 ; dir
00000002 ---- Variable 'dir' assigned to Register 'R1' ----
241: if (dir ) {
00000002 1C08 MOV R0,R1 ; dir
00000004 2800 CMP R0,#0x0 ; dir
00000006 D006 BEQ L_26 ; T=0x00000016
242: pUDP->UDP_CSR[0] |= AT91C_UDP_DIR;
00000008 4800 LDR R0,=pUDP ; pUDP
0000000A 6801 LDR R1,[R0,#0x0] ; pUDP
0000000C 6B08 LDR R0,[R1,#0x30]
0000000E 2280 MOV R2,#0x80
00000010 4310 ORR R0,R2
00000012 6308 STR R0,[R1,#0x30]
243: } else {
00000014 E005 B L_27 ; T=0x00000022
00000016 L_26:
244: pUDP->UDP_CSR[0] &= ~AT91C_UDP_DIR;
00000016 4800 LDR R0,=pUDP ; pUDP
00000018 6801 LDR R1,[R0,#0x0] ; pUDP
0000001A 6B08 LDR R0,[R1,#0x30]
0000001C 2280 MOV R2,#0x80
ARM COMPILER V2.53, usbhw 02/11/07 08:22:50 PAGE 16
0000001E 4390 BIC R0,R2
00000020 6308 STR R0,[R1,#0x30]
245: }
00000022 L_27:
246: pUDP->UDP_CSR[0] &= ~AT91C_UDP_RXSETUP;
00000022 4800 LDR R0,=pUDP ; pUDP
00000024 6801 LDR R1,[R0,#0x0] ; pUDP
00000026 6B08 LDR R0,[R1,#0x30]
00000028 2204 MOV R2,#0x4
0000002A 4390 BIC R0,R2
0000002C 6308 STR R0,[R1,#0x30]
247: }
0000002E 4770 BX R14
00000030 ENDP ; 'USB_DirCtrlEP?T'
*** CODE SEGMENT '?PR?USB_EnableEP?T?usbhw':
257: void USB_EnableEP (DWORD EPNum) {
00000000 1C03 MOV R3,R0 ; EPNum
00000002 ---- Variable 'EPNum' assigned to Register 'R3' ----
258: pUDP->UDP_CSR[EPNum & 0x0F] |= AT91C_UDP_EPEDS;
00000002 4800 LDR R2,=0x8000
00000004 1C19 MOV R1,R3 ; EPNum
00000006 200F MOV R0,#0xF
00000008 4001 AND R1,R0
0000000A 0089 LSL R1,R1,#0x2
0000000C 4800 LDR R0,=pUDP ; pUDP
0000000E 6800 LDR R0,[R0,#0x0] ; pUDP
00000010 1840 ADD R0,R1
00000012 3030 ADD R0,#0x30
00000014 6801 LDR R1,[R0,#0x0]
00000016 4311 ORR R1,R2
00000018 6001 STR R1,[R0,#0x0]
259: }
0000001A 4770 BX R14
0000001C ENDP ; 'USB_EnableEP?T'
*** CODE SEGMENT '?PR?USB_DisableEP?T?usbhw':
269: void USB_DisableEP (DWORD EPNum) {
00000000 1C03 MOV R3,R0 ; EPNum
00000002 ---- Variable 'EPNum' assigned to Register 'R3' ----
270: pUDP->UDP_CSR[EPNum & 0x0F] &= ~AT91C_UDP_EPEDS;
00000002 4800 LDR R2,=0x8000
00000004 1C19 MOV R1,R3 ; EPNum
00000006 200F MOV R0,#0xF
00000008 4001 AND R1,R0
0000000A 0089 LSL R1,R1,#0x2
0000000C 4800 LDR R0,=pUDP ; pUDP
0000000E 6800 LDR R0,[R0,#0x0] ; pUDP
00000010 1840 ADD R0,R1
00000012 3030 ADD R0,#0x30
00000014 6801 LDR R1,[R0,#0x0]
00000016 4391 BIC R1,R2
00000018 6001 STR R1,[R0,#0x0]
271: }
0000001A 4770 BX R14
0000001C ENDP ; 'USB_DisableEP?T'
*** CODE SEGMENT '?PR?USB_ResetEP?T?usbhw':
284: void USB_ResetEP (DWORD EPNum) {
00000000 ---- Variable 'EPNum' assigned to Register 'R0' ----
286: EPNum &= 0x0F;
00000000 210F MOV R1,#0xF
00000002 4008 AND R0,R1
290: AT91C_UDP_STALLSENT);
00000004 237F MOV R3,#0x7F
00000006 1C02 MOV R2,R0 ; EPNum
00000008 0092 LSL R2,R2,#0x2 ; EPNum
0000000A 4800 LDR R1,=pUDP ; pUDP
0000000C 6809 LDR R1,[R1,#0x0] ; pUDP
ARM COMPILER V2.53, usbhw 02/11/07 08:22:50 PAGE 17
0000000E 1889 ADD R1,R2
00000010 3130 ADD R1,#0x30
00000012 680A LDR R2,[R1,#0x0]
00000014 439A BIC R2,R3
00000016 600A STR R2,[R1,#0x0]
291: pUDP->UDP_RSTEP |= 1 << EPNum;
00000018 1C01 MOV R1,R0 ; EPNum
0000001A 2301 MOV R3,#0x1
0000001C 408B LSL R3,R1
0000001E 4800 LDR R1,=pUDP ; pUDP
00000020 680A LDR R2,[R1,#0x0] ; pUDP
00000022 6A91 LDR R1,[R2,#0x28]
00000024 4319 ORR R1,R3
00000026 6291 STR R1,[R2,#0x28]
292: pUDP->UDP_RSTEP &= ~(1 << EPNum);
00000028 1C01 MOV R1,R0 ; EPNum
0000002A 2301 MOV R3,#0x1
0000002C 408B LSL R3,R1
0000002E 4800 LDR R1,=pUDP ; pUDP
00000030 680A LDR R2,[R1,#0x0] ; pUDP
00000032 6A91 LDR R1,[R2,#0x28]
00000034 4399 BIC R1,R3
00000036 6291 STR R1,[R2,#0x28]
293: RxDataBank[EPNum] = 0;
00000038 2100 MOV R1,#0x0
0000003A 1C03 MOV R3,R0 ; EPNum
0000003C 4800 LDR R2,=RxDataBank ; RxDataBank
0000003E 54D1 STRB R1,[R2,R3]
294: TxDataBank[EPNum] = 0;
00000040 1C02 MOV R2,R0 ; EPNum
00000042 4800 LDR R0,=TxDataBank ; TxDataBank
00000044 5481 STRB R1,[R0,R2]
295: }
00000046 4770 BX R14
00000048 ENDP ; 'USB_ResetEP?T'
*** CODE SEGMENT '?PR?USB_SetStallEP?T?usbhw':
305: void USB_SetStallEP (DWORD EPNum) {
00000000 1C03 MOV R3,R0 ; EPNum
00000002 ---- Variable 'EPNum' assigned to Register 'R3' ----
306: pUDP->UDP_CSR[EPNum & 0x0F] |= AT91C_UDP_FORCESTALL;
00000002 2220 MOV R2,#0x20
00000004 1C19 MOV R1,R3 ; EPNum
00000006 200F MOV R0,#0xF
00000008 4001 AND R1,R0
0000000A 0089 LSL R1,R1,#0x2
0000000C 4800 LDR R0,=pUDP ; pUDP
0000000E 6800 LDR R0,[R0,#0x0] ; pUDP
00000010 1840 ADD R0,R1
00000012 3030 ADD R0,#0x30
00000014 6801 LDR R1,[R0,#0x0]
00000016 4311 ORR R1,R2
00000018 6001 STR R1,[R0,#0x0]
307: }
0000001A 4770 BX R14
0000001C ENDP ; 'USB_SetStallEP?T'
*** CODE SEGMENT '?PR?USB_ClrStallEP?T?usbhw':
318: void USB_ClrStallEP (DWORD EPNum) {
00000000 1C03 MOV R3,R0 ; EPNum
00000002 ---- Variable 'EPNum' assigned to Register 'R3' ----
319: pUDP->UDP_CSR[EPNum & 0x0F] &= ~AT91C_UDP_FORCESTALL;
00000002 2220 MOV R2,#0x20
00000004 1C19 MOV R1,R3 ; EPNum
00000006 200F MOV R0,#0xF
00000008 4001 AND R1,R0
0000000A 0089 LSL R1,R1,#0x2
0000000C 4800 LDR R0,=pUDP ; pUDP
ARM COMPILER V2.53, usbhw 02/11/07 08:22:50 PAGE 18
0000000E 6800 LDR R0,[R0,#0x0] ; pUDP
00000010 1840 ADD R0,R1
00000012 3030 ADD R0,#0x30
00000014 6801 LDR R1,[R0,#0x0]
00000016 4391 BIC R1,R2
00000018 6001 STR R1,[R0,#0x0]
320: }
0000001A 4770 BX R14
0000001C ENDP ; 'USB_ClrStallEP?T'
*** CODE SEGMENT '?PR?USB_ReadEP?T?usbhw':
330: DWORD USB_ReadEP (DWORD EPNum, BYTE *pData) {
00000000 B430 PUSH {R4-R5}
00000002 ---- Variable 'pData' assigned to Register 'R1' ----
00000002 ---- Variable 'EPNum' assigned to Register 'R0' ----
00000002 ; SCOPE-START
333: EPNum &= 0x0F;
00000002 220F MOV R2,#0xF
00000004 4010 AND R0,R2
334: cnt = (pUDP->UDP_CSR[EPNum] >> 16) & 0x07FF;
00000006 1C03 MOV R3,R0 ; EPNum
00000008 009B LSL R3,R3,#0x2 ; EPNum
0000000A 4800 LDR R2,=pUDP ; pUDP
0000000C 6812 LDR R2,[R2,#0x0] ; pUDP
0000000E 18D2 ADD R2,R3
00000010 6B12 LDR R2,[R2,#0x30]
00000012 0C12 LSR R2,R2,#0x10
00000014 4800 LDR R3,=0x7FF
00000016 401A AND R2,R3
00000018 ---- Variable 'cnt' assigned to Register 'R2' ----
335: for (n = 0; n < cnt; n++) {
00000018 2300 MOV R3,#0x0
0000001A ---- Variable 'n' assigned to Register 'R3' ----
0000001A E00B B L_30 ; T=0x00000034
0000001C L_31:
336: *pData++ = (BYTE)pUDP->UDP_FDR[EPNum];
0000001C 1C05 MOV R5,R0 ; EPNum
0000001E 00AD LSL R5,R5,#0x2 ; EPNum
00000020 4800 LDR R4,=pUDP ; pUDP
00000022 6824 LDR R4,[R4,#0x0] ; pUDP
00000024 1964 ADD R4,R5
00000026 6D25 LDR R5,[R4,#0x50]
00000028 062D LSL R5,R5,#0x18
0000002A 0E2D LSR R5,R5,#0x18
0000002C 1C0C MOV R4,R1 ; pData
0000002E 3101 ADD R1,#0x1
00000030 7025 STRB R5,[R4,#0x0] ; pData
337: }
00000032 3301 ADD R3,#0x1
00000034 L_30:
00000034 1C15 MOV R5,R2 ; cnt
00000036 1C1C MOV R4,R3 ; n
00000038 42AC CMP R4,R5 ; n
0000003A D3EF BCC L_31 ; T=0x0000001C
338: return (cnt);
0000003C 1C10 MOV R0,R2 ; cnt
0000003E ; SCOPE-END
339: }
0000003E BC30 POP {R4-R5}
00000040 4770 BX R14
00000042 ENDP ; 'USB_ReadEP?T'
*** CODE SEGMENT '?PR?USB_WriteEP?T?usbhw':
352: DWORD USB_WriteEP (DWORD EPNum, BYTE *pData, DWORD cnt) {
00000000 B470 PUSH {R4-R6}
00000002 ---- Variable 'cnt' assigned to Register 'R2' ----
00000002 ---- Variable 'pData' assigned to Register 'R1' ----
00000002 1C04 MOV R4,R0 ; EPNum
ARM COMPILER V2.53, usbhw 02/11/07 08:22:50 PAGE 19
00000004 ---- Variable 'EPNum' assigned to Register 'R4' ----
00000004 ; SCOPE-START
355: EPNum &= 0x0F;
00000004 200F MOV R0,#0xF
00000006 4004 AND R4,R0
356: if (pUDP->UDP_CSR[EPNum] & AT91C_UDP_TXPKTRDY) {
00000008 1C23 MOV R3,R4 ; EPNum
0000000A 009B LSL R3,R3,#0x2 ; EPNum
0000000C 4800 LDR R0,=pUDP ; pUDP
0000000E 6800 LDR R0,[R0,#0x0] ; pUDP
00000010 18C0 ADD R0,R3
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -