⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dss.asm

📁 Using DSP/BIOS I/O in Multichannel Systems
💻 ASM
📖 第 1 页 / 共 5 页
字号:
           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 + -