?? usb_regs.s79
字號:
// 519 * Description : Set the Count Rx Register value.
// 520 * Input : *pdwReg: point to the register.
// 521 * wCount: the new register value.
// 522 * Output : None.
// 523 * Return : None.
// 524 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock44 Using cfiCommon0
CFI Function SetEPCountRxReg
THUMB
// 525 void SetEPCountRxReg(u32 *pdwReg, u16 wCount)
// 526 {
// 527 _SetEPCountRxReg(dwReg, wCount);
SetEPCountRxReg:
CMP R1,#+63
BCC.N ??SetEPCountRxReg_0
LSRS R2,R1,#+5
LSLS R1,R1,#+27
ITT EQ
SUBEQ R2,R2,#+1
UXTHEQ R2,R2
LSLS R1,R2,#+10
ORRS R1,R1,#0x8000
B.N ??SetEPCountRxReg_1
??SetEPCountRxReg_0:
LSRS R2,R1,#+1
LSLS R1,R1,#+31
ITT MI
ADDMI R2,R2,#+1
UXTHMI R2,R2
LSLS R1,R2,#+10
??SetEPCountRxReg_1:
STR R1,[R0, #+0]
// 528 }
BX LR ;; return
CFI EndBlock cfiBlock44
// 529 /*******************************************************************************
// 530 * Function Name : SetEPRxCount
// 531 * Description : Set the Rx count.
// 532 * Input : bEpNum: Endpoint Number.
// 533 * wCount: the new count value.
// 534 * Output : None.
// 535 * Return : None.
// 536 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock45 Using cfiCommon0
CFI Function SetEPRxCount
THUMB
// 537 void SetEPRxCount(u8 bEpNum, u16 wCount)
// 538 {
// 539 _SetEPRxCount(bEpNum, wCount);
SetEPRxCount:
LDR.N R2,??DataTable88 ;; 0x40005c50
LDR R2,[R2, #+0]
UXTH R2,R2
ADDS R0,R2,R0, LSL #+3
LDR.N R2,??DataTable89 ;; 0x4000600c
ADDS R0,R2,R0, LSL #+1
CMP R1,#+63
BCC.N ??SetEPRxCount_0
LSRS R2,R1,#+5
LSLS R1,R1,#+27
ITT EQ
SUBEQ R2,R2,#+1
UXTHEQ R2,R2
LSLS R1,R2,#+10
ORRS R1,R1,#0x8000
B.N ??SetEPRxCount_1
??SetEPRxCount_0:
LSRS R2,R1,#+1
LSLS R1,R1,#+31
ITT MI
ADDMI R2,R2,#+1
UXTHMI R2,R2
LSLS R1,R2,#+10
??SetEPRxCount_1:
STR R1,[R0, #+0]
// 540 }
BX LR ;; return
CFI EndBlock cfiBlock45
// 541 /*******************************************************************************
// 542 * Function Name : GetEPTxCount
// 543 * Description : Get the Tx count.
// 544 * Input : bEpNum: Endpoint Number.
// 545 * Output : None
// 546 * Return : Tx count value.
// 547 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock46 Using cfiCommon0
CFI Function GetEPTxCount
THUMB
// 548 u16 GetEPTxCount(u8 bEpNum)
// 549 {
// 550 return(_GetEPTxCount(bEpNum));
GetEPTxCount:
LDR.N R1,??DataTable88 ;; 0x40005c50
LDR R1,[R1, #+0]
UXTH R1,R1
ADDS R0,R1,R0, LSL #+3
LDR.N R1,??DataTable90 ;; 0x40006004
LDR R0,[R1, R0, LSL #+1]
B.N ?Subroutine3
CFI EndBlock cfiBlock46
// 551 }
// 552 /*******************************************************************************
// 553 * Function Name : GetEPRxCount
// 554 * Description : Get the Rx count.
// 555 * Input : bEpNum: Endpoint Number.
// 556 * Output : None.
// 557 * Return : Rx count value.
// 558 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock47 Using cfiCommon0
CFI Function GetEPRxCount
THUMB
// 559 u16 GetEPRxCount(u8 bEpNum)
// 560 {
// 561 return(_GetEPRxCount(bEpNum));
GetEPRxCount:
LDR.N R1,??DataTable88 ;; 0x40005c50
LDR R1,[R1, #+0]
UXTH R1,R1
ADDS R0,R1,R0, LSL #+3
LDR.N R1,??DataTable89 ;; 0x4000600c
LDR R0,[R1, R0, LSL #+1]
CFI EndBlock cfiBlock47
REQUIRE ?Subroutine3
;; // Fall through to label ?Subroutine3
// 562 }
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock48 Using cfiCommon0
CFI NoFunction
THUMB
?Subroutine3:
LSLS R0,R0,#+22
LSRS R0,R0,#+22
BX LR ;; return
CFI EndBlock cfiBlock48
// 563 /*******************************************************************************
// 564 * Function Name : SetEPDblBuffAddr
// 565 * Description : Set the addresses of the buffer 0 and 1.
// 566 * Input : bEpNum: Endpoint Number.
// 567 * wBuf0Addr: new address of buffer 0.
// 568 * wBuf1Addr: new address of buffer 1.
// 569 * Output : None.
// 570 * Return : None.
// 571 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock49 Using cfiCommon0
CFI Function SetEPDblBuffAddr
THUMB
// 572 void SetEPDblBuffAddr(u8 bEpNum, u16 wBuf0Addr, u16 wBuf1Addr)
// 573 {
// 574 _SetEPDblBuffAddr(bEpNum, wBuf0Addr, wBuf1Addr);
SetEPDblBuffAddr:
LDR.N R3,??DataTable88 ;; 0x40005c50
PUSH {R4,R5,LR}
CFI ?RET Frame(CFA, -4)
CFI R5 Frame(CFA, -8)
CFI R4 Frame(CFA, -12)
CFI CFA R13+12
LDR.N R5,??DataTable74 ;; 0x40006000
LDR R4,[R3, #+0]
LSLS R0,R0,#+3
LSRS R1,R1,#+1
UXTH R4,R4
ADDS R4,R4,R0
LSLS R1,R1,#+1
STR R1,[R5, R4, LSL #+1]
LDR R1,[R3, #+0]
LSRS R2,R2,#+1
LSLS R2,R2,#+1
UXTH R1,R1
ADDS R0,R1,R0
LDR.N R1,??DataTable76 ;; 0x40006008
STR R2,[R1, R0, LSL #+1]
// 575 }
POP {R4,R5,PC} ;; return
CFI EndBlock cfiBlock49
// 576 /*******************************************************************************
// 577 * Function Name : SetEPDblBuf0Addr
// 578 * Description : Set the Buffer 1 address.
// 579 * Input : bEpNum: Endpoint Number
// 580 * wBuf0Addr: new address.
// 581 * Output : None.
// 582 * Return : None.
// 583 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock50 Using cfiCommon0
CFI Function SetEPDblBuf0Addr
THUMB
// 584 void SetEPDblBuf0Addr(u8 bEpNum, u16 wBuf0Addr)
// 585 {
// 586 _SetEPDblBuf0Addr(bEpNum, wBuf0Addr);
SetEPDblBuf0Addr:
LDR.N R2,??DataTable88 ;; 0x40005c50
LSRS R1,R1,#+1
LSLS R1,R1,#+1
LDR R2,[R2, #+0]
UXTH R2,R2
ADDS R0,R2,R0, LSL #+3
LDR.N R2,??DataTable74 ;; 0x40006000
STR R1,[R2, R0, LSL #+1]
// 587 }
BX LR ;; return
CFI EndBlock cfiBlock50
// 588 /*******************************************************************************
// 589 * Function Name : SetEPDblBuf1Addr
// 590 * Description : Set the Buffer 1 address.
// 591 * Input : bEpNum: Endpoint Number
// 592 * wBuf1Addr: new address.
// 593 * Output : None.
// 594 * Return : None.
// 595 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock51 Using cfiCommon0
CFI Function SetEPDblBuf1Addr
THUMB
// 596 void SetEPDblBuf1Addr(u8 bEpNum, u16 wBuf1Addr)
// 597 {
// 598 _SetEPDblBuf1Addr(bEpNum, wBuf1Addr);
SetEPDblBuf1Addr:
LDR.N R2,??DataTable88 ;; 0x40005c50
LSRS R1,R1,#+1
LSLS R1,R1,#+1
LDR R2,[R2, #+0]
UXTH R2,R2
ADDS R0,R2,R0, LSL #+3
LDR.N R2,??DataTable76 ;; 0x40006008
STR R1,[R2, R0, LSL #+1]
// 599 }
BX LR ;; return
CFI EndBlock cfiBlock51
// 600 /*******************************************************************************
// 601 * Function Name : GetEPDblBuf0Addr
// 602 * Description : Returns the address of the Buffer 0.
// 603 * Input : bEpNum: Endpoint Number.
// 604 * Output : None.
// 605 * Return : None.
// 606 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock52 Using cfiCommon0
CFI Function GetEPDblBuf0Addr
THUMB
// 607 u16 GetEPDblBuf0Addr(u8 bEpNum)
// 608 {
// 609 return(_GetEPDblBuf0Addr(bEpNum));
GetEPDblBuf0Addr:
LDR.N R1,??DataTable88 ;; 0x40005c50
LDR R1,[R1, #+0]
UXTH R1,R1
ADDS R0,R1,R0, LSL #+3
LDR.N R1,??DataTable74 ;; 0x40006000
LDR R0,[R1, R0, LSL #+1]
UXTH R0,R0
BX LR ;; return
CFI EndBlock cfiBlock52
// 610 }
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable74:
DC32 0x40006000
// 611 /*******************************************************************************
// 612 * Function Name : GetEPDblBuf1Addr
// 613 * Description : Returns the address of the Buffer 1.
// 614 * Input : bEpNum: Endpoint Number.
// 615 * Output : None.
// 616 * Return : Address of the Buffer 1.
// 617 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock53 Using cfiCommon0
CFI Function GetEPDblBuf1Addr
THUMB
// 618 u16 GetEPDblBuf1Addr(u8 bEpNum)
// 619 {
// 620 return(_GetEPDblBuf1Addr(bEpNum));
GetEPDblBuf1Addr:
LDR.N R1,??DataTable88 ;; 0x40005c50
LDR R1,[R1, #+0]
UXTH R1,R1
ADDS R0,R1,R0, LSL #+3
LDR.N R1,??DataTable76 ;; 0x40006008
LDR R0,[R1, R0, LSL #+1]
UXTH R0,R0
BX LR ;; return
CFI EndBlock cfiBlock53
// 621 }
RSEG CODE:CODE:NOROOT(2)
DATA
??DataTable76:
DC32 0x40006008
// 622 /*******************************************************************************
// 623 * Function Name : SetEPDblBuffCount
// 624 * Description : Set the number of bytes for a double Buffer
// 625 * endpoint.
// 626 * Input : bEpNum,bDir, wCount
// 627 * Output : None.
// 628 * Return : None.
// 629 *******************************************************************************/
RSEG CODE:CODE:NOROOT(2)
CFI Block cfiBlock54 Using cfiCommon0
CFI Function SetEPDblBuffCount
THUMB
// 630 void SetEPDblBuffCount(u8 bEpNum, u8 bDir, u16 wCount)
// 631 {
// 632 _SetEPDblBuffCount(bEpNum, bDir, wCount);
SetEPDblBuffCount:
LDR.N R3,??DataTable88 ;; 0x40005c50
PUSH {R4-R8,LR}
CFI ?RET Frame(CFA, -4)
CFI R8 Frame(CFA, -8)
CFI R7 Frame(CFA, -12)
CFI R6 Frame(CFA, -16)
CFI R5 Frame(CFA, -20)
CFI R4 Frame(CFA, -24)
CFI CFA R13+24
LDR.N R4,??DataTable89 ;; 0x4000600c
LSLS R5,R0,#+3
LDR.N R0,??DataTable90 ;; 0x40006004
CMP R1,#+1
BNE.N ??SetEPDblBuffCount_0
LDR R1,[R3, #+0]
UXTH R1,R1
ADDS R1,R1,R5
ADDS R8,R0,R1, LSL #+1
LSRS R1,R2,#+5
LSRS R0,R2,#+1
CMP R2,#+63
BCC.N ??SetEPDblBuffCount_1
MOVS R6,R1
LSLS R7,R2,#+27
ITT EQ
SUBEQ R6,R6,#+1
UXTHEQ R6,R6
LSLS R6,R6,#+10
ORRS R6,R6,#0x8000
STR R6,[R8, #+0]
??SetEPDblBuffCount_2:
LDR R3,[R3, #+0]
UXTH R3,R3
ADDS R3,R3,R5
ADDS R3,R4,R3, LSL #+1
CMP R2,#+63
BCC.N ??SetEPDblBuffCount_3
LSLS R0,R2,#+27
ITT EQ
SUBEQ R1,R1,#+1
UXTHEQ R1,
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -