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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? cache_macros.h

?? 在ADI的TS系列DSP上編寫(xiě)的32位定點(diǎn)FIR濾波器的程序
?? H
字號(hào):
/******************************************************************
-PetreM
-rev1.2, 4/20/2004

-PPG
- 01/30/2004 - updated file to include workaround for silicon errata 03-00-0216
- 03-00-0216 : SQSTAT should be read twice sequentially to ensure correct value.

-PM - due to slicon anomalies, CCAIR and CACMD registers are now loaded using j0
-PM - added macros to compute cycle counts in all pr1:0 registers
*******************************************************************
-this file contains the following macros:

-cache_enable(refresh_rate):
  -it sets a new refresh rate
  -if the cache is enabled, it leaves it enabled.
  -if the cache is not enabled, it enables it in the right way
  -at the end enables the BTB if it was not already enabled
  -this macro should be used as the first line of code in every program

-ini_linear_addressing
  -it writes 0 to all il and kl registers, i.e. sets linear addressing
  -I would use it as the second line of program

-ini_cycle_count and comp_cycle_count:
  -measure the cycles spent between these 2 macros
  -save the result at cycle_count location
  -cycle_count must be declared as a variable in the memory

-comp_program_memory
  -it computes how many 32bit words of code are between
    Benchmark and Benchmark.end labels and saves the result at pm_count
  -pm_count must be declared as a variable

-ini_cycle_count_multiple and comp_cycle_count_multiple
  -measure the cycles spent between these 2 macros, but this time
    saves the results at successive locations in memory
    beginning with cycle_count
  -useful to measure the cycle count of each iteration of
    a loop, for example
-ini_cycle_count_xpr0 and comp_cycle_count_xpr0
  -these macros compute the cycle count as ini_cycle_count and
    comp_cycle_count
  -the difference is the result is saved in xpr0
  -to use these macros, never use xpr0 in your program
  -have the advantage that the cache is not used at all
*******************************************************************/
/*****************************************************
-the execution of the cache commands is finished when
the bit 16 of the corresponding status registers is 0
-the macro wait_cache waits until the cache command
has finished the execution
-the 5 nops introduced at the end of the macro keep
the pipeline clean of eventual cache commands. These
cache commands may stall the processor when executed
before one cache command is ended
*/
#define wait_cache(CASTAT)                          \
.align_code 4;                                      \
_chk_castat?:                                       \
    xr0 = CASTAT;;                                  \
    xbitest r0 by CASTAT_COM_ACTIVE_P;;             \
.align_code 4;                                      \
    if nxseq, jump _chk_castat? (NP);nop;nop;nop;;  \
    nop;;nop;;nop;;nop;;nop;
/*****************************************************
-the macro test_cache_enabled tests the bit14 of the
cache status registers. If this bit is 1, the cache is enabled
and PC jumps to the following tasks. Otherwise,
the cache must be invalidated and then enabled
*/
#define test_cache_enabled(CASTAT, jump_label)\
  xr0 = CASTAT;;                              \
  xbitest r0 by CASTAT_ENBL_P;;               \
  if nxseq, jump jump_label (NP);;             \
	nop;;nop;;nop;;nop;;nop;
/*****************************************************
-the macro invalidate invalidates the cache. To enable
the cache, it must be first invalidated. This operation
basically cleans the cache.
*/
#define invalidate(CCAIR, CACMD, CASTAT)            \
  j0 =  j31 + 0;;								                    \
  CCAIR = j0;;  									                  \
  j0 = j31 + CACMD_INV |                            \
             (127 << CACMD_LEN_P) |                 \
              CACMD_NOSTALL;;                       \
  CACMD = j0;;                                      \
.align_code 4;                                      \
_chk_castat_inv?:                                   \
    xr0 = CASTAT;;                                  \
    xbitest r0 by CASTAT_COM_ACTIVE_P;;             \
.align_code 4;                                      \
    if nxseq, jump _chk_castat_inv? (NP);nop;nop;nop;;\
	nop;;nop;;nop;;nop;;nop;

