📄 usbcore.lst
字号:
181: return (TRUE);
000000BC 2001 MOV R0,#0x1
000000BE ; SCOPE-END
182: }
000000BE L_10:
000000BE BC08 POP {R3}
000000C0 4718 BX R3
000000C2 ENDP ; 'USB_GetStatus?T'
*** CODE SEGMENT '?PR?USB_SetClrFeature?T?usbcore':
192: __inline BOOL USB_SetClrFeature (DWORD sc) {
00000000 B570 PUSH {R4-R6,LR}
00000002 1C06 MOV R6,R0 ; sc
00000004 ---- Variable 'sc' assigned to Register 'R6' ----
00000004 ; SCOPE-START
195: switch (SetupPacket.bmRequestType.BM.Recipient) {
00000004 4800 LDR R0,=SetupPacket ; SetupPacket
00000006 7800 LDRB R0,[R0,#0x0] ; SetupPacket
00000008 211F MOV R1,#0x1F
0000000A 4008 AND R0,R1
0000000C 2801 CMP R0,#0x1
0000000E D023 BEQ L_21 ; T=0x00000058
00000010 2802 CMP R0,#0x2
00000012 D023 BEQ L_22 ; T=0x0000005C
00000014 2800 CMP R0,#0x0
00000016 D161 BNE L_20 ; T=0x000000DC
196: case REQUEST_TO_DEVICE:
00000018 L_19:
197: if (SetupPacket.wValue.W == USB_FEATURE_REMOTE_WAKEUP) {
00000018 4800 LDR R1,=SetupPacket + 0x2 ; SetupPacket+2
0000001A 7808 LDRB R0,[R1,#0x0] ; SetupPacket+2
0000001C 784A LDRB R2,[R1,#0x1] ; SetupPacket+2
0000001E 0212 LSL R2,R2,#0x8
00000020 4310 ORR R0,R2
00000022 2801 CMP R0,#0x1
00000024 D116 BNE L_23 ; T=0x00000054
198: if (sc) {
00000026 1C30 MOV R0,R6 ; sc
00000028 2800 CMP R0,#0x0 ; sc
0000002A D009 BEQ L_24 ; T=0x00000040
199: USB_WakeUpCfg(TRUE);
0000002C 2001 MOV R0,#0x1
0000002E F7FF BL USB_WakeUpCfg?T ; T=0x0001 (1)
00000030 FFE7 BL USB_WakeUpCfg?T ; T=0x0001 (2)
200: USB_DeviceStatus |= USB_GETSTATUS_REMOTE_WAKEUP;
00000032 4800 LDR R0,=USB_DeviceStatus ; USB_DeviceStatus
00000034 8801 LDRH R1,[R0,#0x0] ; USB_DeviceStatus
00000036 2002 MOV R0,#0x2
00000038 4301 ORR R1,R0
0000003A 4800 LDR R0,=USB_DeviceStatus ; USB_DeviceStatus
0000003C 8001 STRH R1,[R0,#0x0] ; USB_DeviceStatus
201: } else {
0000003E E04F B L_18 ; T=0x000000E0
00000040 L_24:
202: USB_WakeUpCfg(FALSE);
00000040 2000 MOV R0,#0x0
00000042 F7FF BL USB_WakeUpCfg?T ; T=0x0001 (1)
00000044 FFDD BL USB_WakeUpCfg?T ; T=0x0001 (2)
203: USB_DeviceStatus &= ~USB_GETSTATUS_REMOTE_WAKEUP;
ARM COMPILER V2.50a, usbcore 27/03/06 17:22:53 PAGE 19
00000046 4800 LDR R0,=USB_DeviceStatus ; USB_DeviceStatus
00000048 8801 LDRH R1,[R0,#0x0] ; USB_DeviceStatus
0000004A 4800 LDRH R0,=0xFFFD
0000004C 4001 AND R1,R0
0000004E 4800 LDR R0,=USB_DeviceStatus ; USB_DeviceStatus
00000050 8001 STRH R1,[R0,#0x0] ; USB_DeviceStatus
205: } else {
00000052 E045 B L_18 ; T=0x000000E0
00000054 L_23:
206: return (FALSE);
00000054 2000 MOV R0,#0x0
00000056 E044 B L_27 ; T=0x000000E2
209: case REQUEST_TO_INTERFACE:
00000058 L_21:
210: return (FALSE);
00000058 2000 MOV R0,#0x0
0000005A E042 B L_27 ; T=0x000000E2
211: case REQUEST_TO_ENDPOINT:
0000005C L_22:
212: n = SetupPacket.wIndex.WB.L & 0x8F;
0000005C 4800 LDR R0,=SetupPacket + 0x4 ; SetupPacket+4
0000005E 7800 LDRB R0,[R0,#0x0] ; SetupPacket+4
00000060 1C05 MOV R5,R0
00000062 208F MOV R0,#0x8F
00000064 4005 AND R5,R0
00000066 ---- Variable 'n' assigned to Register 'R5' ----
213: m = (n & 0x80) ? ((1 << 16) << n) : (1 << n);
00000066 1C28 MOV R0,R5 ; n
00000068 2180 MOV R1,#0x80
0000006A 4208 TST R0,R1 ; n
0000006C D003 BEQ L_28 ; T=0x00000076
0000006E 1C28 MOV R0,R5 ; n
00000070 4800 LDR R4,=0x10000
00000072 4084 LSL R4,R0
00000074 E002 B L_29 ; T=0x0000007C
00000076 L_28:
00000076 1C28 MOV R0,R5 ; n
00000078 2401 MOV R4,#0x1
0000007A 4084 LSL R4,R0
0000007C L_29:
0000007C ---- Variable 'm' assigned to Register 'R4' ----
214: if ((USB_Configuration != 0) && ((n & 0x0F) != 0) && (USB_EndPointMask & m)) {
0000007C 4800 LDR R0,=USB_Configuration ; USB_Configuration
0000007E 7800 LDRB R0,[R0,#0x0] ; USB_Configuration
00000080 2800 CMP R0,#0x0
00000082 D029 BEQ L_30 ; T=0x000000D8
00000084 1C28 MOV R0,R5 ; n
00000086 210F MOV R1,#0xF
00000088 4208 TST R0,R1 ; n
0000008A D025 BEQ L_30 ; T=0x000000D8
0000008C 1C21 MOV R1,R4 ; m
0000008E 4800 LDR R0,=USB_EndPointMask ; USB_EndPointMask
00000090 6800 LDR R0,[R0,#0x0] ; USB_EndPointMask
00000092 4008 AND R0,R1 ; m
00000094 2800 CMP R0,#0x0
00000096 D01F BEQ L_30 ; T=0x000000D8
215: if (SetupPacket.wValue.W == USB_FEATURE_ENDPOINT_STALL) {
00000098 4800 LDR R1,=SetupPacket + 0x2 ; SetupPacket+2
0000009A 7808 LDRB R0,[R1,#0x0] ; SetupPacket+2
0000009C 784A LDRB R2,[R1,#0x1] ; SetupPacket+2
0000009E 0212 LSL R2,R2,#0x8
000000A0 4310 ORR R0,R2
000000A2 2800 CMP R0,#0x0
000000A4 D116 BNE L_31 ; T=0x000000D4
216: if (sc) {
000000A6 1C30 MOV R0,R6 ; sc
ARM COMPILER V2.50a, usbcore 27/03/06 17:22:53 PAGE 20
000000A8 2800 CMP R0,#0x0 ; sc
000000AA D009 BEQ L_32 ; T=0x000000C0
217: USB_SetStallEP(n);
000000AC 1C28 MOV R0,R5 ; n
000000AE F7FF BL USB_SetStallEP?T ; T=0x0001 (1)
000000B0 FFA7 BL USB_SetStallEP?T ; T=0x0001 (2)
218: USB_EndPointHalt |= m;
000000B2 1C20 MOV R0,R4 ; m
000000B4 4800 LDR R1,=USB_EndPointHalt ; USB_EndPointHalt
000000B6 6809 LDR R1,[R1,#0x0] ; USB_EndPointHalt
000000B8 4301 ORR R1,R0 ; m
000000BA 4800 LDR R0,=USB_EndPointHalt ; USB_EndPointHalt
000000BC 6001 STR R1,[R0,#0x0] ; USB_EndPointHalt
219: } else {
000000BE E00F B L_18 ; T=0x000000E0
000000C0 L_32:
220: USB_ClrStallEP(n);
000000C0 1C28 MOV R0,R5 ; n
000000C2 F7FF BL USB_ClrStallEP?T ; T=0x0001 (1)
000000C4 FF9D BL USB_ClrStallEP?T ; T=0x0001 (2)
221: USB_EndPointHalt &= ~m;
000000C6 1C20 MOV R0,R4 ; m
000000C8 4800 LDR R1,=USB_EndPointHalt ; USB_EndPointHalt
000000CA 6809 LDR R1,[R1,#0x0] ; USB_EndPointHalt
000000CC 4381 BIC R1,R0 ; m
000000CE 4800 LDR R0,=USB_EndPointHalt ; USB_EndPointHalt
000000D0 6001 STR R1,[R0,#0x0] ; USB_EndPointHalt
223: } else {
000000D2 E005 B L_18 ; T=0x000000E0
000000D4 L_31:
224: return (FALSE);
000000D4 2000 MOV R0,#0x0
000000D6 E004 B L_27 ; T=0x000000E2
226: } else {
000000D8 L_30:
227: return (FALSE);
000000D8 2000 MOV R0,#0x0
000000DA E002 B L_27 ; T=0x000000E2
230: default:
000000DC L_20:
231: return (FALSE);
000000DC 2000 MOV R0,#0x0
000000DE E000 B L_27 ; T=0x000000E2
232: }
000000E0 L_18:
233: return (TRUE);
000000E0 2001 MOV R0,#0x1
000000E2 ; SCOPE-END
234: }
000000E2 L_27:
000000E2 BC70 POP {R4-R6}
000000E4 BC08 POP {R3}
000000E6 4718 BX R3
000000E8 ENDP ; 'USB_SetClrFeature?T'
*** CODE SEGMENT '?PR?USB_GetDescriptor?T?usbcore':
243: __inline BOOL USB_GetDescriptor (void) {
00000000 B530 PUSH {R4-R5,LR}
00000002 ---- Variable 'pD' assigned to Register 'R5' ----
00000002 ---- Variable 'len' assigned to Register 'R4' ----
00000002 ; SCOPE-START
247: switch (SetupPacket.bmRequestType.BM.Recipient) {
00000002 4800 LDR R0,=SetupPacket ; SetupPacket
00000004 7800 LDRB R0,[R0,#0x0] ; SetupPacket
00000006 211F MOV R1,#0x1F
00000008 4008 AND R0,R1
0000000A 2801 CMP R0,#0x1
ARM COMPILER V2.50a, usbcore 27/03/06 17:22:53 PAGE 21
0000000C D040 BEQ L_39 ; T=0x00000090
0000000E 2800 CMP R0,#0x0
00000010 D140 BNE L_38 ; T=0x00000094
248: case REQUEST_TO_DEVICE:
00000012 L_37:
249: switch (SetupPacket.wValue.WB.H) {
00000012 4800 LDR R0,=SetupPacket + 0x3 ; SetupPacket+3
00000014 7800 LDRB R0,[R0,#0x0] ; SetupPacket+3
00000016 2802 CMP R0,#0x2
00000018 D008 BEQ L_43 ; T=0x0000002C
0000001A 2803 CMP R0,#0x3
0000001C D02C BEQ L_44 ; T=0x00000078
0000001E 2801 CMP R0,#0x1
00000020 D134 BNE L_42 ; T=0x0000008C
250: case USB_DEVICE_DESCRIPTOR_TYPE:
00000022 L_41:
251: EP0Data.pData = (BYTE *)USB_DeviceDescriptor;
00000022 4800 LDR R1,=USB_DeviceDescriptor ; USB_DeviceDescriptor
00000024 4800 LDR R0,=EP0Data ; EP0Data
00000026 6001 STR R1,[R0,#0x0] ; EP0Data
252: len = USB_DEVICE_DESC_SIZE;
00000028 2412 MOV R4,#0x12
253: break;
0000002A E035 B L_36 ; T=0x00000098
254: case USB_CONFIGURATION_DESCRIPTOR_TYPE:
0000002C L_43:
255: pD = (BYTE *)USB_ConfigDescriptor;
0000002C 4800 LDR R5,=USB_ConfigDescriptor ; USB_ConfigDescriptor
256: for (n = 0; n != SetupPacket.wValue.WB.L; n++) {
0000002E 2000 MOV R0,#0x0
00000030 ---- Variable 'n' assigned to Register 'R0' ----
00000030 E00B B L_47 ; T=0x0000004A
00000032 L_48:
257: if (((USB_CONFIGURATION_DESCRIPTOR *)pD)->bLength != 0) {
00000032 1C29 MOV R1,R5 ; pD
00000034 7809 LDRB R1,[R1,#0x0] ; pD
00000036 2900 CMP R1,#0x0
00000038 D006 BEQ L_45 ; T=0x00000048
258: pD += ((USB_CONFIGURATION_DESCRIPTOR *)pD)->wTotalLength;
0000003A 1C2A MOV R2,R5 ; pD
0000003C 3202 ADD R2,#0x2
0000003E 7811 LDRB R1,[R2,#0x0]
00000040 7853 LDRB R3,[R2,#0x1]
00000042 021B LSL R3,R3,#0x8
00000044 4319 ORR R1,R3
00000046 186D ADD R5,R1 ; pD
260: }
00000048 L_45:
00000048 3001 ADD R0,#0x1
0000004A L_47:
0000004A 4800 LDR R1,=SetupPacket + 0x2 ; SetupPacket+2
0000004C 7809 LDRB R1,[R1,#0x0] ; SetupPacket+2
0000004E 1C0A MOV R2,R1
00000050 1C01 MOV R1,R0 ; n
00000052 4291 CMP R1,R2 ; n
00000054 D1ED BNE L_48 ; T=0x00000032
261: if (((USB_CONFIGURATION_DESCRIPTOR *)pD)->bLength == 0) {
00000056 1C28 MOV R0,R5 ; pD
00000058 7800 LDRB R0,[R0,#0x0] ; pD
0000005A 2800 CMP R0,#0x0
0000005C D101 BNE L_51 ; T=0x00000062
262: return (FALSE);
0000005E 2000 MOV R0,#0x0
00000060 E027 B L_52 ; T=0x000000B2
263: }
00000062 L_51:
ARM COMPILER V2.50a, usbcore 27/03/06 17:22:53 PAGE 22
264: EP0Data.pData = pD;
00000062 1C29 MOV R1,R5 ; pD
00000064 4800 LDR R0,=EP0Data ; EP0Data
00000066 6001 STR R1,[R0,#0x0] ; EP0Data
265: len = ((USB_CONFIGURATION_DESCRIPTOR *)pD)->wTotalLength;
00000068 1C29 MOV R1,R5 ; pD
0000006A 3102 ADD R1,#0x2
0000006C 7808 LDRB R0,[R1,#0x0]
0000006E 784A LDRB R2,[R1,#0x1]
00000070 0212 LSL R2,R2,#0x8
00000072 4310 ORR R0,R2
00000074 1C04 MOV R4,R0
266: break;
00000076 E00F B L_36 ; T=0x00000098
267: case USB_STRING_DESCRIPTOR_TYPE:
00000078 L_44:
268: EP0Data.pData = (BYTE *)USB_StringDescriptor + SetupPacket.wValue.WB.L;
00000078 4800 LDR R0,=SetupPacket + 0x2 ; SetupPacket+2
0000007A 7800 LDRB R0,[R0,#0x0] ; SetupPacket+2
0000007C 4800 LDR R1,=USB_StringDescriptor ; USB_StringDescriptor
0000007E 1809 ADD R1,R0 ; USB_String
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -