📄 usb_ctrl.asm
字号:
;*******************************************************************************
;* TMS320C55x C/C++ Codegen PC Version 2.56 *
;* Date/Time created: Fri Mar 07 11:38:10 2008 *
;*******************************************************************************
.mmregs
.cpl_on
.arms_on
.c54cm_off
.asg AR6, FP
.asg XAR6, XFP
.asg DPH, MDP
.model call=c55_std
.model mem=large
.noremark 5549 ; code avoids SE CPU_28
.noremark 5558 ; code avoids SE CPU_33
.noremark 5570 ; code avoids SE CPU_40
.noremark 5571 ; code avoids SE CPU_41
.noremark 5573 ; code avoids SE CPU_43
.noremark 5584 ; code avoids SE CPU_47
.noremark 5599 ; code avoids SE CPU_55
.noremark 5503 ; code avoids SE CPU_84 MMR write
.noremark 5505 ; code avoids SE CPU_84 MMR read
.noremark 5673 ; code avoids SE CPU_89
.noremark 5002 ; code respects overwrite rules
;*******************************************************************************
;* GLOBAL FILE PARAMETERS *
;* *
;* Architecture : TMS320C55x *
;* Optimization : Always Choose Smaller Code Size *
;* Memory : Large Model (23-Bit Data Pointers) *
;* Calls : Normal Library ASM calls *
;* Debug Info : Standard TI Debug Information *
;*******************************************************************************
.file "usb_ctrl.c"
.sect ".cinit"
.align 1
.field IR_1,16
.field _USB_Setup+0,24
.field 0,8
.field 0,16 ; _USB_Setup._New @ 0
.field 0,16 ; _USB_Setup._bmRequestType @ 16
.field 0,16 ; _USB_Setup._bRequest @ 32
.field 0,16 ; _USB_Setup._wValue @ 48
.field 0,16 ; _USB_Setup._wIndex @ 64
.field 0,16 ; _USB_Setup._wLength @ 80
IR_1: .set 6
.sect ".text"
.global _USB_Setup
.bss _USB_Setup,6,0,0
.sym _USB_Setup,_USB_Setup, 8, 2, 96, $$fake5
.sect ".cinit"
.align 1
.field 2,16
.field _fpRequestHandler+0,24
.field 0,8
.field _USB_reqUnknown,32 ; _fpRequestHandler @ 0
.sect ".text"
.global _fpRequestHandler
.bss _fpRequestHandler,2,0,2
.sym _fpRequestHandler,_fpRequestHandler, 154, 2, 32, $$fake6
.sect ".cinit"
.align 1
.field 2,16
.field _data+0,24
.field 0,8
.field 32768,32 ; _data @ 0
.sect ".text"
.global _data
.bss _data,2,0,2
.sym _data,_data, 29, 2, 23
; d:\ti\c5500\cgtools\bin\acp55.exe -@C:\DOCUME~1\wxy\LOCALS~1\Temp\TI388_4
.sect ".text"
.align 4
.global _USB_ctl_handler
.sym _USB_ctl_handler,_USB_ctl_handler, 32, 2, 0
.func 102
;*******************************************************************************
;* FUNCTION NAME: _USB_ctl_handler *
;* *
;* Function Uses Regs : T0,AR0,XAR0,AR1,XAR1,SP,M40,SATA,SATD,RDM,FRCT,SMUL *
;* Stack Frame : Compact (No Frame Pointer, w/ debug) *
;* Total Frame Size : 2 words *
;* (2 return address/alignment) *
;*******************************************************************************
_USB_ctl_handler:
.line 2
AADD #-1, SP
.line 5
AMOV #_usbEpObjOut0, XAR1 ; |106|
AMOV #_usbEpObjIn0, XAR0 ; |106|
MOV #0, T0
CALL #_USB_ctl ; |106|
; call occurs [#_USB_ctl] ; |106|
.line 6
AADD #1, SP
RET
; return occurs
.endfunc 107,000000000h,1
.sect ".text"
.align 4
.global _USB_ctl
.sym _USB_ctl,_USB_ctl, 32, 2, 0
.func 139
;*******************************************************************************
;* FUNCTION NAME: _USB_ctl *
;* *
;* Function Uses Regs : AC0,AC0,AC1,T0,T1,T2,AR0,XAR0,AR1,XAR1,AR2,XAR2,SP, *
;* TC1,M40,SATA,SATD,RDM,FRCT,SMUL *
;* Save On Entry Regs : T2 *
;* Stack Frame : Compact (No Frame Pointer, w/ debug) *
;* Total Frame Size : 12 words *
;* (2 return address/alignment) *
;* (9 local values) *
;* (1 register save area) *
;*******************************************************************************
_USB_ctl:
.line 2
;* T0 assigned to _DevNum
.sym _DevNum,12, 10, 17, 16, $$fake1
;* AR0 assigned to _hEp0In
.sym _hEp0In,17, 24, 17, 23, $$fake2
;* AR1 assigned to _hEp0Out
.sym _hEp0Out,19, 24, 17, 23, $$fake2
.sym _DevNum,0, 10, 1, 16, $$fake1
.sym _hEp0In,2, 24, 1, 23, $$fake2
.sym _hEp0Out,4, 24, 1, 23, $$fake2
.sym _Request,6, 13, 1, 16
.sym _ReqHandlerRet,7, 10, 1, 16, $$fake6
.sym _USB_ctl_events,8, 13, 1, 16
PSH T2
AADD #-10, SP
MOV XAR1, dbl(*SP(#4))
MOV XAR0, dbl(*SP(#2))
MOV T0, *SP(#0) ; |140|
.line 4
MOV #0, *SP(#7) ; |142|
.line 10
MOV dbl(*SP(#4)), XAR0
CALL #_vUSB_getEvents ; |148|
; call occurs [#_vUSB_getEvents] ; |148|
MOV T0, T2 ; |148|
MOV dbl(*SP(#2)), XAR0
CALL #_vUSB_getEvents ; |148|
; call occurs [#_vUSB_getEvents] ; |148|
OR T2, T0 ; |148|
MOV T0, *SP(#8) ; |148|
.line 15
BTST #0, *SP(#8), TC1 ; |153|
BCC L1,!TC1 ; |153|
; branch occurs ; |153|
.line 17
MOV *SP(#0), T0 ; |155|
CALL #_vUSB_abortAllTransaction ; |155|
; call occurs [#_vUSB_abortAllTransaction] ; |155|
.line 18
MOV #0, *(#_usbCurConfigStat) ; |156|
.line 19
MOV #128, T1 ; |157|
MOV #0, T0
AMOV #_myUsbConfig, XAR0 ; |157|
CALL #_vUSB_init ; |157|
; call occurs [#_vUSB_init] ; |157|
L1:
.line 22
BTST #2, *SP(#8), TC1 ; |160|
BCC L2,!TC1 ; |160|
; branch occurs ; |160|
.line 24
MOV #0, T0
CALL #_vUSB_issueRemoteWakeup ; |162|
; call occurs [#_vUSB_issueRemoteWakeup] ; |162|
L2:
.line 31
MOV *SP(#8), AR1 ; |169|
MOV #16, AR2 ; |169|
AND #0x0010, AR1, AR1 ; |169|
CMPU AR1 != AR2, TC1 ; |169|
|| NOP ; avoids Silicon Exception CPU_24
BCC L4,TC1 ; |169|
; branch occurs ; |169|
.line 35
MOV *SP(#0), T0 ; |173|
AMOV #_USB_Setup, XAR0 ; |173|
CALL #_vUSB_getSetupPacket ; |173|
; call occurs [#_vUSB_getSetupPacket] ; |173|
BCC L3,T0 != #0 ; |173|
; branch occurs ; |173|
.line 37
MOV #1, *SP(#7) ; |175|
.line 38
B L4 ; |176|
; branch occurs ; |176|
L3:
.line 51
MOV *(#(_USB_Setup+1)), AR1 ; |189|
MOV *(#(_USB_Setup+2)), AC0 ; |189|
AND #0x00c0, AR1, AC1 ; |189|
OR AC1 << #8, AC0 ; |189|
MOV AC0, *SP(#6) ; |189|
.line 52
AMOV #_USB_ReqTable, XAR0 ; |190|
MOV AC0, T0
CALL #_USB_lookupReqHandler ; |190|
; call occurs [#_USB_lookupReqHandler] ; |190|
MOV AC0, dbl(*(#_fpRequestHandler)) ; |190|
L4:
.line 59
MOV *SP(#7), AR1 ; |197|
BCC L5,AR1 != #0 ; |197|
; branch occurs ; |197|
.line 61
MOV *SP(#0), T0 ; |199|
MOV dbl(*SP(#2)), XAR1
MOV dbl(*SP(#4)), XAR2
MOV dbl(*(#_fpRequestHandler)), AC0 ; |199|
AMOV #_USB_Setup, XAR0 ; |199|
CALL AC0 ; |199|
; call occurs [AC0] ; |199|
MOV T0, *SP(#7) ; |199|
B L11 ; |199|
; branch occurs ; |199|
L5:
.line 63
L6:
B L6 ; |201|
; branch occurs ; |201|
L7:
.line 72
MOV dbl(*SP(#2)), XAR0
AMOV #0, XAR1 ; |210|
MOV #0, T1
MOV #0, T0
CALL #_vUSB_postTransaction ; |210|
; call occurs [#_vUSB_postTransaction] ; |210|
.line 73
MOV #(_USB_reqUnknown >> 16) << #16, AC0 ; |211|
OR #(_USB_reqUnknown & 0xffff), AC0, AC0 ; |211|
MOV AC0, dbl(*(#_fpRequestHandler)) ; |211|
.line 78
B L12 ; |216|
; branch occurs ; |216|
L8:
.line 84
MOV dbl(*SP(#4)), XAR0
AMOV #0, XAR1 ; |222|
MOV #0, T1
MOV #0, T0
CALL #_vUSB_postTransaction ; |222|
; call occurs [#_vUSB_postTransaction] ; |222|
.line 85
MOV #(_USB_reqUnknown >> 16) << #16, AC0 ; |223|
OR #(_USB_reqUnknown & 0xffff), AC0, AC0 ; |223|
MOV AC0, dbl(*(#_fpRequestHandler)) ; |223|
.line 91
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -