📄 usbcore.lst
字号:
*** CODE SEGMENT '?PR?USB_GetStatus?T?usbcore':
130: __inline BOOL USB_GetStatus (void) {
00000000 B500 PUSH {LR}
00000002 ; SCOPE-START
133: 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
0000000C D009 BEQ L_6 ; T=0x00000022
0000000E 2802 CMP R0,#0x2
00000010 D01F BEQ L_7 ; T=0x00000052
00000012 2800 CMP R0,#0x0
00000014 D152 BNE L_5 ; T=0x000000BC
134: case REQUEST_TO_DEVICE:
00000016 L_4:
135: EP0Data.pData = (BYTE *)&USB_DeviceStatus;
00000016 4800 LDR R1,=USB_DeviceStatus ; USB_DeviceStatus
00000018 4800 LDR R0,=EP0Data ; EP0Data
0000001A 6001 STR R1,[R0,#0x0] ; EP0Data
136: USB_DataInStage();
0000001C F7FF BL USB_DataInStage?T ; T=0x0001 (1)
0000001E FFF0 BL USB_DataInStage?T ; T=0x0001 (2)
137: break;
00000020 E04E B L_3 ; T=0x000000C0
138: case REQUEST_TO_INTERFACE:
00000022 L_6:
139: if ((USB_Configuration != 0) && (SetupPacket.wIndex.WB.L < USB_NumInterfaces)) {
00000022 4800 LDR R0,=USB_Configuration ; USB_Configuration
00000024 7800 LDRB R0,[R0,#0x0] ; USB_Configuration
00000026 2800 CMP R0,#0x0
00000028 D011 BEQ L_8 ; T=0x0000004E
0000002A 4800 LDR R0,=USB_NumInterfaces ; USB_NumInterfaces
0000002C 7800 LDRB R0,[R0,#0x0] ; USB_NumInterfaces
0000002E 1C01 MOV R1,R0
00000030 4800 LDR R0,=SetupPacket + 0x4 ; SetupPacket+4
00000032 7800 LDRB R0,[R0,#0x0] ; SetupPacket+4
00000034 4288 CMP R0,R1
00000036 D20A BCS L_8 ; T=0x0000004E
140: *((__packed WORD *)EP0Buf) = 0;
00000038 2100 MOV R1,#0x0
0000003A 4800 LDR R0,=EP0Buf ; EP0Buf
0000003C 7001 STRB R1,[R0,#0x0] ; EP0Buf
0000003E 0A09 LSR R1,R1,#0x8
00000040 7041 STRB R1,[R0,#0x1] ; EP0Buf
141: EP0Data.pData = EP0Buf;
00000042 4800 LDR R1,=EP0Buf ; EP0Buf
00000044 4800 LDR R0,=EP0Data ; EP0Data
00000046 6001 STR R1,[R0,#0x0] ; EP0Data
142: USB_DataInStage();
00000048 F7FF BL USB_DataInStage?T ; T=0x0001 (1)
0000004A FFDA BL USB_DataInStage?T ; T=0x0001 (2)
143: } else {
0000004C E038 B L_3 ; T=0x000000C0
0000004E L_8:
144: return (FALSE);
0000004E 2000 MOV R0,#0x0
00000050 E037 B L_10 ; T=0x000000C2
147: case REQUEST_TO_ENDPOINT:
00000052 L_7:
148: n = SetupPacket.wIndex.WB.L & 0x8F;
00000052 4800 LDR R0,=SetupPacket + 0x4 ; SetupPacket+4
00000054 7800 LDRB R0,[R0,#0x0] ; SetupPacket+4
00000056 1C03 MOV R3,R0
ARM COMPILER V2.53, usbcore 31/10/07 09:22:44 PAGE 15
00000058 208F MOV R0,#0x8F
0000005A 4003 AND R3,R0
0000005C ---- Variable 'n' assigned to Register 'R3' ----
149: m = (n & 0x80) ? ((1 << 16) << (n & 0x0F)) : (1 << n);
0000005C 1C18 MOV R0,R3 ; n
0000005E 2180 MOV R1,#0x80
00000060 4208 TST R0,R1 ; n
00000062 D005 BEQ L_11 ; T=0x00000070
00000064 1C18 MOV R0,R3 ; n
00000066 210F MOV R1,#0xF
00000068 4008 AND R0,R1
0000006A 4800 LDR R2,=0x10000
0000006C 4082 LSL R2,R0
0000006E E002 B L_12 ; T=0x00000076
00000070 L_11:
00000070 1C18 MOV R0,R3 ; n
00000072 2201 MOV R2,#0x1
00000074 4082 LSL R2,R0
00000076 L_12:
00000076 ---- Variable 'm' assigned to Register 'R2' ----
150: if (((USB_Configuration != 0) || ((n & 0x0F) == 0)) && (USB_EndPointMask & m)) {
00000076 4800 LDR R0,=USB_Configuration ; USB_Configuration
00000078 7800 LDRB R0,[R0,#0x0] ; USB_Configuration
0000007A 2800 CMP R0,#0x0
0000007C D103 BNE L_14 ; T=0x00000086
0000007E 1C18 MOV R0,R3 ; n
00000080 210F MOV R1,#0xF
00000082 4208 TST R0,R1 ; n
00000084 D118 BNE L_13 ; T=0x000000B8
00000086 L_14:
00000086 1C11 MOV R1,R2 ; m
00000088 4800 LDR R0,=USB_EndPointMask ; USB_EndPointMask
0000008A 6800 LDR R0,[R0,#0x0] ; USB_EndPointMask
0000008C 4008 AND R0,R1 ; m
0000008E 2800 CMP R0,#0x0
00000090 D012 BEQ L_13 ; T=0x000000B8
151: *((__packed WORD *)EP0Buf) = (USB_EndPointHalt & m) ? 1 : 0;
00000092 1C11 MOV R1,R2 ; m
00000094 4800 LDR R0,=USB_EndPointHalt ; USB_EndPointHalt
00000096 6800 LDR R0,[R0,#0x0] ; USB_EndPointHalt
00000098 4008 AND R0,R1 ; m
0000009A 2800 CMP R0,#0x0
0000009C D001 BEQ L_15 ; T=0x000000A2
0000009E 2101 MOV R1,#0x1
000000A0 E000 B L_16 ; T=0x000000A4
000000A2 L_15:
000000A2 2100 MOV R1,#0x0
000000A4 L_16:
000000A4 4800 LDR R0,=EP0Buf ; EP0Buf
000000A6 7001 STRB R1,[R0,#0x0] ; EP0Buf
000000A8 0A09 LSR R1,R1,#0x8
000000AA 7041 STRB R1,[R0,#0x1] ; EP0Buf
152: EP0Data.pData = EP0Buf;
000000AC 4800 LDR R1,=EP0Buf ; EP0Buf
000000AE 4800 LDR R0,=EP0Data ; EP0Data
000000B0 6001 STR R1,[R0,#0x0] ; EP0Data
153: USB_DataInStage();
000000B2 F7FF BL USB_DataInStage?T ; T=0x0001 (1)
000000B4 FFA5 BL USB_DataInStage?T ; T=0x0001 (2)
154: } else {
000000B6 E003 B L_3 ; T=0x000000C0
000000B8 L_13:
155: return (FALSE);
000000B8 2000 MOV R0,#0x0
000000BA E002 B L_10 ; T=0x000000C2
158: default:
ARM COMPILER V2.53, usbcore 31/10/07 09:22:44 PAGE 16
000000BC L_5:
159: return (FALSE);
000000BC 2000 MOV R0,#0x0
000000BE E000 B L_10 ; T=0x000000C2
160: }
000000C0 L_3:
161: return (TRUE);
000000C0 2001 MOV R0,#0x1
000000C2 ; SCOPE-END
162: }
000000C2 L_10:
000000C2 BC08 POP {R3}
000000C4 4718 BX R3
000000C6 ENDP ; 'USB_GetStatus?T'
*** CODE SEGMENT '?PR?USB_SetClrFeature?T?usbcore':
172: __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
175: 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 D163 BNE L_20 ; T=0x000000E0
176: case REQUEST_TO_DEVICE:
00000018 L_19:
177: 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
178: if (sc) {
00000026 1C30 MOV R0,R6 ; sc
00000028 2800 CMP R0,#0x0 ; sc
0000002A D009 BEQ L_24 ; T=0x00000040
179: 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)
180: 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
181: } else {
0000003E E051 B L_18 ; T=0x000000E4
00000040 L_24:
182: 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)
183: USB_DeviceStatus &= ~USB_GETSTATUS_REMOTE_WAKEUP;
00000046 4800 LDR R0,=USB_DeviceStatus ; USB_DeviceStatus
00000048 8801 LDRH R1,[R0,#0x0] ; USB_DeviceStatus
ARM COMPILER V2.53, usbcore 31/10/07 09:22:44 PAGE 17
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
185: } else {
00000052 E047 B L_18 ; T=0x000000E4
00000054 L_23:
186: return (FALSE);
00000054 2000 MOV R0,#0x0
00000056 E046 B L_27 ; T=0x000000E6
189: case REQUEST_TO_INTERFACE:
00000058 L_21:
190: return (FALSE);
00000058 2000 MOV R0,#0x0
0000005A E044 B L_27 ; T=0x000000E6
191: case REQUEST_TO_ENDPOINT:
0000005C L_22:
192: 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' ----
193: m = (n & 0x80) ? ((1 << 16) << (n & 0x0F)) : (1 << n);
00000066 1C28 MOV R0,R5 ; n
00000068 2180 MOV R1,#0x80
0000006A 4208 TST R0,R1 ; n
0000006C D005 BEQ L_28 ; T=0x0000007A
0000006E 1C28 MOV R0,R5 ; n
00000070 210F MOV R1,#0xF
00000072 4008 AND R0,R1
00000074 4800 LDR R4,=0x10000
00000076 4084 LSL R4,R0
00000078 E002 B L_29 ; T=0x00000080
0000007A L_28:
0000007A 1C28 MOV R0,R5 ; n
0000007C 2401 MOV R4,#0x1
0000007E 4084 LSL R4,R0
00000080 L_29:
00000080 ---- Variable 'm' assigned to Register 'R4' ----
194: if ((USB_Configuration != 0) && ((n & 0x0F) != 0) && (USB_EndPointMask & m)) {
00000080 4800 LDR R0,=USB_Configuration ; USB_Configuration
00000082 7800 LDRB R0,[R0,#0x0] ; USB_Configuration
00000084 2800 CMP R0,#0x0
00000086 D029 BEQ L_30 ; T=0x000000DC
00000088 1C28 MOV R0,R5 ; n
0000008A 210F MOV R1,#0xF
0000008C 4208 TST R0,R1 ; n
0000008E D025 BEQ L_30 ; T=0x000000DC
00000090 1C21 MOV R1,R4 ; m
00000092 4800 LDR R0,=USB_EndPointMask ; USB_EndPointMask
00000094 6800 LDR R0,[R0,#0x0] ; USB_EndPointMask
00000096 4008 AND R0,R1 ; m
00000098 2800 CMP R0,#0x0
0000009A D01F BEQ L_30 ; T=0x000000DC
195: if (SetupPacket.wValue.W == USB_FEATURE_ENDPOINT_STALL) {
0000009C 4800 LDR R1,=SetupPacket + 0x2 ; SetupPacket+2
0000009E 7808 LDRB R0,[R1,#0x0] ; SetupPacket+2
000000A0 784A LDRB R2,[R1,#0x1] ; SetupPacket+2
000000A2 0212 LSL R2,R2,#0x8
000000A4 4310 ORR R0,R2
000000A6 2800 CMP R0,#0x0
000000A8 D116 BNE L_31 ; T=0x000000D8
196: if (sc) {
000000AA 1C30 MOV R0,R6 ; sc
ARM COMPILER V2.53, usbcore 31/10/07 09:22:44 PAGE 18
000000AC 2800 CMP R0,#0x0 ; sc
000000AE D009 BEQ L_32 ; T=0x000000C4
197: USB_SetStallEP(n);
000000B0 1C28 MOV R0,R5 ; n
000000B2 F7FF BL USB_SetStallEP?T ; T=0x0001 (1)
000000B4 FFA5 BL USB_SetStallEP?T ; T=0x0001 (2)
198: USB_EndPointHalt |= m;
000000B6 1C20 MOV R0,R4 ; m
000000B8 4800 LDR R1,=USB_EndPointHalt ; USB_EndPointHalt
000000BA 6809 LDR R1,[R1,#0x0] ; USB_EndPointHalt
000000BC 4301 ORR R1,R0 ; m
000000BE 4800 LDR R0,=USB_EndPointHalt ; USB_EndPointHalt
000000C0 6001 STR R1,[R0,#0x0] ; USB_EndPointHalt
199: } else {
000000C2 E00F B L_18 ; T=0x000000E4
000000C4 L_32:
200: USB_ClrStallEP(n);
000000C4 1C28 MOV R0,R5 ; n
000000C6 F7FF BL USB_ClrStallEP?T ; T=0x0001 (1)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -