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

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

?? cache_macros.h

?? 這是我在ADSP tiger sharc 201上面實現的OFDM(標準是wimax)同步算法哦!具有非常高的指令效率.
?? H
字號:
/******************************************************************
-PetreM
-rev1.1, 2/12/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
*******************************************************************
-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;              \






?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
另类的小说在线视频另类成人小视频在线| 欧美日韩精品欧美日韩精品一| 成av人片一区二区| 在线综合亚洲欧美在线视频| 国产欧美日本一区二区三区| 亚洲成av人在线观看| av亚洲产国偷v产偷v自拍| 日韩欧美国产系列| 亚洲国产日日夜夜| 91女人视频在线观看| 欧美精品一区二区三区四区| 亚洲小说春色综合另类电影| www.日韩大片| 国产网站一区二区三区| 精品一区二区三区免费毛片爱| 在线亚洲人成电影网站色www| 久久五月婷婷丁香社区| 日韩高清不卡一区二区| 欧洲一区在线观看| 自拍偷拍亚洲激情| 国产成人自拍网| 26uuu国产日韩综合| 蜜桃av一区二区在线观看| 欧美日韩精品一区二区三区| 亚洲午夜av在线| 91久久精品一区二区二区| 国产精品福利一区| 国产91精品一区二区| 国产日韩一级二级三级| 国产成人精品aa毛片| 国产三级精品三级在线专区| 国产精品77777| 国产日韩视频一区二区三区| 国产成人午夜高潮毛片| 国产精品人成在线观看免费| 成人精品视频一区| 综合久久久久久| 色欧美88888久久久久久影院| 亚洲精品国产a久久久久久| 色婷婷精品大在线视频| 一级日本不卡的影视| 欧美性受xxxx| 奇米影视在线99精品| 精品国产一区二区亚洲人成毛片| 奇米影视一区二区三区小说| 久久综合九色综合欧美98| 国产99久久久国产精品免费看| 国产欧美精品在线观看| 99国产精品一区| 午夜电影网亚洲视频| 日韩欧美视频一区| 成人午夜视频在线观看| 一区二区三区中文字幕在线观看| 欧美日韩一区二区三区四区| 美脚の诱脚舐め脚责91 | 国产专区欧美精品| 久久久久久久久久久久电影| 97超碰欧美中文字幕| 亚洲国产成人91porn| 精品成人免费观看| 91黄色免费网站| 久久精品国产一区二区| 国产精品人人做人人爽人人添| 91成人免费在线视频| 久久99精品久久久久| 亚洲特黄一级片| 日韩欧美不卡一区| eeuss鲁片一区二区三区| 亚洲成人免费看| 欧美激情在线看| 在线不卡中文字幕播放| 高清视频一区二区| 美女www一区二区| 亚洲欧美一区二区不卡| 日韩一级完整毛片| 91久久久免费一区二区| 国产另类ts人妖一区二区| 亚洲国产精品久久一线不卡| 久久久.com| 6080yy午夜一二三区久久| 99视频精品免费视频| 精品一区免费av| 一区二区高清视频在线观看| 欧美精品一区二区三区蜜桃| 欧美影院一区二区三区| 成人av动漫网站| 狠狠久久亚洲欧美| 天堂久久一区二区三区| 1000精品久久久久久久久| 亚洲精品在线观看网站| 91精品久久久久久久久99蜜臂| 91免费视频网址| eeuss鲁一区二区三区| 国产一区二区中文字幕| 日本欧美肥老太交大片| 亚洲国产精品影院| 亚洲精品一二三区| 国产精品视频在线看| 国产亚洲成aⅴ人片在线观看 | 在线视频亚洲一区| 99精品欧美一区二区蜜桃免费 | 国产精品免费观看视频| 久久人人爽爽爽人久久久| 91精品国产综合久久精品性色| 91亚洲精华国产精华精华液| 国产a区久久久| 成人性生交大片免费看视频在线| 狠狠色丁香婷婷综合久久片| 精品夜夜嗨av一区二区三区| 日韩精品一二三四| 日本色综合中文字幕| 日本不卡的三区四区五区| 日韩国产精品久久久久久亚洲| 夜夜夜精品看看| 一区二区三区在线观看网站| 一片黄亚洲嫩模| 亚洲.国产.中文慕字在线| 亚洲国产精品一区二区久久| 一区二区三区资源| 亚洲va在线va天堂| 日韩精品久久久久久| 美女一区二区三区| 国产一区二区三区最好精华液| 国产一区二区三区日韩| 国产精品一区在线观看你懂的| 国产乱码一区二区三区| 成人午夜伦理影院| 91视视频在线观看入口直接观看www| 9i在线看片成人免费| 一本色道久久综合狠狠躁的推荐| 在线观看区一区二| 日韩你懂的在线播放| 国产片一区二区| 亚洲欧美视频在线观看| 亚洲国产欧美在线| 青青草成人在线观看| 高清在线不卡av| 欧美在线色视频| 欧美一级免费观看| 国产日韩欧美精品一区| 亚洲精品视频在线观看网站| 日韩综合一区二区| 国产精品影视在线观看| 99在线精品观看| 日韩欧美在线影院| 国产精品美日韩| 免费人成精品欧美精品| 成人午夜视频免费看| 制服丝袜av成人在线看| 国产人成亚洲第一网站在线播放| 亚洲综合在线电影| 精品一区免费av| 欧美性色黄大片| 国产精品人妖ts系列视频| 丝瓜av网站精品一区二区| 成人综合婷婷国产精品久久免费| 91激情五月电影| 久久亚洲综合色一区二区三区| 亚洲天堂a在线| 国产一区啦啦啦在线观看| 91精品福利视频| 久久精品一区八戒影视| 视频在线在亚洲| jlzzjlzz欧美大全| 精品三级在线看| 亚洲亚洲精品在线观看| 不卡一区二区在线| 精品免费视频.| 婷婷中文字幕综合| 99riav久久精品riav| 2024国产精品视频| 日韩精品电影一区亚洲| 99综合电影在线视频| 国产三级精品三级| 精品亚洲欧美一区| 日韩写真欧美这视频| 亚洲与欧洲av电影| 91视频一区二区| 亚洲国产精品t66y| 国产精品一区二区久激情瑜伽| 91精品黄色片免费大全| 一区av在线播放| 日本福利一区二区| 亚洲男帅同性gay1069| 不卡视频在线看| 中文一区在线播放| 国产91富婆露脸刺激对白| 久久麻豆一区二区| 国产一区二区精品久久| 日韩午夜电影av| 日本特黄久久久高潮| 7777精品久久久大香线蕉| 亚洲一级二级在线| 色综合网色综合| 亚洲精品欧美激情| 91福利视频久久久久| 亚洲精品日韩一| 欧美性受xxxx| 日韩有码一区二区三区| 91精品免费观看|