/*****************************************************
-the macro cache_enable executes the following operations:
  -sets a new refresh rate
      -if CCLK=500MHz, refresh_rate=750
      -if CCLK=400MHz, refresh_rate=600
      -if CCLK=300MHz, refresh_rate=450
      -if CCLK=250MHz, refresh_rate=375
  -tests if each cache is already enabled or not. If it
is disabled, invalidate and then enable it. If it is enabled,
don't touch it and jump to the next step.
  -tests if BTB is already enabled. If not, enable the BTB
-as one may observe, after each cache command 5 nops
(i.e. 5 CCLK cycles) are introduced. This is to keep
the pipeline clean of eventual cache commands. These
cache commands may stall the processor when executed
before one cache command is ended
-it should be executed immediately after reset.
-It has not been designed to be used in the
middle of the code or in a project that uses overlays
*/
#define cache_enable(refresh_rate)        \
.align_code 4;                            \
  j0 = j31 + CACMD_REFRESH | refresh_rate;; \
  CACMDALL= j0;;                            \
    wait_cache(CASTAT0);                    \
    wait_cache(CASTAT2);                    \
    wait_cache(CASTAT4);                    \
    wait_cache(CASTAT6);                    \
    wait_cache(CASTAT8);                    \
    wait_cache(CASTAT10);                          \
  test_cache_enabled(CASTAT0, test_cache2);        \
          invalidate(CCAIR0, CACMD0, CASTAT0);     \
          j0 = j31 + CACMD_EN;;                    \
          CACMD0 = j0;;                            \
          nop;;nop;;nop;;nop;;nop;;                \
          wait_cache(CASTAT0);                     \
test_cache2:                                       \
  test_cache_enabled(CASTAT2, test_cache4);        \
          invalidate(CCAIR2, CACMD2, CASTAT2);     \
          j0 = j31 + CACMD_EN;;                    \
          CACMD2 = j0;;                            \
          nop;;nop;;nop;;nop;;nop;;                \
          wait_cache(CASTAT2);                     \
test_cache4:                                       \
  test_cache_enabled(CASTAT4, test_cache6);        \
          invalidate(CCAIR4, CACMD4, CASTAT4);     \
          j0 = j31 + CACMD_EN;;                    \
          CACMD4 = j0;;                            \
          nop;;nop;;nop;;nop;;nop;;                \
          wait_cache(CASTAT4);                     \
test_cache6:                                       \
  test_cache_enabled(CASTAT6, test_cache8);        \
          invalidate(CCAIR6, CACMD6, CASTAT6);     \
          j0 = j31 + CACMD_EN;;                    \
          CACMD6 = j0;;                            \
          nop;;nop;;nop;;nop;;nop;;                \
          wait_cache(CASTAT6);                     \
test_cache8:                                       \
  test_cache_enabled(CASTAT8, test_cache10);       \
          invalidate(CCAIR8, CACMD8, CASTAT8);     \
          j0 = j31 + CACMD_EN;;                    \
          CACMD8 = j0;;                            \
          nop;;nop;;nop;;nop;;nop;;                \
          wait_cache(CASTAT8);                     \
test_cache10:                                      \
  test_cache_enabled(CASTAT10, test_BTB);          \
          invalidate(CCAIR10,CACMD10,CASTAT10);    \
          j0 = j31 + CACMD_EN;;                    \
          CACMD10 = j0;;                           \
          nop;;nop;;nop;;nop;;nop;;                \
          wait_cache(CASTAT10);                    \
test_BTB:                                          \
.align_code 4;                                     \
	XR0 = SQSTAT;;                                   \
	XR0 = SQSTAT;;                                   \
	XBITEST R0 BY SQSTAT_BTBEN_P;;                   \
	IF NXSEQ, JUMP BTB_already_enabled (NP);;        \
    nop;;nop;;nop;;nop;;nop;;                      \
  BTBEN;;                                          \
.align_code 4;                                     \
BTB_already_enabled:                               \
   nop;


//this macro initializes the cycle counter of the benchmark
#define ini_cycle_count \
  xr0 = CCNT0;; \
  xr1 = 0x5;; \
  xr0 = r0 + r1;; \
  [j31 + cycle_count] = xr0;

//this macro computes the benchmark cycle count
#define comp_cycle_count \
  xr1 = CCNT0;; \
  xr0 =  [j31 + cycle_count];; \
  xr0 = r1 - r0;; \
  [j31 + cycle_count] = xr0;

//this macro computes the program memory occupied by the benchmark
#define comp_program_memory \
  xr1 = Benchmark;; \
  xr0 = Benchmark.end;; \
  xr0 = r0 - r1;; \
  [j31 + pm_count] = xr0;

//this macro writes 0 in all the length registers, so setting all
//address generators in linear addressing mode
#define ini_linear_addressing  \
  jl0=j31+0;;   kl0=k31+0;; \
  jl1=j31+0;;   kl1=k31+0;;  \
  jl2=j31+0;;   kl2=k31+0;; \
  jl3=j31+0;;   kl3=k31+0;

//this macro initializes the cycle counter of the benchmark when
//more counts must be saved into memory
//j30 must be previously initialized at cycle_count
//and cycle_count should be set as a buffer
#define ini_cycle_count_multiple \
  xr0 = CCNT0;; \
  xr1 = 0x5;; \
  xr0 = r0 + r1;; \
  [j30+0] = xr0;

//this macro computes the benchmark cycle count and
//saved the result at j30
#define comp_cycle_count_multiple \
  xr1 = CCNT0;; \
  xr0 =  [j30 + 0];; \
  xr0 = r1 - r0;; \
  [j30+=1] = xr0;

//this macro initializes the cycle counter of the benchmark
#define ini_cycle_count_xpr0 \
  xr1:0 = pr1:0;;            \
  xr0 = CCNT0;;              \
  xr2 = 0x6;;                \
  nop;;                      \
  xr0 = r0 + r2;;            \
  nop;;                      \
  xpr1:0 = r1:0;             \

//this macro computes the benchmark cycle count
#define comp_cycle_count_xpr0 \
  xr2 = CCNT0;;               \
  xr1:0 =  pr1:0;;            \
  xr0 = r2 - r0;;             \
  xpr1:0 = r1:0;              \

//this macro initializes the cycle counter of the benchmark
#define ini_cycle_count_xpr1 \
  xr1:0 = pr1:0;;            \
  xr1 = CCNT0;;              \
  xr2 = 0x6;;                \
  nop;;                      \
  xr1 = r1 + r2;;            \
  nop;;                      \
  xpr1:0 = r1:0;             \

//this macro computes the benchmark cycle count
#define comp_cycle_count_xpr1 \
  xr2 = CCNT0;;               \
  xr1:0 =  pr1:0;;            \
  xr1 = r2 - r1;;             \
  xpr1:0 = r1:0;              \


//this macro initializes the cycle counter of the benchmark
#define ini_cycle_count_ypr0 \
  yr1:0 = pr1:0;;            \
  yr0 = CCNT0;;              \
  yr2 = 0x6;;                \
  nop;;                      \
  yr0 = r0 + r2;;            \
  nop;;                      \
  ypr1:0 = r1:0;             \

//this macro computes the benchmark cycle count
#define comp_cycle_count_ypr0 \
  yr2 = CCNT0;;               \
  yr1:0 =  pr1:0;;            \
  yr0 = r2 - r0;;             \
  ypr1:0 = r1:0;              \

//this macro initializes the cycle counter of the benchmark
#define ini_cycle_count_ypr1 \
  yr1:0 = pr1:0;;            \
  yr1 = CCNT0;;              \
  yr2 = 0x6;;                \
  nop;;                      \
  yr1 = r1 + r2;;            \
  nop;;                      \
  ypr1:0 = r1:0;             \

//this macro computes the benchmark cycle count
#define comp_cycle_count_ypr1 \
  yr2 = CCNT0;;               \
  yr1:0 =  pr1:0;;            \
  yr1 = r2 - r1;;             \
  ypr1:0 = r1:0;              \





?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
2024国产精品| 国产精品一二三四| 成人听书哪个软件好| 日韩一级免费观看| 久久97超碰色| 中文字幕av资源一区| av网站免费线看精品| 亚洲伦在线观看| 成人动漫精品一区二区| 亚洲成人免费视频| 欧美国产日韩精品免费观看| 久久一区二区三区四区| 国产精品网站在线| 欧美一级二级在线观看| 欧美成人精品福利| 色中色一区二区| 美女网站色91| 亚洲精选一二三| 亚洲电影在线免费观看| 国产色婷婷亚洲99精品小说| 欧美在线观看一二区| 久久精品国产在热久久| 午夜精品久久久久影视| 亚洲欧美日本韩国| 免费观看在线综合| 一区二区免费看| 亚洲靠逼com| 麻豆91精品91久久久的内涵| 国产乱子轮精品视频| 奇米精品一区二区三区在线观看| 精品一区二区三区香蕉蜜桃| 粉嫩绯色av一区二区在线观看| 麻豆成人av在线| av网站一区二区三区| 日韩女优视频免费观看| 91精品国产欧美一区二区成人| 欧美在线不卡视频| 久久久99免费| 久久一区二区视频| 亚洲午夜在线观看视频在线| 国产精品一区在线观看乱码| 欧美调教femdomvk| 日本丰满少妇一区二区三区| 91在线码无精品| 欧美在线观看视频一区二区| 久久久亚洲综合| 视频一区二区三区中文字幕| 亚洲成人在线免费| 91在线云播放| 久久久久久一级片| 免费人成黄页网站在线一区二区| 99久久精品免费观看| 久久嫩草精品久久久精品一| 亚洲成人免费视频| 色狠狠桃花综合| 欧美国产1区2区| 久久99精品国产.久久久久久| 日本韩国欧美三级| 中文字幕中文在线不卡住| 国产精品高潮呻吟| 国产美女精品人人做人人爽| 欧美精三区欧美精三区| 777久久久精品| 精品黑人一区二区三区久久| 久久女同精品一区二区| 奇米一区二区三区| 91麻豆精品国产91久久久更新时间| 国产精品盗摄一区二区三区| 国产精品一二三区在线| 久久婷婷色综合| 国产剧情一区二区| 久久伊人蜜桃av一区二区| 国产一区免费电影| 欧美精品一区二区在线播放| 久草热8精品视频在线观看| 欧美一区二区三区视频在线| 图片区小说区区亚洲影院| 欧美日韩五月天| 久久久久免费观看| 国产一区二区伦理| 国产日韩欧美激情| 午夜免费欧美电影| 欧美在线视频全部完| 一区二区三区中文在线观看| 成人丝袜视频网| 亚洲免费av在线| 欧美日韩一区在线| 日韩av在线发布| 91在线高清观看| 精品国精品国产| 国产传媒久久文化传媒| 欧美撒尿777hd撒尿| 亚洲一区视频在线| 成人18视频在线播放| 亚洲婷婷综合色高清在线| 精品一区在线看| 国产日本欧美一区二区| 成人一区二区三区| 亚洲精品国产第一综合99久久 | 精品国产免费久久| 国产一区二区三区观看| 国产精品久久久久三级| 欧美亚洲高清一区二区三区不卡| 偷窥少妇高潮呻吟av久久免费| 日韩一二三区不卡| 国产福利91精品| 亚洲一区自拍偷拍| 亚洲精品一区二区三区四区高清| 成人污视频在线观看| 婷婷六月综合网| 国产欧美综合在线| 欧美日韩一区二区在线视频| 老司机一区二区| 亚洲视频一区在线观看| 欧美一区二区三区免费视频| 国产精品88888| 亚洲成a人片在线观看中文| 久久天堂av综合合色蜜桃网| 在线欧美小视频| 国产高清不卡二三区| 亚洲一区二区欧美日韩| 国产欧美精品区一区二区三区| 欧美伊人久久久久久午夜久久久久| 蜜臀va亚洲va欧美va天堂| 亚洲色图.com| 精品国产91洋老外米糕| 欧亚一区二区三区| 成人少妇影院yyyy| 日韩**一区毛片| 一区二区三区免费看视频| 久久精品人人爽人人爽| 欧美精品乱码久久久久久按摩| 波多野结衣中文字幕一区二区三区| 日韩精品一二三四| 亚洲精品视频免费看| 国产亚洲综合性久久久影院| 欧美一区二区久久| 欧美亚洲愉拍一区二区| av一二三不卡影片| 国产成人精品一区二 | 69堂成人精品免费视频| 色狠狠综合天天综合综合| 成人国产精品免费| 国产高清亚洲一区| 国产一区二区三区高清播放| 麻豆国产欧美日韩综合精品二区 | 美女在线观看视频一区二区| 亚洲一区二区三区四区的| 亚洲美女免费视频| 综合在线观看色| 中文字幕一区二区不卡| 欧美在线free| 在线观看欧美黄色| 91国产视频在线观看| 91麻豆免费看片| 91丨porny丨在线| 色综合 综合色| 欧美日韩国产精品成人| 国产九色sp调教91| 狠狠久久亚洲欧美| 亚洲国产精品天堂| 日韩精彩视频在线观看| 青青草97国产精品免费观看 | 一本大道av伊人久久综合| 99精品欧美一区二区蜜桃免费| 99久久精品免费观看| 在线视频国内自拍亚洲视频| 色欧美日韩亚洲| 欧美视频中文一区二区三区在线观看| 欧美曰成人黄网| 日韩美女在线视频| 精品国产一区二区精华| 国产日韩精品一区二区浪潮av| 日本一区二区三区免费乱视频| 中文字幕乱码久久午夜不卡| 亚洲欧洲无码一区二区三区| 椎名由奈av一区二区三区| 亚洲影院在线观看| 麻豆视频观看网址久久| 国产精品一区一区三区| 99久久久精品| 日韩一本二本av| 国产精品国产馆在线真实露脸 | 亚洲国产综合人成综合网站| 日欧美一区二区| 国产成人日日夜夜| 欧洲av在线精品| 精品国一区二区三区| 亚洲情趣在线观看| 蜜臀av国产精品久久久久| 风间由美中文字幕在线看视频国产欧美| 北条麻妃国产九九精品视频| 欧美日韩激情一区| 久久久久久久av麻豆果冻| 亚洲成人午夜电影| 成人毛片视频在线观看| 欧美久久久一区| 中文字幕日本不卡| 狠狠色狠狠色合久久伊人| 色狠狠综合天天综合综合|