亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? csl_dat_.sa

?? tms320c6416與tlv320aic23b接口基本程序
?? SA
?? 第 1 頁 / 共 3 頁
字號:
********************************************************************************
*           Copyright (C) 1999-2000 Texas Instruments Incorporated.
*                           All Rights Reserved
*------------------------------------------------------------------------------
* FILENAME...... csl_dat_.sa
* DATE CREATED.. 11/11/1999 
* LAST MODIFIED. 10/03/2000
********************************************************************************
  .include "csl_chiphal.inc"

  .global _DAT_wait
  .global _DAT_busy
  .global _DAT_fill
  .global _DAT_copy
  .global _DAT_copy2d

  .ref    __DAT_serialTable
  .ref    __DAT_stateStruct

  .if DAT_SUPPORT

  .if DMA_SUPPORT
********************************************************************************
* DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT 
* DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT 
* DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT 
* DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT 
* DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT 
* DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT 
* DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT 
* DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT 
* DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT 
* DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT 
* DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT 
* DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT DMA_SUPPORT 
********************************************************************************

;DMA register offsets
PRICTL .set 0
SECCTL .set 2
SRC    .set 4
DST    .set 6
XFRCNT .set 8 

;State structure, must match that in the C file
State       .struct
useMask     .word
baseAddr    .word
gblcntAddr  .word
gblidxAddr  .word
initPrictl  .word
            .endstruct

 
*------------------------------------------------------------------------------*
* void DAT_wait(Uint32 id);
*------------------------------------------------------------------------------*
_DAT_wait .cproc id

               .reg gieSave
               .reg X
               .reg slotNumber
               .reg serialNumber
               .reg tableAddr
               .reg oldSerialNumber 
               .reg pred
               .reg mask
               .reg irfReg
               .reg stateAddr
               .reg useMask

               ;first let's check to see if this is the magic wait-for-all ID
               CMPEQ id,-1,pred
       [!pred] B     DAT_WAIT_NORMAL

               ;at this point, the ID is the wait-for-all magic id
               ;this means we have to wait for ALL tranfers to complete

               ;Load useMask
               MVKL  __DAT_stateStruct,stateAddr
               MVKH  __DAT_stateStruct,stateAddr
               LDW   *stateAddr(State.useMask),useMask 
                
DAT_WAIT_LOOP0:       
               ;Wait until all mask bits appears in the IFR
               MVC   IFR,irfReg
               AND   useMask,irfReg,X
               CMPEQ useMask,X,pred
       [!pred] B     DAT_WAIT_LOOP0

               B     DAT_WAIT_RETURN

DAT_WAIT_NORMAL:
               ;Extract slot number and serial number from id
               MVKL  0x000000FF,X
               MVKH  0x000000FF,X
               AND   id,X,slotNumber
               SHRU  id,16,serialNumber
               
               ;Load old serial number from table
               MVKL  __DAT_serialTable,tableAddr
               MVKH  __DAT_serialTable,tableAddr
               LDHU  *tableAddr[slotNumber],oldSerialNumber
                                            
               ;If the serial numbers don't match then return
               CMPEQ serialNumber,oldSerialNumber,pred
       [!pred] B     DAT_WAIT_RETURN
               
               ;Generate IFR mask from slot number (mask = 1<<slotNumber)
               MVK   1,mask
               SHL   mask,slotNumber,mask
               
DAT_WAIT_LOOP1:       
               ;Wait until the mask bit appears in the IFR
               MVC   IFR,irfReg
               AND   mask,irfReg,pred
       [!pred] B     DAT_WAIT_LOOP1


DAT_WAIT_RETURN:

               .return
               .endproc


