📄 dss.asm
字号:
[!B0] ZERO .S2 B5 ; |84|
NOP 3
[!B0] LDW .D2T2 *+B4(32),B4 ; |84|
NOP 4
[!B0] LDW .D2T2 *+B4(8),B6 ; |84|
[!B0] MVK .S2 (_DSS_dacObj-$bss),B4 ; |84|
[!B0] ADD .L2 DP,B4,B4 ; |84|
NOP 2
[!B0] STW .D2T2 B5,*+B4[B6] ; |84|
.line 11
;----------------------------------------------------------------------
; 88 | if (MEM_free(IDRAM, device->object, sizeof(DSS_Obj)) != TRUE) {
;----------------------------------------------------------------------
LDW .D2T2 *+SP(4),B4 ; |88|
LDW .D2T1 *+DP(_IDRAM),A4 ; |88|
MVKL .S2 RL0,B3 ; |88|
MVKH .S2 RL0,B3 ; |88|
B .S1 _MEM_free ; |88|
LDW .D2T2 *+B4(32),B4 ;
MVK .S1 0xc,A6 ; |88|
NOP 3
RL0: ; CALL OCCURS ; |88|
CMPEQ .L1 A4,1,A1 ;
.line 12
;----------------------------------------------------------------------
; 89 | return SYS_EALLOC;
;----------------------------------------------------------------------
[!A1] B .S1 L5 ; |89|
[!A1] MVK .S1 0x1,A10 ; |89|
NOP 4
; BRANCH OCCURS ; |89|
;** --------------------------------------------------------------------------*
.line 16
;----------------------------------------------------------------------
; 93 | if (DSS_adcObj[0] == NULL &&
; 94 | DSS_adcObj[1] == NULL &&
; 95 | DSS_dacObj[0] == NULL &&
; 96 | DSS_dacObj[1] == NULL) {
;----------------------------------------------------------------------
LDW .D2T2 *+DP(_DSS_adcObj),B0 ; |93|
ZERO .L1 A0 ; |93|
NOP 3
[!B0] MVK .S1 0x1,A0 ; |93|
CMPEQ .L1 A0,0,A0 ; |93|
XOR .L1 1,A0,A1 ; |93|
[!A1] B .S1 L1 ; |93|
LDW .D2T2 *+DP(_DSS_adcObj+4),B0 ; |93|
ZERO .L1 A0 ; |93|
[!A1] CMPEQ .L1 A1,0,A0 ;
[!A1] XOR .L1 1,A0,A1 ; |93|
NOP 1
; BRANCH OCCURS ; |93|
;** --------------------------------------------------------------------------*
[!B0] MVK .S1 0x1,A0 ; |93|
CMPEQ .L1 A0,0,A0 ; |93|
XOR .L1 1,A0,A1 ; |93|
CMPEQ .L1 A1,0,A0 ;
XOR .L1 1,A0,A1 ; |93|
;** --------------------------------------------------------------------------*
L1:
[!A1] B .S1 L2 ; |93|
LDW .D2T2 *+DP(_DSS_dacObj),B0 ; |93|
ZERO .L1 A0 ; |93|
MV .L2X A1,B5 ; |93|
[!A1] MV .L1X B5,A1 ;
NOP 1
; BRANCH OCCURS ; |93|
;** --------------------------------------------------------------------------*
[!B0] MVK .S1 0x1,A0 ; |93|
CMPEQ .L1 A0,0,A0 ; |93|
XOR .L2X 1,A0,B5 ; |93|
MV .L1X B5,A1 ;
;** --------------------------------------------------------------------------*
L2:
[!A1] B .S1 L3 ; |93|
LDW .D2T2 *+DP(_DSS_dacObj+4),B0 ; |93|
ZERO .L2 B4 ; |93|
[!A1] MV .L1X B5,A1 ; |93|
NOP 2
; BRANCH OCCURS ; |93|
;** --------------------------------------------------------------------------*
[!B0] MVK .S2 0x1,B4 ; |93|
MV .L2 B4,B5 ; |93|
MV .L1X B5,A1 ; |93|
;** --------------------------------------------------------------------------*
L3:
[!A1] B .S1 L4 ; |93|
NOP 5
; BRANCH OCCURS ; |93|
;** --------------------------------------------------------------------------*
.line 20
;----------------------------------------------------------------------
; 97 | dss_isr_stop();
;----------------------------------------------------------------------
B .S1 _dss_isr_stop ; |97|
MVKL .S2 RL2,B3 ; |97|
MVKH .S2 RL2,B3 ; |97|
NOP 3
RL2: ; CALL OCCURS ; |97|
;** --------------------------------------------------------------------------*
L4:
.line 23
;----------------------------------------------------------------------
; 100 | return 0;
;----------------------------------------------------------------------
ZERO .L1 A10 ; |100|
;** --------------------------------------------------------------------------*
L5:
.line 24
LDW .D2T1 *+SP(12),A10 ; |101|
|| MV .L1 A10,A4 ; |101|
LDW .D2T2 *++SP(16),B3 ; |101|
NOP 4
B .S2 B3 ; |101|
NOP 5
; BRANCH OCCURS ; |101|
.endfunc 101,000080400h,16
.sect ".text"
.global _DSS_ctrl
.sym _DSS_ctrl,_DSS_ctrl, 36, 2, 0
.func 104
;----------------------------------------------------------------------
; 104 | DSS_ctrl(DEV_Handle handle, Uns val, Arg arg)
;----------------------------------------------------------------------
;******************************************************************************
;* FUNCTION NAME: _DSS_ctrl *
;* *
;* Regs Modified : A4,SP *
;* Regs Used : A4,A6,B3,B4,SP *
;* Local Frame Size : 0 Args + 12 Auto + 0 Save = 12 byte *
;******************************************************************************
_DSS_ctrl:
;** --------------------------------------------------------------------------*
.sym _handle,4, 24, 17, 32, _DEV_Obj
.sym _val,20, 14, 17, 32
.sym _arg,6, 4, 17, 32
.sym _handle,4, 24, 1, 32, _DEV_Obj
.sym _val,8, 14, 1, 32
.sym _arg,12, 4, 1, 32
SUB .D2 SP,16,SP ; |104|
.line 2
STW .D2T1 A6,*+SP(12) ; |105|
STW .D2T2 B4,*+SP(8) ; |105|
STW .D2T1 A4,*+SP(4) ; |105|
.line 4
;----------------------------------------------------------------------
; 107 | return SYS_EINVAL;
;----------------------------------------------------------------------
MVK .S1 0x5,A4 ; |107|
.line 5
B .S2 B3 ; |108|
ADDK .S2 16,SP ; |108|
NOP 4
; BRANCH OCCURS ; |108|
.endfunc 108,000000000h,16
.sect ".text"
.global _DSS_idle
.sym _DSS_idle,_DSS_idle, 36, 2, 0
.func 111
;----------------------------------------------------------------------
; 111 | DSS_idle(DEV_Handle device, Bool flush)
;----------------------------------------------------------------------
;******************************************************************************
;* FUNCTION NAME: _DSS_idle *
;* *
;* Regs Modified : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,B0,B1,B2,B3,B4,B5,B6, *
;* B7,B8,B9,SP *
;* Regs Used : A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,B0,B1,B2,B3,B4,B5,B6, *
;* B7,B8,B9,DP,SP *
;* Local Frame Size : 0 Args + 20 Auto + 4 Save = 24 byte *
;******************************************************************************
_DSS_idle:
;** --------------------------------------------------------------------------*
.sym _device,4, 24, 17, 32, _DEV_Obj
.sym _flush,20, 13, 17, 16
.sym _device,4, 24, 1, 32, _DEV_Obj
.sym _flush,8, 13, 1, 16
.sym _objptr,12, 24, 1, 32, _DSS_obj
.sym _chan,16, 4, 1, 32
STW .D2T2 B3,*SP--(24) ; |111|
.line 2
STH .D2T2 B4,*+SP(8) ; |112|
STW .D2T1 A4,*+SP(4) ; |112|
.line 3
;----------------------------------------------------------------------
; 113 | DSS_Handle objptr = (DSS_Handle)device->object;
;----------------------------------------------------------------------
LDW .D1T1 *+A4(32),A0 ; |113|
NOP 4
STW .D2T1 A0,*+SP(12) ; |113|
.line 4
;----------------------------------------------------------------------
; 114 | int chan = objptr->chan;
;----------------------------------------------------------------------
LDW .D1T1 *+A0(8),A0 ; |114|
NOP 4
STW .D2T1 A0,*+SP(16) ; |114|
.line 6
;----------------------------------------------------------------------
; 116 | if ((device->mode == DEV_OUTPUT) && !flush) {
;----------------------------------------------------------------------
LDHU .D2T2 *+SP(8),B4 ; |116|
|| MV .L2X A4,B5
LDW .D2T2 *+B5(20),B5 ; |116|
NOP 3
CMPEQ .L2 B4,0,B4 ; |116|
CMPEQ .L2 B5,1,B0 ; |116|
[!B0] MV .L2 B0,B4 ; |116|
MV .L1X B4,A1 ; |116|
[!A1] B .S1 L10 ; |116|
NOP 5
; BRANCH OCCURS ; |116|
;** --------------------------------------------------------------------------*
.sym _post_count,20, 14, 1, 32
.block 116
.line 7
;----------------------------------------------------------------------
; 117 | Uns post_count = 0;
;----------------------------------------------------------------------
ZERO .L2 B4 ; |117|
STW .D2T2 B4,*+SP(20) ; |117|
.line 10
;----------------------------------------------------------------------
; 120 | while(!QUE_empty(device->todevice)) {
;----------------------------------------------------------------------
B .S1 L7 ; |120|
NOP 5
; BRANCH OCCURS ; |120|
;** --------------------------------------------------------------------------*
L6:
.line 11
;----------------------------------------------------------------------
; 121 | SEM_pend(objptr->sync, SYS_FOREVER);
;----------------------------------------------------------------------
LDW .D2T2 *+SP(12),B5 ; |121|
MVKL .S2 RL6,B3 ; |121|
MVK .S2 0xffffffff,B4 ; |121|
MVKH .S2 RL6,B3 ; |121|
B .S1 _SEM_pend ; |121|
LDW .D2T1 *B5,A4 ;
NOP 4
RL6: ; CALL OCCURS ; |121|
.line 12
;----------------------------------------------------------------------
; 122 | post_count++;
;----------------------------------------------------------------------
LDW .D2T2 *+SP(20),B4 ; |122|
NOP 4
ADD .L2 1,B4,B4 ; |122|
STW .D2T2 B4,*+SP(20) ; |122|
;*----------------------------------------------------------------------------*
;* SOFTWARE PIPELINE INFORMATION
;* Disqualified loop: software pipelining disabled
;*----------------------------------------------------------------------------*
L7:
.line 13
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -