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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? csl_dat_.sa

?? tms320c6416與tlv320aic23b接口基本程序
?? SA
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
               ;All done so go to procedure exit code
               B     DAT_COPY_RETURN

DAT_COPY_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  0x00000251,Y
               MVKH  0x00000251,Y
               OR    Y,initPrictl,Y
               STW   Y,*dmaBase[PRICTL]

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

               .return id
               .endproc


*------------------------------------------------------------------------------*
* Uint32 DAT_copy2d(Uint32 type, void *src, void *dst, Uint16 lineLen, 
*   Uint16 lineCnt, Uint16 linePitch);
*------------------------------------------------------------------------------*
_DAT_copy2d .cproc type, src, dst, lineLen, lineCnt, linePitch

               .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
               .reg gblcntAddr
               .reg gblidxAddr

               ;Load useMask an Initial primary control 
               ;register from state structure
               MVKL  __DAT_stateStruct,stateAddr
               MVKH  __DAT_stateStruct,stateAddr
               LDW   *stateAddr(State.useMask),useMask 
               LDW   *stateAddr(State.initPrictl),initPrictl 
               LDW   *stateAddr(State.gblcntAddr),gblcntAddr 
               LDW   *stateAddr(State.gblidxAddr),gblidxAddr 

               ;Constant needed later
               MVK   31,const31

DAT_COPY2D_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_COPY2D_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    lineLen,alignment,alignment
               OR    linePitch,alignment,alignment
               AND   alignment,3,alignment
               
DAT_COPY2D_32:
               ;Check to see if 32-bit aligned, branch if not
               CMPEQ alignment,0,pred
       [!pred] B     DAT_COPY2D_16
       
               ;Store global index reload register  
               ;((linePitch-lineLen+4)<<16)|4
               SUB   linePitch,lineLen,X
               ADD   X,4,X 
               SHL   X,16,X 
               OR    X,4,X
               STW   X,*gblidxAddr[0]
               
               ;Store transfer count and reload   (lineCnt<<16)|(lineLen>>2)
               SHL   lineCnt,16,Y
               SHRU  lineLen,2,X
               OR    X,Y,X
               STW   X,*dmaBase[XFRCNT]
               STW   X,*gblcntAddr[0]
               
               ;Store primary control register
               MVKL  0x00000001,Y
               MVKH  0x00000001,Y
               OR    Y,initPrictl,Y
               OR    Y,type,Y
               STW   Y,*dmaBase[PRICTL]
               
               ;All done so go to procedure exit code
               B     DAT_COPY2D_RETURN
      
DAT_COPY2D_16:
               ;Check to see if 16-bit aligned, branch if not
               CMPEQ alignment,2,pred
       [!pred] B     DAT_COPY2D_8 
       
               ;Store global index reload register   
               ;((linePitch-lineLen+2)<<16)|2
               SUB   linePitch,lineLen,X
               ADD   X,2,X 
               SHL   X,16,X 
               OR    X,2,X
               STW   X,*gblidxAddr[0]
               
               ;Store transfer count and reload   (lineCnt<<16)|(lineLen>>1)
               SHL   lineCnt,16,Y
               SHRU  lineLen,1,X
               OR    X,Y,X
               STW   X,*dmaBase[XFRCNT]
               STW   X,*gblcntAddr[0]

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

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

               ;Store global index reload register   
               ;((linePitch-lineLen+1)<<16)|1
               SUB   linePitch,lineLen,X
               ADD   X,1,X 
               SHL   X,16,X 
               OR    X,1,X
               STW   X,*gblidxAddr[0]
               
               ;Store transfer count and reload   (lineCnt<<16)|(lineLen)
               SHL   lineCnt,16,X
               OR    X,lineLen,X
               STW   X,*dmaBase[XFRCNT]
               STW   X,*gblcntAddr[0]

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

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

               .return id
               .endproc

*------------------------------------------------------------------------------*
  .endif ;DMA_SUPPORT




 .if EDMA_SUPPORT
********************************************************************************
* EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT 
* EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT 
* EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT 
* EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT 
* EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT 
* EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT 
* EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT 
* EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT 
* EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT 
* EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT 
* EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT 
* EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT EDMA_SUPPORT 
********************************************************************************

;QDMA register offsets
OPT    .set 8
SRC    .set 1
CNT    .set 2
DST    .set 3
IDX    .set 4

;state structure, must match that in the C file
State      .struct
useMask    .word
baseAddr   .word
initOpt    .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 cipr
               .reg ciprAddr
               .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 
                
               MVKL  0x01A0FFE4,ciprAddr
               MVKH  0x01A0FFE4,ciprAddr
               ZERO  pred
DAT_WAIT_LOOP0:       
               ;Wait until all mask bits appears in the CIPR
       [!pred] LDW   *ciprAddr,cipr
               AND   useMask,cipr,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
               EXTU  id,24,24,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 CIPR mask from slot number (mask = 1<<slotNumber)
               MVK   1,mask
               SHL   mask,slotNumber,mask

               MVKL  0x01A0FFE4,ciprAddr
               MVKH  0x01A0FFE4,ciprAddr
               ZERO  pred
DAT_WAIT_LOOP1:
               ;Wait until the mask bit appears in the CIPR
       [!pred] LDW   *ciprAddr,cipr
               AND   mask,cipr,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 cipr
               .reg ciprAddr
               .reg busyFlag

               ;clear the busy flag
               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 CIPR mask from slot number (mask = 1<<slotNumber)
               MVK   1,mask
               SHL   mask,slotNumber,mask

               MVKL  0x01A0FFE4,ciprAddr
               MVKH  0x01A0FFE4,ciprAddr

               ;check to see if the mask bit appears in the CIPR
               LDW   *ciprAddr,cipr
               AND   mask,cipr,pred
        [pred] B     DAT_BUSY_RETURN

               ;the mask bit didn't appear, 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 cipr
               .reg id
               .reg alignment
               .reg qdmaBase
               .reg initOpt
               .reg ciprAddr

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

               ;Constant needed later
               MVK   31,const31

               MVKL  0x01A0FFE4,ciprAddr
               MVKH  0x01A0FFE4,ciprAddr
               ZERO  pred
