亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
成人国产一区二区三区精品| 国产精品久久一卡二卡| 欧美一区日韩一区| 日韩欧美亚洲一区二区| 国产婷婷一区二区| 中文字幕日韩av资源站| 依依成人综合视频| 国内精品伊人久久久久av影院| 久久99精品久久久久| 不卡大黄网站免费看| 一本一本大道香蕉久在线精品 | 欧美一级二级在线观看| 91精品国产综合久久蜜臀| 国产情人综合久久777777| 自拍视频在线观看一区二区| 一区二区在线看| 韩国av一区二区三区在线观看| 国产成人av一区二区| 91免费国产视频网站| 欧美三区免费完整视频在线观看| 欧美日韩成人激情| 国产亚洲一本大道中文在线| 亚洲精选在线视频| 国产一区91精品张津瑜| 99久久99久久精品国产片果冻| 91精品国产综合久久久蜜臀粉嫩 | 国产日韩欧美一区二区三区综合| 亚洲女子a中天字幕| 美腿丝袜亚洲一区| 国产精品自拍三区| 在线播放中文字幕一区| 国产欧美日韩精品在线| 日韩激情中文字幕| 成人精品在线视频观看| 在线不卡免费av| 18欧美亚洲精品| 久久国产生活片100| 日本大香伊一区二区三区| 久久精品亚洲乱码伦伦中文| 亚洲电影在线免费观看| 91蜜桃网址入口| 欧美精品一区二区高清在线观看 | 成人精品视频一区二区三区| 日韩一卡二卡三卡| 亚洲三级在线观看| 成人动漫视频在线| 精品国产伦一区二区三区观看方式| 亚洲免费三区一区二区| 国产精品中文欧美| 欧美一区二区三区日韩视频| 亚洲一级不卡视频| 99国产精品久| 国产精品久久久久久久第一福利 | 日本成人在线网站| 色综合天天综合色综合av| 久久亚洲私人国产精品va媚药| 亚洲色欲色欲www| 国产高清久久久| 精品久久久久久久一区二区蜜臀| 亚洲国产精品天堂| 成人国产精品视频| 久久婷婷综合激情| 男女视频一区二区| 欧美精品v国产精品v日韩精品| 综合分类小说区另类春色亚洲小说欧美| 国产精品卡一卡二卡三| 国产一区二区三区四区五区美女| 欧美美女喷水视频| 天天av天天翘天天综合网色鬼国产| 99免费精品在线| 1区2区3区欧美| 成人一区二区三区中文字幕| 国产日韩欧美激情| 国产一区二区中文字幕| 久久久精品国产99久久精品芒果 | 欧美性猛交xxxxxxxx| 一区二区三区在线免费视频| 波多野结衣在线aⅴ中文字幕不卡| 欧美高清视频在线高清观看mv色露露十八| 亚洲欧美激情小说另类| 不卡一区二区中文字幕| 亚洲图片欧美激情| fc2成人免费人成在线观看播放| 国产精品无遮挡| 国产二区国产一区在线观看| 精品av久久707| 国产91丝袜在线播放| 国产农村妇女毛片精品久久麻豆| 国产91丝袜在线播放| 中文字幕av免费专区久久| 成人小视频在线| 国产精品乱码一区二区三区软件| 国产精品伊人色| 亚洲欧洲美洲综合色网| 99精品视频一区二区三区| 亚洲免费在线观看| 欧美性色综合网| 日本不卡高清视频| 日韩精品一区二区在线观看| 国产激情视频一区二区三区欧美| 久久中文娱乐网| 国产一区二区视频在线| 综合色天天鬼久久鬼色| 在线视频一区二区三| 日韩国产欧美一区二区三区| 欧美一级欧美三级| 成人动漫视频在线| 一区二区三区免费| 日韩美女一区二区三区| 国产一区二区不卡在线| 亚洲欧洲成人精品av97| 欧美视频中文字幕| 亚洲免费观看在线视频| 日韩欧美一二三四区| 国产成人av电影在线播放| 亚洲美女精品一区| 欧美精品久久久久久久多人混战 | 国精品**一区二区三区在线蜜桃| 国产日韩欧美麻豆| 色网综合在线观看| 久久成人麻豆午夜电影| 国产欧美综合在线| 欧美日韩国产不卡| 国产一区二区三区黄视频| 亚洲免费观看高清完整 | 一区二区免费在线播放| 91麻豆精品国产无毒不卡在线观看| 美女www一区二区| 又紧又大又爽精品一区二区| 91.麻豆视频| caoporn国产精品| 天天影视网天天综合色在线播放| 中日韩av电影| 欧美日本韩国一区| av在线播放一区二区三区| 午夜精品福利一区二区蜜股av | 国产精品99久久久久久似苏梦涵| 亚洲人吸女人奶水| 久久久久久久国产精品影院| 在线免费观看日韩欧美| 国产成人免费高清| 亚洲第一主播视频| 国产精品久久久久久久久动漫| 91美女蜜桃在线| 麻豆精品一区二区三区| 亚洲欧美日韩精品久久久久| 欧美日韩国产经典色站一区二区三区| 国产福利视频一区二区三区| 亚洲国产成人高清精品| 日韩欧美一区中文| 成人免费毛片嘿嘿连载视频| 久久66热re国产| 亚洲国产精品精华液网站| 亚洲男人天堂一区| 久久精品视频在线看| 欧美电影精品一区二区| 欧美午夜在线一二页| 91在线观看免费视频| 精品系列免费在线观看| 日韩av网站免费在线| 亚洲精品福利视频网站| 一区免费观看视频| 国产亚洲欧美在线| 精品国产不卡一区二区三区| 欧美日韩国产精选| 欧美日韩精品欧美日韩精品一 | 欧美精品777| 色一区在线观看| 另类调教123区| 日本视频一区二区三区| 国产调教视频一区| 国产人成亚洲第一网站在线播放| 欧美蜜桃一区二区三区| 欧美视频一区二区在线观看| 成人看片黄a免费看在线| 国产成人免费在线视频| 精品一区二区三区免费毛片爱 | 亚洲精品一区二区三区蜜桃下载| 欧美日本国产视频| 欧美在线视频日韩| 欧美嫩在线观看| 欧美系列亚洲系列| 欧美三级蜜桃2在线观看| 色呦呦日韩精品| 国产成人8x视频一区二区| 精品一区二区三区不卡| 久久成人精品无人区| 国产精品你懂的| 国产精品三级av| 欧美激情一区二区三区不卡| 久久精品人人爽人人爽| 日韩一区二区三区免费看| 日韩一区二区视频在线观看| 7777精品久久久大香线蕉 | 麻豆精品在线看| 麻豆精品精品国产自在97香蕉| 麻豆国产精品一区二区三区 | 5月丁香婷婷综合| 欧美一区二区三区电影| 日韩一级黄色片|