📄 usb_int.txt
字号:
;;;147 }/* while(...) */
;;;148 }
0000bc e8bd9ff0 POP {r4-r12,pc}
|L1.192|
0000c0 0501 LSLS r1,r0,#20 ;99
0000c2 d509 BPL |L1.216|
0000c4 f8d40c00 LDR r0,[r4,#0xc00] ;101
0000c8 b280 UXTH r0,r0 ;101
0000ca ea00000a AND r0,r0,r10 ;101
0000ce f8c40c00 STR r0,[r4,#0xc00] ;101
0000d2 f7fffffe BL Setup0_Process
0000d6 e00a B |L1.238|
|L1.216|
0000d8 0400 LSLS r0,r0,#16 ;109
0000da d53d BPL |L1.344|
0000dc f8d40c00 LDR r0,[r4,#0xc00] ;111
0000e0 b280 UXTH r0,r0 ;111
0000e2 ea00000a AND r0,r0,r10 ;111
0000e6 f8c40c00 STR r0,[r4,#0xc00] ;111
0000ea f7fffffe BL Out0_Process
|L1.238|
0000ee f8d40c00 LDR r0,[r4,#0xc00] ;114
0000f2 f8b81000 LDRH r1,[r8,#0] ;114 ; SaveRState
0000f6 b280 UXTH r0,r0 ;114
0000f8 4030 ANDS r0,r0,r6 ;114
0000fa 04ca LSLS r2,r1,#19 ;114
0000fc d5ca BPL |L1.148|
0000fe f4805080 EOR r0,r0,#0x1000 ;114
000102 e7c7 B |L1.148|
|L1.260|
000104 f0800010 EOR r0,r0,#0x10 ;115
000108 e7d2 B |L1.176|
|L1.266|
00010a eb040180 ADD r1,r4,r0,LSL #2 ;125
00010e f8d12c00 LDR r2,[r1,#0xc00] ;125
000112 b295 UXTH r5,r2 ;125
000114 042a LSLS r2,r5,#16 ;126
000116 d50c BPL |L1.306|
000118 f8d12c00 LDR r2,[r1,#0xc00] ;129
00011c b292 UXTH r2,r2 ;129
00011e ea02020a AND r2,r2,r10 ;129
000122 f8c12c00 STR r2,[r1,#0xc00] ;129
000126 4913 LDR r1,|L1.372|
000128 eb010080 ADD r0,r1,r0,LSL #2 ;132
00012c f8500c04 LDR r0,[r0,#-4] ;132
000130 4780 BLX r0 ;132
|L1.306|
000132 0628 LSLS r0,r5,#24 ;136
000134 d510 BPL |L1.344|
000136 f8990000 LDRB r0,[r9,#0] ;139 ; EPindex
00013a eb040180 ADD r1,r4,r0,LSL #2 ;139
00013e f8d12c00 LDR r2,[r1,#0xc00] ;139
000142 b292 UXTH r2,r2 ;139
000144 ea02020b AND r2,r2,r11 ;139
000148 f8c12c00 STR r2,[r1,#0xc00] ;139
00014c 490a LDR r1,|L1.376|
00014e eb010080 ADD r0,r1,r0,LSL #2 ;142
000152 f8500c04 LDR r0,[r0,#-4] ;142
000156 4780 BLX r0 ;142
|L1.344|
000158 f8d40c44 LDR r0,[r4,#0xc44] ;45
00015c 4907 LDR r1,|L1.380|
00015e 8008 STRH r0,[r1,#0] ;45 ; wIstr
000160 0400 LSLS r0,r0,#16 ;45
000162 f53faf5d BMI |L1.32|
000166 e7a9 B |L1.188|
;;;149
ENDP
|L1.360|
000168 00000000 DCD ||.data||
|L1.364|
00016c 00000000 DCD EPindex
|L1.368|
000170 40005000 DCD 0x40005000
|L1.372|
000174 00000000 DCD pEpInt_OUT
|L1.376|
000178 00000000 DCD pEpInt_IN
|L1.380|
00017c 00000000 DCD wIstr
AREA ||i.CTR_HP||, CODE, READONLY, ALIGN=2
CTR_HP PROC
;;;158 void CTR_HP(void)
;;;159 {
000000 b570 PUSH {r4-r6,lr}
000002 4c1a LDR r4,|L2.108|
000004 4d1a LDR r5,|L2.112|
000006 4e1b LDR r6,|L2.116|
;;;160 u32 wEPVal = 0;
;;;161
;;;162 while (((wIstr = _GetISTR()) & ISTR_CTR) != 0)
000008 e02a B |L2.96|
;;;163 {
;;;164 _SetISTR((u16)CLR_CTR); /* clear CTR flag */
00000a bf00 NOP
|L2.12|
00000c f64770ff MOV r0,#0x7fff
000010 f8c50c44 STR r0,[r5,#0xc44]
;;;165 /* extract highest priority endpoint number */
;;;166 EPindex = (u8)(wIstr & ISTR_EP_ID);
000014 8830 LDRH r0,[r6,#0] ; wIstr
000016 f000000f AND r0,r0,#0xf
00001a 7020 STRB r0,[r4,#0] ; EPindex
;;;167 /* process related endpoint register */
;;;168 wEPVal = _GetENDPOINT(EPindex);
00001c b2c1 UXTB r1,r0
00001e eb050081 ADD r0,r5,r1,LSL #2
000022 f8d02c00 LDR r2,[r0,#0xc00]
000026 b292 UXTH r2,r2
;;;169 if ((wEPVal & EP_CTR_RX) != 0)
000028 0413 LSLS r3,r2,#16
00002a d509 BPL |L2.64|
;;;170 {
;;;171 /* clear int flag */
;;;172 _ClearEP_CTR_RX(EPindex);
00002c f8d02c00 LDR r2,[r0,#0xc00]
000030 f640738f MOV r3,#0xf8f
000034 b292 UXTH r2,r2
000036 401a ANDS r2,r2,r3
000038 f8c02c00 STR r2,[r0,#0xc00]
;;;173
;;;174 /* call OUT service function */
;;;175 (*pEpInt_OUT[EPindex-1])();
00003c 480e LDR r0,|L2.120|
00003e e00a B |L2.86|
|L2.64|
;;;176
;;;177 } /* if((wEPVal & EP_CTR_RX) */
;;;178 else if ((wEPVal & EP_CTR_TX) != 0)
000040 0612 LSLS r2,r2,#24
000042 d50d BPL |L2.96|
;;;179 {
;;;180 /* clear int flag */
;;;181 _ClearEP_CTR_TX(EPindex);
000044 f8d02c00 LDR r2,[r0,#0xc00]
000048 f648730f MOV r3,#0x8f0f
00004c b292 UXTH r2,r2
00004e 401a ANDS r2,r2,r3
000050 f8c02c00 STR r2,[r0,#0xc00]
;;;182
;;;183 /* call IN service function */
;;;184 (*pEpInt_IN[EPindex-1])();
000054 4809 LDR r0,|L2.124|
|L2.86|
000056 eb000081 ADD r0,r0,r1,LSL #2
00005a f8500c04 LDR r0,[r0,#-4]
00005e 4780 BLX r0
|L2.96|
000060 f8d50c44 LDR r0,[r5,#0xc44] ;162
000064 8030 STRH r0,[r6,#0] ;162 ; wIstr
000066 0400 LSLS r0,r0,#16 ;162
000068 d4d0 BMI |L2.12|
;;;185
;;;186
;;;187 } /* if((wEPVal & EP_CTR_TX) != 0) */
;;;188
;;;189 }/* while(...) */
;;;190 }
00006a bd70 POP {r4-r6,pc}
;;;191
ENDP
|L2.108|
00006c 00000000 DCD EPindex
|L2.112|
000070 40005000 DCD 0x40005000
|L2.116|
000074 00000000 DCD wIstr
|L2.120|
000078 00000000 DCD pEpInt_OUT
|L2.124|
00007c 00000000 DCD pEpInt_IN
AREA ||.data||, DATA, ALIGN=1
SaveRState
000000 0000 DCB 0x00,0x00
SaveTState
000002 0000 DCB 0x00,0x00
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -