📄 usb_int.s79
字号:
EORS R1,R1,#0x2000
STR R1,[R5, #+0]
LDR R1,[R5, #+0]
ANDS R1,R1,R6
EORS R1,R1,#0x20
STR R1,[R5, #+0]
LDRH R1,[R8, #+0]
LSLS R1,R1,#+27
BMI.N ??CTR_LP_5
LDR R0,[R5, #+0]
ANDS R0,R10,R0
STR R0,[R5, #+0]
_BLF In0_Process,??In0_Process??rT
LDR R0,[R5, #+0]
ANDS R4,R4,R0
LDRH R0,[R11, #+0]
LSLS R1,R0,#+19
IT MI
EORSMI R4,R4,#0x1000
LSLS R0,R0,#+18
BPL.N ??CTR_LP_6
EORS R4,R4,#0x2000
UXTH R4,R4
??CTR_LP_6:
STR R4,[R5, #+0]
LDR R0,[R5, #+0]
ANDS R6,R6,R0
LDRH R0,[R11, #+2]
LSLS R1,R0,#+27
IT MI
EORSMI R6,R6,#0x10
LSLS R0,R0,#+26
BPL.N ??CTR_LP_7
EORS R6,R6,#0x20
UXTH R6,R6
??CTR_LP_8:
B.N ??CTR_LP_7
??CTR_LP_5:
LDR R7,[R5, #+0]
UXTH R7,R7
LSLS R1,R7,#+24
BPL.N ??CTR_LP_9
LDR R0,[R5, #+0]
ANDS R0,R10,R0
STR R0,[R5, #+0]
_BLF In0_Process,??In0_Process??rT
LDR R0,[R5, #+0]
ANDS R4,R4,R0
LDRH R0,[R11, #+0]
LSLS R1,R0,#+19
IT MI
EORSMI R4,R4,#0x1000
LSLS R0,R0,#+18
BPL.N ??CTR_LP_10
EORS R4,R4,#0x2000
UXTH R4,R4
??CTR_LP_10:
STR R4,[R5, #+0]
LDR R0,[R5, #+0]
ANDS R6,R6,R0
LDRH R0,[R11, #+2]
LSLS R1,R0,#+27
IT MI
EORSMI R6,R6,#0x10
LSLS R0,R0,#+26
BPL.N ??CTR_LP_7
EORS R6,R6,#0x20
UXTH R6,R6
??CTR_LP_11:
B.N ??CTR_LP_7
??CTR_LP_9:
LSLS R1,R7,#+20
BPL.N ??CTR_LP_12
LDR R1,[R5, #+0]
ANDS R0,R0,R1
STR R0,[R5, #+0]
_BLF Setup0_Process,??Setup0_Process??rT
LDR R0,[R5, #+0]
ANDS R4,R4,R0
LDRH R0,[R11, #+0]
LSLS R1,R0,#+19
IT MI
EORSMI R4,R4,#0x1000
LSLS R0,R0,#+18
BPL.N ??CTR_LP_13
EORS R4,R4,#0x2000
UXTH R4,R4
??CTR_LP_13:
STR R4,[R5, #+0]
LDR R0,[R5, #+0]
ANDS R6,R6,R0
LDRH R0,[R11, #+2]
LSLS R1,R0,#+27
IT MI
EORSMI R6,R6,#0x10
LSLS R0,R0,#+26
BPL.N ??CTR_LP_7
EORS R6,R6,#0x20
UXTH R6,R6
??CTR_LP_14:
B.N ??CTR_LP_7
??CTR_LP_12:
LSLS R1,R7,#+16
BPL.W ??CTR_LP_1
LDR R1,[R5, #+0]
ANDS R0,R0,R1
STR R0,[R5, #+0]
_BLF Out0_Process,??Out0_Process??rT
LDR R0,[R5, #+0]
ANDS R4,R4,R0
LDRH R0,[R11, #+0]
LSLS R1,R0,#+19
IT MI
EORSMI R4,R4,#0x1000
LSLS R0,R0,#+18
BPL.N ??CTR_LP_15
EORS R4,R4,#0x2000
UXTH R4,R4
??CTR_LP_15:
STR R4,[R5, #+0]
LDR R0,[R5, #+0]
ANDS R6,R6,R0
LDRH R0,[R11, #+2]
LSLS R1,R0,#+27
IT MI
EORSMI R6,R6,#0x10
LSLS R0,R0,#+26
BPL.N ??CTR_LP_7
EORS R6,R6,#0x20
UXTH R6,R6
??CTR_LP_7:
STR R6,[R5, #+0]
??CTR_LP_4:
POP {R4-R11,PC} ;; return
DATA
??CTR_LP_0:
DC32 0x8fbf
DC32 SaveRState
DC32 0xbf8f
CFI EndBlock cfiBlock0
// 146
// 147 }/* while(...) */
// 148 }
// 149
// 150 /*******************************************************************************
// 151 * Function Name : CTR_HP.
// 152 * Description : High Priority Endpoint Correct Transfer interrupt's service
// 153 * routine.
// 154 * Input : None.
// 155 * Output : None.
// 156 * Return : None.
// 157 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock1 Using cfiCommon0
CFI Function CTR_HP
THUMB
// 158 void CTR_HP(void)
// 159 {
CTR_HP:
PUSH {R4,R5,LR}
CFI ?RET Frame(CFA, -4)
CFI R5 Frame(CFA, -8)
CFI R4 Frame(CFA, -12)
CFI CFA R13+12
// 160 u32 wEPVal = 0;
LDR.N R4,??DataTable9 ;; wIstr
LDR.N R5,??DataTable10 ;; 0x40005c44
B.N ??CTR_HP_0
// 161
// 162 while (((wIstr = _GetISTR()) & ISTR_CTR) != 0)
// 163 {
// 164 _SetISTR((u16)CLR_CTR); /* clear CTR flag */
// 165 /* extract highest priority endpoint number */
// 166 EPindex = (u8)(wIstr & ISTR_EP_ID);
// 167 /* process related endpoint register */
// 168 wEPVal = _GetENDPOINT(EPindex);
// 169 if ((wEPVal & EP_CTR_RX) != 0)
// 170 {
// 171 /* clear int flag */
// 172 _ClearEP_CTR_RX(EPindex);
??CTR_HP_1:
LDR R2,[R1, #+0]
LDR.N R3,??DataTable11 ;; 0xf8f
ANDS R3,R3,R2
STR R3,[R1, #+0]
// 173
// 174 /* call OUT service function */
// 175 (*pEpInt_OUT[EPindex-1])();
LDR.N R1,??DataTable12 ;; pEpInt_OUT
ADDS R0,R1,R0, LSL #+2
SUBS R0,R0,#+4
LDR R0,[R0, #+0]
BLX R0
// 176
// 177 } /* if((wEPVal & EP_CTR_RX) */
??CTR_HP_0:
LDR R0,[R5, #+0]
STRH R0,[R4, #+0]
LSLS R0,R0,#+16
BPL.N ??CTR_HP_2
LDR.N R0,??DataTable13 ;; 0x7fff
LDR.N R1,??DataTable14 ;; EPindex
STR R0,[R5, #+0]
LDRH R0,[R4, #+0]
LSLS R0,R0,#+28
LSRS R0,R0,#+28
STRB R0,[R1, #+0]
LDR.N R1,??DataTable15 ;; 0x40005c00
ADDS R1,R1,R0, LSL #+2
LDR R2,[R1, #+0]
UXTH R2,R2
LSLS R3,R2,#+16
BMI.N ??CTR_HP_1
// 178 else if ((wEPVal & EP_CTR_TX) != 0)
LSLS R2,R2,#+24
BPL.N ??CTR_HP_0
// 179 {
// 180 /* clear int flag */
// 181 _ClearEP_CTR_TX(EPindex);
LDR R2,[R1, #+0]
LDR.N R3,??DataTable16 ;; 0x8f0f
ANDS R3,R3,R2
STR R3,[R1, #+0]
// 182
// 183 /* call IN service function */
// 184 (*pEpInt_IN[EPindex-1])();
LDR.N R1,??DataTable17 ;; pEpInt_IN
ADDS R0,R1,R0, LSL #+2
SUBS R0,R0,#+4
LDR R0,[R0, #+0]
BLX R0
B.N ??CTR_HP_0
// 185
// 186
// 187 } /* if((wEPVal & EP_CTR_TX) != 0) */
// 188
// 189 }/* while(...) */
// 190 }
??CTR_HP_2:
POP {R4,R5,PC} ;; return
CFI EndBlock cfiBlock1
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable9:
DC32 wIstr
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable10:
DC32 0x40005c44
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable11:
DC32 0xf8f
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable12:
DC32 pEpInt_OUT
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable13:
DC32 0x7fff
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable14:
DC32 EPindex
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable15:
DC32 0x40005c00
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable16:
DC32 0x8f0f
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable17:
DC32 pEpInt_IN
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock2 Using cfiCommon0
CFI NoFunction
THUMB
??In0_Process??rT:
LDR.N R3,??Subroutine0_0 ;; In0_Process
BX R3
DATA
??Subroutine0_0:
DC32 In0_Process
CFI EndBlock cfiBlock2
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock3 Using cfiCommon0
CFI NoFunction
THUMB
??Setup0_Process??rT:
LDR.N R3,??Subroutine1_0 ;; Setup0_Process
BX R3
DATA
??Subroutine1_0:
DC32 Setup0_Process
CFI EndBlock cfiBlock3
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock4 Using cfiCommon0
CFI NoFunction
THUMB
??Out0_Process??rT:
LDR.N R3,??Subroutine2_0 ;; Out0_Process
BX R3
DATA
??Subroutine2_0:
DC32 Out0_Process
CFI EndBlock cfiBlock4
RSEG INITTAB:CODE:ROOT(2)
DATA
?init?tab?DATA_Z:
DCD sfe(DATA_Z) - sfb(DATA_Z), sfb(DATA_Z), sfb(DATA_Z)
END
// 191
// 192 /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/
//
// 628 bytes in segment CODE
// 4 bytes in segment DATA_Z
// 12 bytes in segment INITTAB
//
// 604 bytes of CODE memory (+ 36 bytes shared)
// 4 bytes of DATA memory
//
//Errors: none
//Warnings: none
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -