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

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

?? csl_dat_.sa

?? Ti C6416 環境下
?? SA
?? 第 1 頁 / 共 3 頁
字號:
               ;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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品亚洲porn| 丝袜脚交一区二区| 日韩精品在线一区二区| 欧美人妖巨大在线| 欧美美女一区二区三区| 欧美午夜电影网| 91福利视频在线| 91精品婷婷国产综合久久| 欧美区一区二区三区| www成人在线观看| 精品国产乱子伦一区| 久久午夜老司机| 亚洲国产精品传媒在线观看| 亚洲国产精品99久久久久久久久| 日本一区二区成人在线| 日韩美女啊v在线免费观看| 亚洲美女精品一区| 日av在线不卡| 成人动漫中文字幕| 欧美色老头old∨ideo| 欧美一级高清大全免费观看| 欧美精品一区二区三区四区| 中文字幕日本乱码精品影院| 一区二区三区欧美久久| 蜜桃av噜噜一区二区三区小说| 久久国产婷婷国产香蕉| 国产成人免费视频网站| 在线观看日韩高清av| 日韩午夜电影av| 亚洲欧美日韩中文播放| 免费成人在线观看视频| 国产精品萝li| 热久久久久久久| 91免费版在线看| 欧美一级生活片| 亚洲欧美日韩综合aⅴ视频| 麻豆精品国产传媒mv男同| av电影天堂一区二区在线观看| 欧美日韩国产电影| 国产精品国产馆在线真实露脸| 日韩av一区二| 91在线观看免费视频| 精品成人私密视频| 天天综合网天天综合色| 91香蕉视频mp4| 国产喷白浆一区二区三区| 免费观看久久久4p| 91福利在线看| 亚洲人成精品久久久久| 国产中文字幕精品| 91麻豆精品国产自产在线| 亚洲欧洲精品一区二区精品久久久| 精品在线观看免费| 欧美精品v日韩精品v韩国精品v| 中文字幕一区二区三区蜜月| 国内欧美视频一区二区 | 一级做a爱片久久| 国产成+人+日韩+欧美+亚洲| 日韩一二三区视频| 日韩av一区二区三区四区| 欧美日韩免费观看一区三区| 亚洲精品国产无天堂网2021| 99精品黄色片免费大全| 国产精品电影一区二区三区| 国产69精品久久久久毛片 | 在线亚洲高清视频| 亚洲视频小说图片| 91女厕偷拍女厕偷拍高清| 中国av一区二区三区| 风间由美一区二区三区在线观看 | 午夜av电影一区| 欧美日本国产视频| 日韩vs国产vs欧美| 日韩亚洲欧美在线| 久久91精品久久久久久秒播| 日韩精品资源二区在线| 美女视频黄免费的久久| 欧美一级艳片视频免费观看| 久久精品国产在热久久| 精品国产乱码久久久久久老虎 | jlzzjlzz国产精品久久| 国产精品乱码人人做人人爱| 成人激情动漫在线观看| 亚洲欧洲av在线| 欧美日韩精品三区| 蜜桃视频在线一区| 国产欧美日韩在线观看| 91免费看`日韩一区二区| 亚洲综合视频网| 日韩欧美电影在线| 国产盗摄精品一区二区三区在线| 中文字幕乱码久久午夜不卡| 色狠狠综合天天综合综合| 亚洲成人久久影院| 精品国内二区三区| caoporen国产精品视频| 亚洲成人免费视| 久久久精品黄色| 91精品福利在线| 青青草国产精品亚洲专区无| 国产色产综合产在线视频| 91在线观看视频| 免费成人在线观看| 亚洲色图欧美在线| 日韩欧美一区二区久久婷婷| 成人午夜电影久久影院| 一区二区日韩av| 久久久久久一级片| 欧美疯狂做受xxxx富婆| 国产盗摄精品一区二区三区在线| 亚洲综合在线免费观看| 精品va天堂亚洲国产| 在线观看亚洲专区| 成人性视频免费网站| 午夜视频在线观看一区二区三区| 国产网红主播福利一区二区| 欧美日韩精品欧美日韩精品| 丁香激情综合国产| 日韩电影在线看| 亚洲男女一区二区三区| 精品播放一区二区| 欧美蜜桃一区二区三区| 93久久精品日日躁夜夜躁欧美| 激情五月激情综合网| 亚洲国产另类精品专区| 国产精品久久久久久久久久久免费看 | 久久精品一区二区三区不卡| 欧美视频完全免费看| 不卡一区二区在线| 国产麻豆午夜三级精品| 日韩不卡免费视频| 午夜欧美电影在线观看| 亚洲综合一二区| 亚洲精品视频在线观看网站| 国产欧美日韩另类一区| 久久婷婷久久一区二区三区| 欧美精品日韩综合在线| 欧美最猛黑人xxxxx猛交| aaa国产一区| av动漫一区二区| caoporen国产精品视频| heyzo一本久久综合| eeuss鲁片一区二区三区| 成人avav影音| 91亚洲资源网| 色天天综合色天天久久| 91成人看片片| 欧美在线免费播放| 欧美三级日韩三级国产三级| 在线欧美小视频| 欧美亚洲一区二区三区四区| 日本国产一区二区| 91黄色免费观看| 欧美日韩综合在线| 欧美巨大另类极品videosbest | 国产三级一区二区三区| 久久综合色鬼综合色| 精品日韩在线一区| 久久久蜜臀国产一区二区| 久久久精品国产免费观看同学| 2014亚洲片线观看视频免费| 久久久九九九九| 亚洲青青青在线视频| 亚洲一区二区在线观看视频| 天堂蜜桃91精品| 国产麻豆精品视频| 不卡视频在线看| 欧美日韩在线播放一区| 91精品国产高清一区二区三区蜜臀| 日韩西西人体444www| 国产无一区二区| 亚洲欧美日韩在线不卡| 日韩成人一级片| 久久激情五月婷婷| 成人的网站免费观看| 欧美三级欧美一级| 欧美电影免费观看高清完整版在线 | 国产一区二区三区在线观看免费视频 | 亚洲精选在线视频| 日韩av电影天堂| 高清shemale亚洲人妖| 欧美性生活大片视频| 精品日韩av一区二区| 亚洲欧美一区二区视频| 日韩精品一级二级| 成人av在线看| 91精选在线观看| 亚洲色图清纯唯美| 国模冰冰炮一区二区| 91搞黄在线观看| 国产日本亚洲高清| 天天综合色天天综合| 成人av动漫网站| 精品对白一区国产伦| 亚洲国产成人高清精品| 成人av资源网站| 26uuu精品一区二区| 亚洲成av人影院在线观看网| 国产不卡视频在线观看| 在线电影院国产精品|