DAT_FILL_LOOP1:
               ;Wait for a free slot to open up
       [!pred] LDW   *ciprAddr,cipr
               AND   cipr,useMask,pred
       [!pred] B     DAT_FILL_LOOP1

               LMBD  1,pred,X
               SUB   const31,X,slotNumber

               ;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
               STW   mask,*ciprAddr

               ;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

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩视频免费观看高清完整版在线观看| 欧美激情一区二区三区蜜桃视频| 91.麻豆视频| 日韩在线a电影| 欧美极品xxx| 欧美日韩一区二区欧美激情| 高清视频一区二区| 五月婷婷综合网| 精品国产99国产精品| 国产精品久久久久久久久图文区 | 国产精品美女久久久久久| 欧美天堂一区二区三区| 成人国产视频在线观看| 国模冰冰炮一区二区| 亚洲黄一区二区三区| 欧美精品一区男女天堂| 欧美一区二区三区男人的天堂| 国产美女在线观看一区| 国产精品白丝在线| 国产精品免费丝袜| 国产日韩欧美制服另类| 精品精品国产高清一毛片一天堂| 日本道色综合久久| 国产毛片精品一区| 九色综合国产一区二区三区| 日本一不卡视频| 一级女性全黄久久生活片免费| 精品国产一区二区三区久久久蜜月| 日本美女视频一区二区| 亚洲裸体在线观看| 欧美xxxx在线观看| 欧美性淫爽ww久久久久无| 99久久精品一区二区| 国产乱码精品一品二品| 国精品**一区二区三区在线蜜桃| 丝袜美腿成人在线| 精品粉嫩aⅴ一区二区三区四区| 欧美日韩高清不卡| 在线免费观看成人短视频| 欧美日韩在线观看一区二区 | 国产精品99久久久久久久vr | 91久久久免费一区二区| 91污片在线观看| 99r国产精品| 99久久精品免费看国产免费软件| 国产精品1区2区3区在线观看| 九色综合国产一区二区三区| 一区二区三区不卡视频在线观看| 欧美绝品在线观看成人午夜影视| 在线这里只有精品| 欧美伦理影视网| 精品久久久久久久久久久院品网 | 国产三级欧美三级| 国产精品久久久久久久久免费丝袜 | 亚洲精品一区二区三区在线观看 | 亚洲同性gay激情无套| 一区二区三区在线视频播放 | 制服丝袜国产精品| 337p亚洲精品色噜噜噜| 国产情人综合久久777777| 久久久久亚洲蜜桃| 亚洲精品国产视频| 欧美日韩在线不卡| 国产亚洲综合av| 亚洲靠逼com| 麻豆一区二区在线| 无码av免费一区二区三区试看| 青娱乐精品在线视频| 国产成人小视频| 欧美在线一二三四区| 久久九九影视网| 亚洲综合视频网| 老司机精品视频导航| 欧美日韩一区二区三区视频| 色婷婷综合久久久中文字幕| 欧美日韩免费高清一区色橹橹| 欧美视频一区二区三区| 欧美一区二区视频网站| 久久先锋影音av鲁色资源| 奇米一区二区三区av| 91精品视频网| 奇米一区二区三区| 久久综合999| 国产丶欧美丶日本不卡视频| 欧美激情一区二区在线| gogo大胆日本视频一区| 国产精品传媒入口麻豆| 99久久精品国产一区| 亚洲免费视频成人| 欧美日韩在线播| 美女视频黄a大片欧美| 精品国产网站在线观看| 国产成人av在线影院| 国产精品欧美一级免费| 色婷婷久久久久swag精品 | 综合久久给合久久狠狠狠97色| 99国产精品视频免费观看| 亚洲综合在线五月| 欧美一区二区三区四区视频| 国产精品456| 亚洲欧美日韩久久| 7777精品伊人久久久大香线蕉经典版下载 | 五月天亚洲精品| 精品视频123区在线观看| 蜜臀va亚洲va欧美va天堂| 国产清纯在线一区二区www| 色综合天天视频在线观看| 日韩av二区在线播放| 日本一区二区三区在线不卡| 色妞www精品视频| 日本v片在线高清不卡在线观看| 国产校园另类小说区| 99久久99久久久精品齐齐| 五月开心婷婷久久| 国产欧美精品一区二区色综合 | 国产精品久久久久7777按摩| 欧美日韩国产一区| 国产成人午夜精品影院观看视频| 亚洲一区二区三区四区五区黄| 精品久久久久久亚洲综合网| 日本韩国欧美三级| 国产真实乱对白精彩久久| 亚洲精品网站在线观看| 26uuu亚洲综合色| 在线欧美日韩精品| 国产91在线看| 石原莉奈一区二区三区在线观看| 国产精品久久久久久久岛一牛影视 | 成人美女视频在线观看| 亚洲h动漫在线| 国产精品欧美经典| 日韩视频一区二区三区在线播放| 国产精品66部| 麻豆国产精品官网| 国产精品卡一卡二| 欧美大片在线观看| 欧美日韩高清一区二区| 色婷婷国产精品| 国产91高潮流白浆在线麻豆 | 亚洲mv在线观看| 国产精品不卡在线| 日本一二三不卡| 日韩小视频在线观看专区| 欧美日韩一二三| 97se亚洲国产综合自在线不卡 | 国产精品久久久久久久久久久免费看| 精品电影一区二区| 日韩一级在线观看| 91精品国产日韩91久久久久久| 在线观看国产日韩| 欧美伊人精品成人久久综合97| 欧美色涩在线第一页| 欧美曰成人黄网| 欧洲精品在线观看| 欧美在线影院一区二区| 一本大道久久a久久精品综合| 99久久99久久精品国产片果冻| 波多野结衣中文一区| 成人高清av在线| 成人午夜看片网址| 99久精品国产| 色视频成人在线观看免| 91福利社在线观看| 欧美日韩精品系列| 8x8x8国产精品| 欧美本精品男人aⅴ天堂| 精品国产乱码久久久久久闺蜜| 久久精品人人做人人综合| 中文字幕成人av| 亚洲欧洲日产国产综合网| 亚洲日本va在线观看| 亚洲综合区在线| 午夜激情一区二区| 国内外成人在线| 成人综合在线视频| 欧美主播一区二区三区美女| 欧美一级理论片| 久久精品欧美日韩精品| 一区二区三区在线影院| 日本视频在线一区| 国产.欧美.日韩| 欧美日韩综合在线免费观看| 欧美www视频| 国产视频视频一区| 一区二区高清免费观看影视大全 | 91麻豆精品国产自产在线观看一区 | 欧美视频在线一区二区三区| 欧洲精品在线观看| 欧美大肚乱孕交hd孕妇| 亚洲视频每日更新| 日本成人超碰在线观看| 国产一区日韩二区欧美三区| 成人免费观看av| 欧美日韩一区二区欧美激情| 欧美一区二区三区啪啪| 亚洲日本丝袜连裤袜办公室| 久久99久国产精品黄毛片色诱| 成人av免费在线播放| 日韩视频一区二区在线观看| 亚洲另类春色校园小说|