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

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

?? csl_dat_.sa

?? Ti C6416 環境下
?? 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一区二区三区免费野_久草精品视频
欧美一卡在线观看| 国产精品成人一区二区三区夜夜夜| 精品久久久久香蕉网| 国产欧美精品在线观看| 国产精品高清亚洲| 欧美aaa在线| 91在线观看免费视频| 欧美一级日韩不卡播放免费| 国产精品久久久久久久久果冻传媒| 首页亚洲欧美制服丝腿| www.日韩av| 久久亚洲捆绑美女| 视频在线在亚洲| 91丝袜高跟美女视频| 国产精品网友自拍| 久久av中文字幕片| 欧美日韩电影在线播放| 一区在线播放视频| 成人午夜短视频| 精品国一区二区三区| 亚洲一区二区精品3399| 一本到不卡免费一区二区| 欧美高清在线精品一区| 久久不见久久见中文字幕免费| 欧美日韩国产a| 亚洲综合色在线| 色哟哟国产精品免费观看| 一色桃子久久精品亚洲| 成a人片亚洲日本久久| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 久久久.com| 国产精品综合在线视频| 精品久久久久久综合日本欧美 | 国产在线视频一区二区三区| 欧美精品一二三区| 视频一区欧美日韩| 欧美日韩精品免费观看视频| 一区二区三区四区乱视频| 91视频在线看| 亚洲最新在线观看| 日本韩国欧美一区| 亚洲国产精品麻豆| 欧美老年两性高潮| 男女激情视频一区| 久久综合九色综合欧美亚洲| 国产精品一区二区黑丝| 亚洲国产精品二十页| av一区二区不卡| 亚洲在线视频免费观看| 欧美麻豆精品久久久久久| 日本三级亚洲精品| 久久久久久久久久久久久女国产乱| 韩国女主播成人在线| 久久综合久久综合久久| 国产 日韩 欧美大片| 中文无字幕一区二区三区| 99久久精品免费精品国产| 亚洲国产欧美另类丝袜| 日韩一区二区在线观看视频播放 | 亚洲一区二区三区国产| 日韩欧美视频在线| 国产ts人妖一区二区| 亚洲综合在线五月| 欧美sm极限捆绑bd| 97久久人人超碰| 午夜国产精品影院在线观看| 久久久精品一品道一区| 色8久久精品久久久久久蜜| 午夜久久电影网| 久久亚洲免费视频| 欧美日韩一二区| 国产精品一区一区| 樱花影视一区二区| 久久久久一区二区三区四区| 91在线看国产| 狂野欧美性猛交blacked| 国产精品毛片久久久久久久| 欧美日韩视频在线第一区| 黄色精品一二区| 亚洲桃色在线一区| xnxx国产精品| 在线观看国产日韩| 福利一区二区在线| 天天综合网天天综合色| 日本一区二区动态图| 日韩视频免费观看高清完整版| 成人aa视频在线观看| 国内精品在线播放| 午夜亚洲国产au精品一区二区| 国产人成一区二区三区影院| 欧美日韩午夜影院| 色婷婷综合久久| 成人综合激情网| 精品一区二区三区免费观看| 洋洋成人永久网站入口| 国产精品久久久久久久久果冻传媒 | 亚洲成a人在线观看| 国产精品午夜春色av| 在线免费av一区| 国产91丝袜在线观看| 国产精品成人免费在线| 精品国产精品一区二区夜夜嗨 | 成人av综合一区| 日韩亚洲欧美一区| 成人高清视频在线| 风间由美一区二区av101| 亚洲综合色噜噜狠狠| 久久久亚洲精品石原莉奈| 欧美日韩久久一区| 91免费看片在线观看| 美腿丝袜亚洲色图| 国产精品精品国产色婷婷| 成人永久免费视频| 亚洲女厕所小便bbb| 欧美xxxxx裸体时装秀| 不卡的av网站| 免费成人性网站| 一区二区三区在线视频观看58| 26uuu成人网一区二区三区| 欧美在线制服丝袜| 国产不卡免费视频| 久久精品国产秦先生| 午夜影视日本亚洲欧洲精品| 中文字幕一区二区在线播放| 日韩一本二本av| 欧美日韩在线不卡| 色先锋aa成人| 91亚洲午夜精品久久久久久| 免费成人av在线播放| 亚洲乱码国产乱码精品精可以看| 4438x成人网最大色成网站| 成人免费高清视频| 国产九九视频一区二区三区| 国产麻豆午夜三级精品| 亚洲主播在线播放| 亚洲成人一二三| 日韩西西人体444www| 成人动漫一区二区三区| 粉嫩蜜臀av国产精品网站| 国产在线日韩欧美| 成人动漫一区二区在线| 在线日韩国产精品| 欧美偷拍一区二区| 欧美日高清视频| 中文字幕乱码日本亚洲一区二区| 91精品国产综合久久精品图片| 欧美一区二区在线不卡| 黄网站免费久久| 亚洲一区二区在线免费观看视频| 91精品福利在线一区二区三区| 成人免费高清在线| 欧美日韩综合一区| 久久综合狠狠综合久久综合88| 日本一区二区免费在线| 亚洲欧洲精品成人久久奇米网| 亚洲精品乱码久久久久久久久 | 国产精品短视频| 亚洲三级在线观看| 美女在线视频一区| 欧美国产成人精品| 午夜精品爽啪视频| 91成人免费电影| 欧美剧情片在线观看| www精品美女久久久tv| 日本午夜精品一区二区三区电影 | 久久人人97超碰com| 国产精品国产三级国产专播品爱网| 亚洲婷婷综合久久一本伊一区| 亚洲成av人片在线观看无码| 国产伦精品一区二区三区免费 | 国产欧美日韩激情| 欧美精品一区二区三区一线天视频| 久久美女高清视频| 亚洲图片一区二区| 精品一区二区日韩| 日韩亚洲欧美在线| 亚洲人一二三区| 日韩va欧美va亚洲va久久| 久草精品在线观看| 国产一区二区三区久久久| 欧美性视频一区二区三区| 欧美在线看片a免费观看| 日本高清成人免费播放| 欧美精品成人一区二区三区四区| 国产成人在线视频免费播放| 日韩欧美一级二级三级| 香蕉成人伊视频在线观看| 色哟哟一区二区在线观看| 欧美日韩成人在线| 亚洲一区二区欧美| 一本一道久久a久久精品 | 精品精品国产高清a毛片牛牛| 日本不卡123| 欧美电影精品一区二区| 欧美丰满一区二区免费视频| 中文字幕不卡在线播放| 懂色av一区二区三区免费看| 91精品国产麻豆国产自产在线| 亚洲女人小视频在线观看| 狠狠网亚洲精品|