*------------------------------------------------------------------------------*
* int DAT_busy(Uint32 id);
*------------------------------------------------------------------------------*
_DAT_busy .cproc id

               .reg gieSave
               .reg X
               .reg slotNumber
               .reg serialNumber
               .reg tableAddr
               .reg oldSerialNumber 
               .reg pred
               .reg mask
               .reg irfReg
               .reg busyFlag

               ;set busy flag to zero
               ZERO  busyFlag
 
               ;Extract slot number and serial number from id
               MVKL  0x000000FF,X
               MVKH  0x000000FF,X
               AND   id,X,slotNumber
               SHRU  id,16,serialNumber
               
               ;Load old serial number from table
               MVKL  __DAT_serialTable,tableAddr
               MVKH  __DAT_serialTable,tableAddr
               LDHU  *tableAddr[slotNumber],oldSerialNumber
                                            
               ;If the serial numbers don't match then return
               CMPEQ serialNumber,oldSerialNumber,pred
       [!pred] B     DAT_BUSY_RETURN
               
               ;Generate IFR mask from slot number (mask = 1<<slotNumber)
               MVK   1,mask
               SHL   mask,slotNumber,mask
               
               ;check to see if the mask bit appears in the IFR
               MVC   IFR,irfReg
               AND   mask,irfReg,pred
        [pred] B     DAT_BUSY_RETURN

               ;the IFR flag was not set, hence the slot IS busy
               ADD   busyFlag,1,busyFlag

DAT_BUSY_RETURN:

               .return busyFlag
               .endproc


*------------------------------------------------------------------------------*
* Uint32 DAT_fill(void *dst , Uint16 byteCnt, Uint32 *value);
*------------------------------------------------------------------------------*
_DAT_fill .cproc dst, byteCnt, value

               .reg gieSave
               .reg X,Y
               .reg const31
               .reg stateAddr
               .reg useMask
               .reg slotNumber
               .reg serialNumber
               .reg tableAddr
               .reg oldSerialNumber 
               .reg pred
               .reg mask
               .reg irfReg
               .reg id
               .reg alignment
               .reg dmaBase
               .reg initPrictl

               ;Load useMask and Initial primary control register
               MVKL  __DAT_stateStruct,stateAddr
               MVKH  __DAT_stateStruct,stateAddr
               LDW   *stateAddr(State.useMask),useMask 
               LDW   *stateAddr(State.initPrictl),initPrictl 
               
               ;Constant needed later
               MVK   31,const31

DAT_FILL_LOOP1:         
               ;Wait for a free slot to open up
               MVC   IFR,irfReg
               AND   irfReg,useMask,X
               LMBD  1,X,X
               SUB   const31,X,slotNumber
               CMPEQ slotNumber,-1,pred
       [pred]  B     DAT_FILL_LOOP1

               ;Save and clear GIE
               MVC   CSR,X
               AND   X,1,gieSave
               AND   X,-2,X
               MVC   X,CSR
 
               ;Generate mask from slot number
               MVK   1,mask
               SHL   mask,slotNumber,mask

               ;Clear interrupt pending flag
               MVC   mask,ICR

               ;Load up serial number table address
               MVKL  __DAT_serialTable,tableAddr
               MVKH  __DAT_serialTable,tableAddr
               LDHU  *tableAddr[slotNumber],oldSerialNumber
               
               ;Add one to serial numer and store it back into the table
               ADD   oldSerialNumber,1,serialNumber
               STH   serialNumber,*tableAddr[slotNumber] 
               
               ;Construct transfer id from serial number and slot number
               SHL   serialNumber,16,id
               OR    id,slotNumber,id

               ;Load up base address of DMA registers
               LDW   *stateAddr(State.baseAddr),dmaBase 
               
               ;Store zero into DMA primary control register
               MVKL  0x00000000,X
               MVKH  0x00000000,X
               STW   X,*dmaBase[PRICTL]
               
               ;Store source address
               STW   value,*dmaBase[SRC]
               
               ;Store destination address
               STW   dst,*dmaBase[DST]

               ;Store secondary control register
               MVKL  0x0000A080,Y
               MVKH  0x0000A080,Y
               STW   Y,*dmaBase[SECCTL]

               ;Calculate argument alignment
               OR    dst,byteCnt,alignment 
               OR    value,alignment,alignment
               AND   alignment,3,alignment
               
DAT_FILL_32:
               ;Check to see if 32-bit aligned, branch if not
               CMPEQ alignment,0,pred
       [!pred] B     DAT_FILL_16
       
               ;Store transfer count
               SHRU  byteCnt,2,X
               STW   X,*dmaBase[XFRCNT]
               
               ;Store primary control register
               MVKL  0x00000041,Y
               MVKH  0x00000041,Y
               OR    Y,initPrictl,Y
               STW   Y,*dmaBase[PRICTL]
               
               ;All done so go to procedure exit code
               B     DAT_FILL_RETURN
      
DAT_FILL_16:
               ;Check to see if 16-bit aligned, branch if not
               CMPEQ alignment,2,pred
       [!pred] B     DAT_FILL_8 
       
               ;Store transfer count
               SHRU  byteCnt,1,X
               STW   X,*dmaBase[XFRCNT]

               ;Store primary control register
               MVKL  0x00000141,Y
               MVKH  0x00000141,Y
               OR    Y,initPrictl,Y
               STW   Y,*dmaBase[PRICTL]
               
               ;All done so go to procedure exit code
               B     DAT_FILL_RETURN

DAT_FILL_8:
               ;Must be 8-bit aligned since it wasn't 32 or 16 bit aligned

               ;Store transfer count
               STW   byteCnt,*dmaBase[XFRCNT]

               ;Store primary control register
               MVKL  0x00000241,Y
               MVKH  0x00000241,Y
               OR    Y,initPrictl,Y
               STW   Y,*dmaBase[PRICTL]
               

DAT_FILL_RETURN:
               ;Restore GIE
               MVC   CSR,X
               OR    X,gieSave,X
               MVC   X,CSR

               .return id
               .endproc
               

*------------------------------------------------------------------------------*
* Uint32 DAT_copy(void *src , void *dst , Uint16 byteCnt);
*------------------------------------------------------------------------------*
_DAT_copy .cproc src, dst, byteCnt               

               .reg gieSave
               .reg X,Y
               .reg const31
               .reg stateAddr
               .reg useMask
               .reg slotNumber
               .reg serialNumber
               .reg tableAddr
               .reg oldSerialNumber 
               .reg pred
               .reg mask
               .reg irfReg
               .reg id
               .reg alignment
               .reg dmaBase
               .reg initPrictl

               ;Load useMask and Initial primary control register
               MVKL  __DAT_stateStruct,stateAddr
               MVKH  __DAT_stateStruct,stateAddr
               LDW   *stateAddr(State.useMask),useMask 
               LDW   *stateAddr(State.initPrictl),initPrictl 

               ;Constant needed later
               MVK   31,const31

DAT_COPY_LOOP1:         
               ;Wait for a free slot to open up
               MVC   IFR,irfReg
               AND   irfReg,useMask,X
               LMBD  1,X,X
               SUB   const31,X,slotNumber
               CMPEQ slotNumber,-1,pred
       [pred]  B     DAT_COPY_LOOP1

               ;Save and clear GIE
               MVC   CSR,X
               AND   X,1,gieSave
               AND   X,-2,X
               MVC   X,CSR
 
               ;Generate mask from slot number
               MVK   1,mask
               SHL   mask,slotNumber,mask

               ;Clear interrupt pending flag
               MVC   mask,ICR

               ;Load up serial number table address
               MVKL  __DAT_serialTable,tableAddr
               MVKH  __DAT_serialTable,tableAddr
               LDHU  *tableAddr[slotNumber],oldSerialNumber
               
               ;Add one to serial numer and store it back into the table
               ADD   oldSerialNumber,1,serialNumber
               STH   serialNumber,*tableAddr[slotNumber] 
               
               ;Construct transfer id from serial number and slot number
               SHL   serialNumber,16,id
               OR    id,slotNumber,id

               ;Load up base address of DMA registers
               LDW   *stateAddr(State.baseAddr),dmaBase 
               
               ;Store zero into DMA primary control register
               MVKL  0x00000000,X
               MVKH  0x00000000,X
               STW   X,*dmaBase[PRICTL]
               
               ;Store source address
               STW   src,*dmaBase[SRC]
               
               ;Store destination address
               STW   dst,*dmaBase[DST]

               ;Store secondary control register
               MVKL  0x0000A080,Y
               MVKH  0x0000A080,Y
               STW   Y,*dmaBase[SECCTL]

               ;Calculate argument alignment
               OR    src,dst,alignment 
               OR    byteCnt,alignment,alignment
               AND   alignment,3,alignment
               
DAT_COPY_32:
               ;Check to see if 32-bit aligned, branch if not
               CMPEQ alignment,0,pred
       [!pred] B     DAT_COPY_16
       
               ;Store transfer count
               SHRU  byteCnt,2,X
               STW   X,*dmaBase[XFRCNT]
               
               ;Store primary control register
               MVKL  0x00000051,Y
               MVKH  0x00000051,Y
               OR    Y,initPrictl,Y
               STW   Y,*dmaBase[PRICTL]
               
               ;All done so go to procedure exit code
               B     DAT_COPY_RETURN
      
DAT_COPY_16:
               ;Check to see if 16-bit aligned, branch if not
               CMPEQ alignment,2,pred
       [!pred] B     DAT_COPY_8 
       
               ;Store transfer count
               SHRU  byteCnt,1,X
               STW   X,*dmaBase[XFRCNT]

               ;Store primary control register
               MVKL  0x00000151,Y
               MVKH  0x00000151,Y
               OR    Y,initPrictl,Y
               STW   Y,*dmaBase[PRICTL]
               

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91高清视频在线| 国产精品一卡二卡| 中文字幕亚洲欧美在线不卡| 久久香蕉国产线看观看99| 日韩一区二区中文字幕| 91.xcao| 日本高清不卡视频| 欧美在线一二三| 欧美精品一级二级三级| 69堂国产成人免费视频| 欧美精品一区二| 欧美一区二区日韩一区二区| 日韩午夜激情免费电影| 日韩精品一区二区三区三区免费| 日韩精品在线看片z| 久久免费电影网| 一区在线中文字幕| 亚洲线精品一区二区三区八戒| 亚洲午夜激情av| 视频一区二区中文字幕| 精品中文字幕一区二区| 丁香六月综合激情| 91在线视频网址| 欧洲另类一二三四区| 欧美军同video69gay| 日韩精品一区二区三区在线 | 91老师片黄在线观看| 欧美自拍丝袜亚洲| 日韩精品中文字幕在线不卡尤物| 久久久高清一区二区三区| 日韩免费看网站| 国产精品污www在线观看| 亚洲黄色小视频| 久久99热99| 9久草视频在线视频精品| 在线播放中文一区| 欧美经典一区二区| 日韩不卡一区二区| 成人精品视频一区| 日韩免费电影网站| 国产精品久久久久aaaa| 美腿丝袜一区二区三区| 99久久综合色| 一本到高清视频免费精品| 欧美一区二区三区免费在线看| 欧美卡1卡2卡| 国产精品盗摄一区二区三区| 美日韩黄色大片| 在线观看av一区| 国产三区在线成人av| 亚洲第一久久影院| 国产电影一区二区三区| 制服丝袜亚洲网站| 一区二区三区精品在线观看| 国产精品一区专区| 91精品国产综合久久蜜臀| 亚洲摸摸操操av| 成人网在线播放| 久久精品日韩一区二区三区| 亚洲一级片在线观看| 99久久精品免费看国产| 久久久精品人体av艺术| 日本成人中文字幕| 7777精品久久久大香线蕉 | 欧美日韩一区二区在线视频| 国产精品久久久久久久蜜臀| 国产aⅴ综合色| 久久亚区不卡日本| 经典三级视频一区| 欧美成人女星排行榜| 午夜精品在线看| 欧美裸体bbwbbwbbw| 一区二区三区波多野结衣在线观看| 成人av动漫网站| 中文字幕视频一区二区三区久| 国产成人精品三级| 中文字幕不卡的av| 91精品办公室少妇高潮对白| 久久精品一区八戒影视| 美脚の诱脚舐め脚责91| 91精品国产91综合久久蜜臀| 视频一区欧美日韩| 欧美成人官网二区| 国产一区二区三区四| 久久久精品欧美丰满| 成人高清免费观看| 亚洲精品国产成人久久av盗摄| 91在线观看免费视频| 亚洲天堂成人网| 欧美日韩第一区日日骚| 午夜不卡av免费| 欧美成人a视频| 大美女一区二区三区| 亚洲婷婷国产精品电影人久久| 欧美性感一区二区三区| 麻豆精品在线看| 国产日产欧美一区二区三区| 99免费精品在线观看| 亚洲网友自拍偷拍| 久久综合狠狠综合久久综合88| 成人性生交大片免费看在线播放 | 2021中文字幕一区亚洲| 中文字幕精品一区二区三区精品| 9l国产精品久久久久麻豆| 午夜欧美2019年伦理| 久久夜色精品国产欧美乱极品| 成人一级视频在线观看| 亚洲一区二区视频| 5858s免费视频成人| 国产美女娇喘av呻吟久久| 中文字幕一区二区三区在线观看| 欧美日韩一区二区电影| 国产精品一线二线三线| 亚洲国产精品成人久久综合一区 | 精品国产百合女同互慰| 99精品视频一区| 日韩av午夜在线观看| 亚洲国产高清不卡| 欧美日韩精品一区二区| 成a人片亚洲日本久久| 免费在线视频一区| 中文字幕在线免费不卡| 日韩欧美激情一区| 在线视频你懂得一区| 国产自产2019最新不卡| 亚洲高清视频中文字幕| 国产精品久久久久7777按摩| 日韩精品一区二区三区视频在线观看 | 欧美日韩一本到| 成人福利视频网站| 日本不卡123| 一区二区三区日韩欧美精品| 中文无字幕一区二区三区| 欧美一级高清大全免费观看| 91极品美女在线| 不卡视频在线观看| 捆绑紧缚一区二区三区视频| 婷婷夜色潮精品综合在线| 国产精品国产三级国产普通话蜜臀| 欧美日韩三级视频| 91久久精品一区二区三| 91在线丨porny丨国产| 成人性生交大合| 蜜臀久久久久久久| 香蕉久久夜色精品国产使用方法| 亚洲欧美日韩电影| 久久精品在线观看| 国产欧美一区二区三区网站 | 亚洲同性gay激情无套| 中文字幕国产一区二区| 国产日韩三级在线| 国产片一区二区三区| 久久综合久久久久88| 久久这里只精品最新地址| 国产午夜精品在线观看| 欧美激情在线一区二区| 中国色在线观看另类| 国产精品久久久久久久久图文区| 日本一区二区动态图| 国产精品欧美久久久久无广告 | 欧美美女激情18p| 51精品国自产在线| 欧美一区二区三区视频在线观看| 欧美亚洲综合另类| 欧美日韩成人高清| 欧美精品自拍偷拍动漫精品| 91精品国产免费| 日韩一级片在线播放| 2021久久国产精品不只是精品 | 99riav久久精品riav| 本田岬高潮一区二区三区| zzijzzij亚洲日本少妇熟睡| 国产·精品毛片| 91玉足脚交白嫩脚丫在线播放| www.欧美色图| 欧美日本一区二区在线观看| 欧美日韩综合在线| 精品日韩一区二区三区免费视频| 久久综合久久久久88| 日韩美女视频一区二区| 日韩成人精品视频| 精品一区二区三区在线观看国产 | 一区二区日韩电影| 日韩经典一区二区| 国产91精品精华液一区二区三区| 色噜噜狠狠色综合中国| 精品剧情v国产在线观看在线| 国产精品久久久久久久浪潮网站 | 亚洲成a人v欧美综合天堂下载| 日本aⅴ亚洲精品中文乱码| 国产一区二区日韩精品| 不卡影院免费观看| 欧美一区二区三区男人的天堂| 2017欧美狠狠色| 亚洲日本在线看| 国产精品66部| 7777精品伊人久久久大香线蕉超级流畅| 国产日韩av一区| 久久精品99国产精品日本| 99久久夜色精品国产网站|