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

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

?? cache_macros.h

?? 是一個TS201的源代碼
?? H
字號:
/******************************************************************
-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;              \





?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩一区二区免费高清| 欧美日韩免费一区二区三区视频 | 丁香一区二区三区| 国产一区二区三区电影在线观看| 日韩精品免费视频人成| 奇米四色…亚洲| 久久精品99国产精品| 亚洲色图制服诱惑 | 国产成人亚洲综合a∨婷婷图片| 日本不卡视频一二三区| 久久国产生活片100| 精品在线观看视频| 国产黄色91视频| 一本色道久久综合亚洲aⅴ蜜桃 | 久久精品国产成人一区二区三区 | 久久久久国产精品麻豆ai换脸| 欧美国产激情一区二区三区蜜月 | 在线观看91av| 亚洲精品一线二线三线| 国产精品国产三级国产a | 久久99精品久久久| 成人av资源下载| 欧美人伦禁忌dvd放荡欲情| 91精品国产综合久久福利| 国产亚洲欧美激情| 亚洲天堂中文字幕| 五月综合激情网| 国产一区二区看久久| 99精品国产99久久久久久白柏| 欧美怡红院视频| 国产欧美一区二区精品久导航| 亚洲美女视频在线| 激情欧美日韩一区二区| 91一区二区在线| 精品国产乱码久久久久久图片 | 亚洲亚洲人成综合网络| 精品一区二区三区免费观看 | 另类专区欧美蜜桃臀第一页| 成人av动漫网站| 欧美r级在线观看| 亚洲精品中文在线| 国产精品影音先锋| 91精品黄色片免费大全| **性色生活片久久毛片| 久久99精品久久久久久| 欧美日韩免费不卡视频一区二区三区| 久久综合久久综合九色| 天天射综合影视| 色哟哟在线观看一区二区三区| 久久品道一品道久久精品| 香蕉成人伊视频在线观看| 91色视频在线| 国产精品日韩精品欧美在线| 美女一区二区三区在线观看| 欧美日韩色综合| 亚洲一区二区三区在线看| 国产99精品国产| 精品国产不卡一区二区三区| 视频一区二区中文字幕| 在线中文字幕不卡| 一区二区三区四区在线播放| 99视频在线精品| 中文字幕一区二区三区不卡| 国产成人在线色| 国产免费成人在线视频| 国产精品一区二区91| 精品国产麻豆免费人成网站| 日韩av在线发布| 欧美一级欧美一级在线播放| 视频一区二区三区中文字幕| 6080午夜不卡| 美腿丝袜亚洲色图| 精品久久国产老人久久综合| 激情国产一区二区| 国产女同互慰高潮91漫画| 国产一区二区影院| 国产欧美一区二区精品婷婷| 成人精品亚洲人成在线| 中文字幕在线播放不卡一区| 色综合久久中文字幕| 亚洲午夜一区二区| 91麻豆精品国产无毒不卡在线观看| 日韩精品免费视频人成| 欧美一区永久视频免费观看| 久久精品国产99| 日本一区二区三区高清不卡| 欧美亚洲禁片免费| 免费人成精品欧美精品| 精品福利一二区| 成人黄色小视频| 亚洲国产成人tv| 欧美mv日韩mv国产网站| 成人丝袜视频网| 亚洲一区二区三区四区五区中文 | 中文字幕av一区二区三区高 | 午夜精品福利在线| 精品国产精品网麻豆系列| 国产91精品露脸国语对白| 亚洲另类在线制服丝袜| 91精品久久久久久蜜臀| 国产成人精品一区二区三区四区| 亚洲精品中文在线| 精品久久一区二区三区| 色婷婷综合久久| 久久99热狠狠色一区二区| 国产欧美精品一区二区三区四区| 91视频国产观看| 九九视频精品免费| 亚洲精品日产精品乱码不卡| 欧美zozozo| 色综合色狠狠天天综合色| 久久99精品久久久| 亚洲精品乱码久久久久久久久 | 99久久99久久综合| 青青草伊人久久| 一区二区三区欧美视频| 国产校园另类小说区| 欧美电影一区二区三区| 91在线观看一区二区| 国产在线播放一区三区四| 亚洲精品成人天堂一二三| 久久久久久久久久久电影| 欧美精品一二三| 在线观看欧美日本| 成人一区二区三区在线观看| 美女一区二区久久| 午夜电影一区二区三区| 亚洲美女屁股眼交3| 国产精品麻豆欧美日韩ww| 日韩一级欧美一级| 在线播放视频一区| 欧美在线看片a免费观看| 99久久精品国产精品久久| 国产.欧美.日韩| 国产在线国偷精品免费看| 美腿丝袜亚洲一区| 免费观看一级特黄欧美大片| 午夜亚洲国产au精品一区二区 | 欧美精品v国产精品v日韩精品| av爱爱亚洲一区| aa级大片欧美| 成人18精品视频| 成人精品国产福利| 懂色av一区二区夜夜嗨| 国产v综合v亚洲欧| 成人综合在线网站| 成人黄色一级视频| a美女胸又www黄视频久久| 波多野结衣亚洲| 波多野结衣中文一区| va亚洲va日韩不卡在线观看| 成人性视频免费网站| 成人久久视频在线观看| www.av亚洲| 欧美亚日韩国产aⅴ精品中极品| 欧美在线视频全部完| 欧美日韩情趣电影| 亚洲三级电影全部在线观看高清| 成人欧美一区二区三区小说| 亚洲人成在线播放网站岛国| 亚洲视频电影在线| 亚洲第一在线综合网站| 日韩中文字幕区一区有砖一区| 天天射综合影视| 国产又黄又大久久| 不卡电影一区二区三区| 在线免费视频一区二区| 91精品国产入口在线| 26uuu国产一区二区三区| 日本一区二区三区在线不卡| 亚洲视频 欧洲视频| 婷婷开心激情综合| 国产成人99久久亚洲综合精品| 91丨porny丨在线| 51精品秘密在线观看| 国产欧美一区二区精品久导航 | 成人精品国产免费网站| 91福利小视频| 久久综合九色综合欧美亚洲| 国产精品久久久久久久久久免费看 | 久久奇米777| 亚洲午夜久久久久久久久电影网| 日本中文字幕一区| av一区二区久久| 91精品国产综合久久蜜臀| 精品免费日韩av| 亚洲一区中文日韩| 国产一区二区三区电影在线观看 | 日韩久久久久久| 日韩毛片一二三区| 美女看a上一区| av福利精品导航| 欧美白人最猛性xxxxx69交| 亚洲精品精品亚洲| 国产剧情一区二区| 欧美一个色资源| 亚洲激情在线激情| 国产福利91精品一区| 制服丝袜成人动漫| 一区二区三区四区视频精品免费 |