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

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

?? csl_dat_.sa

?? evmDM642 flash測試程序
?? 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一区二区三区免费野_久草精品视频
jlzzjlzz欧美大全| 中文字幕在线不卡视频| 日韩综合小视频| 欧美精品在线观看播放| 天堂一区二区在线| 欧美一级欧美一级在线播放| 欧美天天综合网| 久久久久久久久久看片| 国产成人免费视频精品含羞草妖精| 久久噜噜亚洲综合| 国产成人在线电影| 国产精品久久久久一区| 色香色香欲天天天影视综合网| 亚洲女人****多毛耸耸8| 欧美日韩一区在线观看| 男女性色大片免费观看一区二区| 精品人伦一区二区色婷婷| 韩国一区二区在线观看| 中文成人综合网| 欧美亚洲日本国产| 麻豆精品久久精品色综合| 久久精品视频一区| 欧美天堂一区二区三区| 精品一区二区三区免费| 国产精品国产三级国产三级人妇| 色琪琪一区二区三区亚洲区| 视频一区免费在线观看| 国产欧美一区视频| 欧美日韩午夜精品| 国内精品免费**视频| 国产精品免费看片| 欧美精品乱人伦久久久久久| 激情综合色播激情啊| 一区二区中文字幕在线| 日韩亚洲欧美一区| 国产91精品露脸国语对白| 一级日本不卡的影视| 精品国产123| 欧美亚洲国产bt| 国产91精品久久久久久久网曝门| 丝袜美腿亚洲色图| 亚洲视频电影在线| 337p日本欧洲亚洲大胆色噜噜| 日本道精品一区二区三区| 极品少妇一区二区| 亚洲444eee在线观看| 国产精品久久久久久久久免费樱桃 | 国产亚洲欧美一级| 欧美日韩夫妻久久| 99视频热这里只有精品免费| 日本欧美一区二区| 伊人性伊人情综合网| 国产亚洲成av人在线观看导航| 欧美日韩中字一区| 99国产欧美另类久久久精品| 国产精品一区二区久激情瑜伽| 中文一区一区三区高中清不卡| 91精品国产综合久久香蕉麻豆| 91一区二区在线观看| 国产成人av自拍| 免费在线成人网| 亚洲韩国精品一区| 自拍偷在线精品自拍偷无码专区| 久久综合网色—综合色88| 51午夜精品国产| 欧美午夜电影网| 色综合中文字幕| 国产白丝精品91爽爽久久| 久久国产免费看| 琪琪久久久久日韩精品| 亚洲bt欧美bt精品| 亚洲h在线观看| 亚洲一本大道在线| 亚洲图片欧美激情| 国产精品网站在线观看| 久久久综合精品| 久久亚洲欧美国产精品乐播| 日韩美女一区二区三区四区| 日韩天堂在线观看| 精品国产成人在线影院| 精品av久久707| 久久久久久免费网| 国产欧美日韩激情| 中文字幕欧美日韩一区| 久久精品亚洲一区二区三区浴池 | 亚洲国产欧美一区二区三区丁香婷| 中文字幕一区二区三区不卡在线| 久久精品亚洲麻豆av一区二区| 26uuu成人网一区二区三区| 精品国产乱码久久久久久久 | 国产精品99久久久久久有的能看| 国产呦精品一区二区三区网站| 国产在线精品一区在线观看麻豆| 精品一区二区免费视频| 国产黑丝在线一区二区三区| 国产99久久久久久免费看农村| 成人动漫一区二区三区| 成人午夜电影网站| av资源站一区| 欧美日韩国产小视频在线观看| 欧美久久久久久蜜桃| 精品国产三级a在线观看| 国产午夜精品一区二区三区视频| 国产精品久久久久影院色老大| 国产精品毛片久久久久久久| 亚洲精品国久久99热| 首页国产丝袜综合| 国产久卡久卡久卡久卡视频精品| 成人91在线观看| 欧美午夜寂寞影院| 精品美女被调教视频大全网站| 国产欧美1区2区3区| 亚洲精品成人精品456| 婷婷国产在线综合| 精品亚洲欧美一区| 99久久免费精品| 7777精品伊人久久久大香线蕉经典版下载 | 99视频热这里只有精品免费| 欧美伊人久久大香线蕉综合69| 欧美一区二区三区视频免费| 国产视频一区二区在线观看| 亚洲免费毛片网站| 美国十次综合导航| 久久精品亚洲一区二区三区浴池| 国产精品久久一卡二卡| 国产美女av一区二区三区| 亚洲国产高清aⅴ视频| 欧美一级黄色录像| 久久九九99视频| 一区二区在线观看不卡| 男人的天堂亚洲一区| hitomi一区二区三区精品| 日韩一区二区中文字幕| 亚洲视频资源在线| 精品一区二区免费视频| 欧美日韩国产三级| 午夜精品123| 日韩午夜激情视频| 欧美女孩性生活视频| 中文字幕av不卡| 麻豆国产欧美日韩综合精品二区 | 国产成人精品免费一区二区| 欧美性猛片xxxx免费看久爱| 国产日产精品1区| 日本不卡一二三| av亚洲精华国产精华| 精品国产伦一区二区三区观看体验 | 国产麻豆精品久久一二三| 欧美主播一区二区三区| 欧美极品另类videosde| 麻豆精品视频在线观看| 欧美日韩激情一区二区三区| 国产精品成人在线观看 | 成人免费视频视频| 日韩女同互慰一区二区| 亚洲高清免费一级二级三级| av在线综合网| 国产精品伦一区| 精品一区二区三区蜜桃| 日韩欧美国产一区二区三区| 亚洲成人一二三| 欧洲精品一区二区三区在线观看| 国产精品久久久久久久久免费桃花| 成人免费视频免费观看| 日韩欧美国产成人一区二区| 天堂午夜影视日韩欧美一区二区| 欧美亚洲日本国产| 亚洲h在线观看| 欧美肥妇毛茸茸| 日韩中文字幕亚洲一区二区va在线| 欧美中文字幕不卡| 亚洲激情自拍视频| 91国产成人在线| 亚洲在线观看免费视频| 欧美日韩中文字幕精品| 亚洲成人精品影院| 在线成人av网站| 奇米影视一区二区三区| 日韩免费一区二区| 韩国v欧美v日本v亚洲v| 久久久久久久久99精品| 国产一区二区毛片| 国产视频亚洲色图| 成人av影视在线观看| 国产精品伦理在线| 99精品视频中文字幕| 一区二区在线观看不卡| 在线观看国产日韩| 免费日韩伦理电影| 欧美精品一区二区蜜臀亚洲| 粉嫩av一区二区三区在线播放| 国产精品欧美精品| 在线免费不卡电影| 美女一区二区三区在线观看| 欧美一级在线观看| 韩国毛片一区二区三区| 国产精品美女视频| 欧洲av在线精品| 久久99久久久久久久久久久| 欧美激情一区二区三区不卡|