📄 dss.asm
字号:
MVKH .S2 RL0,B3 ; |82|
NOP 1
LDW .D2T2 *B4,B4 ; |82|
NOP 4
B .S2 B4 ; |82|
NOP 5
RL0: ; CALL OCCURS ; |82|
.line 8
;----------------------------------------------------------------------
; 85 | if (device->mode == DEV_OUTPUT) {
;----------------------------------------------------------------------
LDW .D2T1 *+SP(4),A0 ; |85|
NOP 4
LDW .D1T1 *+A0(20),A0 ; |85|
NOP 4
CMPEQ .L1 A0,1,A1 ; |85|
.line 9
;----------------------------------------------------------------------
; 86 | DSS_adcObj[((DSS_Obj *)device->object)->chan] = NULL;
;----------------------------------------------------------------------
[ A1] LDW .D2T1 *+SP(4),A0 ; |86|
[ A1] ZERO .S1 A4 ; |86|
NOP 3
[ A1] LDW .D1T1 *+A0(32),A0 ; |86|
NOP 4
[ A1] LDW .D1T1 *+A0(8),A3 ; |86|
[ A1] MVK .S1 (_DSS_adcObj-$bss),A0 ; |86|
[ A1] ADD .L1X DP,A0,A0 ; |86|
NOP 2
[ A1] STW .D1T1 A4,*+A0[A3] ; |86|
.line 10
;----------------------------------------------------------------------
; 87 | } else {
;----------------------------------------------------------------------
.line 11
;----------------------------------------------------------------------
; 88 | DSS_dacObj[((DSS_Obj *)device->object)->chan] = NULL;
;----------------------------------------------------------------------
[!A1] LDW .D2T2 *+SP(4),B4 ; |88|
[!A1] ZERO .S2 B6 ; |88|
NOP 3
[!A1] LDW .D2T2 *+B4(32),B4 ; |88|
NOP 4
[!A1] LDW .D2T2 *+B4(8),B5 ; |88|
[!A1] MVK .S2 (_DSS_dacObj-$bss),B4 ; |88|
[!A1] ADD .L2 DP,B4,B4 ; |88|
NOP 2
[!A1] STW .D2T2 B6,*+B4[B5] ; |88|
.line 15
;----------------------------------------------------------------------
; 92 | if (MEM_free(SDRAM, device->object, sizeof(DSS_Obj)) != TRUE) {
;----------------------------------------------------------------------
LDW .D2T2 *+SP(4),B4 ; |92|
LDW .D2T1 *+DP(_SDRAM),A4 ; |92|
MVKL .S2 RL1,B3 ; |92|
MVKH .S2 RL1,B3 ; |92|
B .S1 _MEM_free ; |92|
LDW .D2T2 *+B4(32),B4 ;
MVK .S1 0x10,A6 ; |92|
NOP 3
RL1: ; CALL OCCURS ; |92|
CMPEQ .L1 A4,1,A1 ;
.line 16
;----------------------------------------------------------------------
; 93 | return SYS_EALLOC;
;----------------------------------------------------------------------
[!A1] MVK .S1 0x1,A4 ; |93|
.line 18
;----------------------------------------------------------------------
; 95 | return(0);
;----------------------------------------------------------------------
[ A1] ZERO .L1 A4 ; |95|
.line 19
LDW .D2T2 *++SP(16),B3 ; |96|
NOP 4
B .S2 B3 ; |96|
NOP 5
; BRANCH OCCURS ; |96|
.endfunc 96,000080000h,16
.sect ".text"
.global _DSS_ctrl
.sym _DSS_ctrl,_DSS_ctrl, 36, 2, 0
.func 99
;----------------------------------------------------------------------
; 99 | 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 ; |99|
.line 2
STW .D2T1 A6,*+SP(12) ; |100|
STW .D2T2 B4,*+SP(8) ; |100|
STW .D2T1 A4,*+SP(4) ; |100|
.line 4
;----------------------------------------------------------------------
; 102 | return SYS_EINVAL;
;----------------------------------------------------------------------
MVK .S1 0x5,A4 ; |102|
.line 5
B .S2 B3 ; |103|
ADDK .S2 16,SP ; |103|
NOP 4
; BRANCH OCCURS ; |103|
.endfunc 103,000000000h,16
.sect ".text"
.global _DSS_idle
.sym _DSS_idle,_DSS_idle, 36, 2, 0
.func 106
;----------------------------------------------------------------------
; 106 | 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 + 24 Auto + 4 Save = 28 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
.sym _drvChan,20, 4, 1, 32
STW .D2T2 B3,*SP--(32) ; |106|
.line 2
STH .D2T2 B4,*+SP(8) ; |107|
STW .D2T1 A4,*+SP(4) ; |107|
.line 3
;----------------------------------------------------------------------
; 108 | DSS_Handle objptr = (DSS_Handle)device->object;
;----------------------------------------------------------------------
LDW .D1T1 *+A4(32),A0 ; |108|
NOP 4
STW .D2T1 A0,*+SP(12) ; |108|
.line 4
;----------------------------------------------------------------------
; 109 | int chan = objptr->chan;
; 110 | int drvChan;
;----------------------------------------------------------------------
LDW .D1T1 *+A0(8),A1 ; |109|
NOP 4
STW .D2T1 A1,*+SP(16) ; |109|
.line 7
;----------------------------------------------------------------------
; 112 | if (chan == 0)
;----------------------------------------------------------------------
.line 8
;----------------------------------------------------------------------
; 113 | drvChan = 1;
; 114 | else
;----------------------------------------------------------------------
[!A1] MVK .S1 1,A0 ; |113|
[!A1] STW .D2T1 A0,*+SP(20) ; |113|
.line 10
;----------------------------------------------------------------------
; 115 | drvChan = 3;
;----------------------------------------------------------------------
[ A1] MVK .S2 3,B4 ; |115|
[ A1] STW .D2T2 B4,*+SP(20) ; |115|
.line 12
;----------------------------------------------------------------------
; 117 | if ((device->mode == DEV_OUTPUT) && !flush) {
;----------------------------------------------------------------------
LDHU .D2T2 *+SP(8),B4 ; |117|
|| MV .L2X A4,B5
LDW .D2T2 *+B5(20),B5 ; |117|
NOP 3
CMPEQ .L2 B4,0,B4 ; |117|
CMPEQ .L2 B5,1,B0 ; |117|
[!B0] MV .L2 B0,B4 ; |117|
MV .L1X B4,A1 ; |117|
[!A1] B .S1 L5 ; |117|
NOP 5
; BRANCH OCCURS ; |117|
;** --------------------------------------------------------------------------*
.sym _post_count,24, 14, 1, 32
.block 117
.line 13
;----------------------------------------------------------------------
; 118 | Uns post_count = 0;
;----------------------------------------------------------------------
ZERO .L2 B4 ; |118|
STW .D2T2 B4,*+SP(24) ; |118|
.line 16
;----------------------------------------------------------------------
; 121 | while(!QUE_empty(device->todevice)) {
;----------------------------------------------------------------------
B .S1 L2 ; |121|
NOP 5
; BRANCH OCCURS ; |121|
;** --------------------------------------------------------------------------*
L1:
.line 17
;----------------------------------------------------------------------
; 122 | SEM_pend(objptr->sync, SYS_FOREVER);
;----------------------------------------------------------------------
LDW .D2T2 *+SP(12),B5 ; |122|
MVKL .S2 RL5,B3 ; |122|
MVK .S2 0xffffffff,B4 ; |122|
MVKH .S2 RL5,B3 ; |122|
B .S1 _SEM_pend ; |122|
LDW .D2T1 *B5,A4 ;
NOP 4
RL5: ; CALL OCCURS ; |122|
.line 18
;----------------------------------------------------------------------
; 123 | post_count++;
;----------------------------------------------------------------------
LDW .D2T2 *+SP(24),B4 ; |123|
NOP 4
ADD .L2 1,B4,B4 ; |123|
STW .D2T2 B4,*+SP(24) ; |123|
;*----------------------------------------------------------------------------*
;* SOFTWARE PIPELINE INFORMATION
;* Disqualified loop: software pipelining disabled
;*----------------------------------------------------------------------------*
L2:
.line 19
LDW .D2T2 *+SP(4),B4 ; |124|
NOP 4
LDW .D2T2 *B4,B5 ; |124|
LDW .D2T2 *B4,B4 ; |124|
NOP 3
LDW .D2T2 *B5,B5 ; |124|
NOP 4
CMPEQ .L2 B5,B4,B0 ; |124|
[!B0] B .S1 L1 ; |124|
NOP 5
; BRANCH OCCURS ; |124|
;** --------------------------------------------------------------------------*
.line 23
;----------------------------------------------------------------------
; 128 | if (objptr->drv->isEmpty(drvChan) != 1) {
;----------------------------------------------------------------------
LDW .D2T2 *+SP(12),B4 ; |128|
LDW .D2T1 *+SP(20),A4 ; |128|
MVKL .S2 RL7,B3 ; |128|
MVKH .S2 RL7,B3 ; |128|
NOP 1
LDW .D2T2 *+B4(12),B4 ; |128|
NOP 4
LDW .D2T2 *+B4(16),B4 ; |128|
NOP 4
B .S2 B4 ; |128|
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -