亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
日韩欧美一区在线| 国产在线国偷精品产拍免费yy| 久久网站最新地址| 欧美不卡激情三级在线观看| 91极品视觉盛宴| 日韩西西人体444www| 国产日韩欧美麻豆| **欧美大码日韩| 喷白浆一区二区| 成人久久久精品乱码一区二区三区| av电影天堂一区二区在线| 91国内精品野花午夜精品| 欧美一区二区三区在线观看 | 精品国产制服丝袜高跟| 国产欧美日韩在线看| 亚洲欧美激情小说另类| 日本亚洲欧美天堂免费| 精品写真视频在线观看| 欧美视频日韩视频在线观看| 精品国产凹凸成av人导航| 亚洲乱码中文字幕| 国产精品综合在线视频| 精品日韩一区二区三区| 午夜视频一区二区| 色狠狠桃花综合| 亚洲伊人色欲综合网| 国产福利91精品| 精品久久久久久久一区二区蜜臀| 亚洲小少妇裸体bbw| 欧美日韩视频在线观看一区二区三区| 国产精品国产馆在线真实露脸| 韩国一区二区三区| 国产女主播在线一区二区| 国产一区二区免费视频| 久久久精品国产免费观看同学| 亚洲精品va在线观看| 欧美视频你懂的| 婷婷丁香久久五月婷婷| 欧美一区中文字幕| 国产在线精品一区在线观看麻豆| 欧美日韩亚洲综合在线 | 亚洲综合丁香婷婷六月香| 色av成人天堂桃色av| 亚洲1区2区3区视频| 欧美一区二区三区免费| 麻豆成人91精品二区三区| 久久久久久久久97黄色工厂| 在线精品亚洲一区二区不卡| 婷婷六月综合网| 久久亚洲综合av| 在线日韩av片| 国产在线播放一区| 亚洲一区二区三区在线| 欧美成人一区二区三区| 91麻豆免费看| 国产美女精品在线| 丝袜美腿亚洲一区二区图片| 国产欧美一区二区精品忘忧草| 欧美专区亚洲专区| 懂色av一区二区三区免费观看| 亚洲va欧美va人人爽| 亚洲欧美怡红院| 中文字幕成人av| 久久久亚洲精品石原莉奈| 一本大道久久a久久精品综合| 亚洲国产精品久久不卡毛片| 国产精品无遮挡| 久久精品人人做| 久久无码av三级| 国产视频一区在线观看| 精品日韩欧美在线| 久久久久久亚洲综合影院红桃| 日本高清视频一区二区| 欧美四级电影网| 91精品国产手机| 精品国产百合女同互慰| 精品少妇一区二区三区日产乱码| 欧美艳星brazzers| 欧美色图第一页| 欧美日韩久久不卡| 26uuu久久天堂性欧美| 国产欧美精品在线观看| 亚洲免费观看视频| 亚洲尤物在线视频观看| 日韩二区三区四区| 视频一区视频二区中文| 国产精品综合视频| 色综合久久综合网97色综合| 欧美天天综合网| 欧美本精品男人aⅴ天堂| 精品国产伦一区二区三区观看体验 | 粉嫩13p一区二区三区| 欧美影片第一页| 国产精品天干天干在线综合| 五月婷婷色综合| 欧美影院午夜播放| 中文字幕精品综合| 国产一区二区伦理| 欧美精品丝袜久久久中文字幕| 国产日韩欧美电影| 亚洲九九爱视频| 91偷拍与自偷拍精品| 国产午夜亚洲精品不卡| 免费观看日韩电影| 欧美日韩午夜在线| 天天色天天爱天天射综合| 色综合久久中文字幕综合网| 中文av字幕一区| eeuss影院一区二区三区| 日韩毛片视频在线看| 97精品久久久午夜一区二区三区| 国产欧美日韩麻豆91| 国产99精品国产| 2023国产精品自拍| 国内欧美视频一区二区 | 91精品在线免费观看| 亚洲一本大道在线| 欧美va在线播放| 99国产精品久久久久久久久久久| 国产三级精品在线| 欧美午夜电影一区| 秋霞成人午夜伦在线观看| 欧美精品一区二区三区高清aⅴ| 美女一区二区在线观看| 国产精品久久久久影视| 成人小视频免费观看| 亚洲乱码中文字幕| 精品电影一区二区三区 | 欧美日韩视频第一区| 国产一区二区三区在线观看免费 | 成人免费视频caoporn| 亚洲精品福利视频网站| 精品人伦一区二区色婷婷| av亚洲精华国产精华精华 | 蜜桃视频免费观看一区| 久久久精品2019中文字幕之3| 欧美在线|欧美| 成人激情av网| 成人高清视频免费观看| 日韩综合在线视频| 午夜国产精品影院在线观看| 一区二区三区四区亚洲| 亚洲欧洲三级电影| 一区二区三区在线免费播放| 国产精品成人免费| 18成人在线观看| 欧美电影在线免费观看| 欧美久久久久久久久| 欧美午夜精品久久久久久超碰| 色狠狠色狠狠综合| 91精品国产高清一区二区三区| 欧美亚洲一区二区在线观看| 一本一本大道香蕉久在线精品 | 日韩欧美在线网站| 欧美zozo另类异族| 亚洲区小说区图片区qvod| 一区二区在线观看免费视频播放| 亚洲综合在线免费观看| 日本午夜一本久久久综合| 国产一区二区三区免费看| 五月婷婷激情综合| 国产一区二区在线电影| 99免费精品视频| 欧美日韩午夜影院| 中文字幕av资源一区| 日韩电影免费一区| 国产毛片精品视频| 欧美精品久久久久久久久老牛影院| 久久品道一品道久久精品| 亚洲精品一二三区| gogo大胆日本视频一区| 国产欧美日韩综合精品一区二区| 一区二区三区四区视频精品免费 | 日本亚洲最大的色成网站www| 99热99精品| 国产精品国产三级国产有无不卡 | 欧美精品自拍偷拍动漫精品| 国产精品网站在线| 国产精品综合视频| 日韩欧美激情在线| 亚洲444eee在线观看| 欧美日韩成人综合在线一区二区| 中文字幕欧美一区| 在线中文字幕不卡| 亚洲视频一二三| 成人午夜在线免费| 国产精品久久久久影院色老大| 丁香五精品蜜臀久久久久99网站| 久久久久久久综合色一本| 国产成人综合在线观看| 久久久精品黄色| 日本高清无吗v一区| 秋霞成人午夜伦在线观看| 久久午夜色播影院免费高清| 美腿丝袜在线亚洲一区 | 三级欧美韩日大片在线看| 在线播放/欧美激情| 国产一区二区主播在线| 中文字幕不卡一区| 色悠久久久久综合欧美99|