- Timestamp:
- Aug 23, 2017, 9:27:43 AM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_test.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 7 7 * Graduate School of Information Science, Nagoya Univ., JAPAN 8 8 * 9 * ä¸è¨èä½æ¨©è 10 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 11 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 12 * å¤ã»åé 13 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 14 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 15 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 16 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 17 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 18 * ç¨ã§ããå½¢ã§åé 19 å¸ããå ´åã«ã¯ï¼åé 20 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 21 * è 22 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 23 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 24 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 25 * ç¨ã§ããªãå½¢ã§åé 26 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 27 * ã¨ï¼ 28 * (a) åé 29 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 30 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 31 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 32 * (b) åé 33 å¸ã®å½¢æ 34 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 35 * å ±åãããã¨ï¼ 36 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 37 * 害ãããï¼ä¸è¨èä½æ¨©è 38 ããã³TOPPERSããã¸ã§ã¯ããå 39 責ãããã¨ï¼ 40 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 41 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 42 ããã³TOPPERSããã¸ã§ã¯ãã 43 * å 44 責ãããã¨ï¼ 9 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 10 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 11 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 12 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 13 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 14 * スコード中に含まれていること. 15 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 16 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 17 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 18 * の無保証規定を掲載すること. 19 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 20 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 21 * と. 22 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 23 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 24 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 25 * 報告すること. 26 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 27 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 28 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 29 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 30 * 免責すること. 45 31 * 46 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 47 ã 48 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 49 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 50 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 51 * ã®è²¬ä»»ãè² ããªãï¼ 32 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 33 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 34 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 35 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 36 * の責任を負わない. 52 37 * 53 38 * $Id$ … … 55 40 56 41 /* 57 * ãã¹ãããã°ã©ã ã®ã³ã¢ä¾åé¨ï¼ARMç¨ï¼42 * テストプログラムのコア依存部(ARM用) 58 43 * 59 * ãã®ããããã¡ã¤ã«ã¯ï¼target_test.hï¼ã¾ãã¯ï¼ããããã¤ã³ã¯ã«ã¼ãã60 * ãããã¡ã¤ã«ï¼ã®ã¿ããã¤ã³ã¯ã«ã¼ããããï¼ä»ã®ãã¡ã¤ã«ããç´æ¥ã¤ã³61 * ã¯ã«ã¼ããã¦ã¯ãªããªãï¼44 * このヘッダファイルは,target_test.h(または,そこからインクルードさ 45 * れるファイル)のみからインクルードされる.他のファイルから直接イン 46 * クルードしてはならない. 62 47 */ 63 48 … … 69 54 70 55 /* 71 * CPU ä¾å¤ã®çºç56 * CPU例外の発生 72 57 */ 73 58 74 59 #ifndef ILLEGAL_IADDR 75 #define ILLEGAL_IADDR 0xd0000000U /* ä¸æ£å½ä»¤ã¢ãã¬ã¹*/60 #define ILLEGAL_IADDR 0xd0000000U /* 不正命令アドレス */ 76 61 #endif /* ILLEGAL_IADDR */ 77 62 78 63 #ifndef ILLEGAL_DADDR 79 #define ILLEGAL_DADDR 0xd0000000U /* ä¸æ£ãã¼ã¿ã¢ãã¬ã¹*/64 #define ILLEGAL_DADDR 0xd0000000U /* 不正データアドレス */ 80 65 #endif /* ILLEGAL_DADDR */ 81 66 82 67 /* 83 * ã¹ã¼ããã¤ã¶ã³ã¼ã«ã«ããCPUä¾å¤ã®çºç68 * スーパバイザコールによるCPU例外の発生 84 69 * 85 * CPU ä¾å¤ãã³ãã©ããï¼ãã®ã¾ã¾ãªã¿ã¼ã³ãããã¨ãã§ããï¼svcå½ä»¤ã«ã86 * ãlrã¬ã¸ã¹ã¿ãä¸æ¸ããããããï¼lrã¬ã¸ã¹ã¿ã¯ç ´å£ããããã®ã¨æå®ã87 * ã¦ããï¼70 * CPU例外ハンドラから,そのままリターンすることができる.svc命令によ 71 * りlrレジスタが上書きされるため,lrレジスタは破壊されるものと指定し 72 * ている. 88 73 */ 89 74 #if defined(USE_SVC_CPUEXC) 90 75 91 #define CPUEXC1 EXCNO_SVC /* ã¹ã¼ããã¤ã¶ã³ã¼ã«*/76 #define CPUEXC1 EXCNO_SVC /* スーパバイザコール */ 92 77 #define RAISE_CPU_EXCEPTION Asm("svc #0":::"lr") 93 78 #define PREPARE_RETURN_CPUEXC 94 79 95 80 /* 96 * ããªãã§ããã¢ãã¼ãã«ããCPUä¾å¤ã®çºç81 * プリフェッチアボートによるCPU例外の発生 97 82 * 98 * ããªãã§ããã¢ãã¼ããèµ·ãããå½ä»¤ãã¹ããããã¦CPUä¾å¤ãã³ãã©ãã99 * ãªã¿ã¼ã³ããããã«ï¼æ»ãçªå°ã¯ãã®ã¾ã¾ã§è¯ãï¼ARMã¢ã¼ãã§ä½¿ããã¨ã100 * æ³å®ï¼ï¼83 * プリフェッチアボートを起こした命令をスキップしてCPU例外ハンドラから 84 * リターンするために,戻り番地はそのままで良い(ARMモードで使うことを 85 * 想定). 101 86 */ 102 87 #elif defined(USE_PABORT_CPUEXC) 103 88 104 #define CPUEXC1 EXCNO_PABORT /* ããªãã§ããã¢ãã¼ã*/89 #define CPUEXC1 EXCNO_PABORT /* プリフェッチアボート */ 105 90 #define RAISE_CPU_EXCEPTION ((void (*)(void)) ILLEGAL_IADDR)() 106 91 #define PREPARE_RETURN_CPUEXC 107 92 108 93 /* 109 * ãã¼ã¿ã¢ãã¼ãã«ããCPUä¾å¤ã®çºç94 * データアボートによるCPU例外の発生 110 95 * 111 * ãã¼ã¿ã¢ãã¼ããèµ·ãããå½ä»¤ãã¹ããããã¦CPUä¾å¤ãã³ãã©ãããªã¿ã¼112 * ã³ããããã«ï¼æ»ãçªå°ãã4ãæ¸ç®ããï¼ARMã¢ã¼ãã§ä½¿ããã¨ãæ³å®ï¼ï¼96 * データアボートを起こした命令をスキップしてCPU例外ハンドラからリター 97 * ンするために,戻り番地から4を減算する(ARMモードで使うことを想定). 113 98 */ 114 99 #elif defined(USE_DABORT_CPUEXC) 115 100 116 101 #include "arm.h" 117 #define CPUEXC1 EXCNO_DABORT /* ãã¼ã¿ã¢ãã¼ã*/102 #define CPUEXC1 EXCNO_DABORT /* データアボート */ 118 103 #define RAISE_CPU_EXCEPTION (void)(*((volatile uint32_t *) ILLEGAL_DADDR)) 119 104 #define PREPARE_RETURN_CPUEXC ((T_EXCINF *) p_excinf)->pc -= 4U 120 105 121 106 /* 122 * ãã§ã¤ã¿ã«ãã¼ã¿ã¢ãã¼ãå¦ç107 * フェイタルデータアボート処理 123 108 * 124 * ã¹ã¿ãã¯ãã¤ã³ã¿ãä¸æ£ã«ãã¦ï¼ãã§ã¤ã¿ã«ãã¼ã¿ã¢ãã¼ãå¦çãè¡ãã125 * ãï¼CPUä¾å¤ãã³ãã©ããã¯ãªã¿ã¼ã³ã§ããªãï¼109 * スタックポインタを不正にして,フェイタルデータアボート処理を行わせ 110 * る.CPU例外ハンドラからはリターンできない. 126 111 */ 127 112 #elif defined(USE_FATAL_DABORT_CPUEXC) 128 113 129 #define CPUEXC1 EXCNO_DABORT /* ãã¼ã¿ã¢ãã¼ã*/114 #define CPUEXC1 EXCNO_DABORT /* データアボート */ 130 115 #define RAISE_CPU_EXCEPTION Asm("mov sp, %0"::"I"(ILLEGAL_DADDR)) 131 116 132 117 /* 133 * æªå®ç¾©å½ä»¤ã«ããCPUä¾å¤ã®çºç118 * 未定義命令によるCPU例外の発生 134 119 * 135 * RAISE_CPU_EXCEPTIONã¯ï¼ARMã¢ã¼ãã§ä½¿ããã¨ãæ³å®ãã¦ããï¼CPUä¾å¤ã 136 * ã³ãã©ããï¼ãã®ã¾ã¾ãªã¿ã¼ã³ãããã¨ãã§ããï¼ä½¿ç¨ãã¦ããæªå®ç¾©å½ 137 * 令ã¯ï¼"Multiply and multiply accumulate"å½ä»¤ç¾¤ã®ã¨ã³ã³ã¼ãã£ã³ã°å 138 139 * ã«ãããæªå®ç¾©å½ä»¤ã§ããï¼ 120 * RAISE_CPU_EXCEPTIONは,ARMモードで使うことを想定している.CPU例外ハ 121 * ンドラから,そのままリターンすることができる.使用している未定義命 122 * 令は,"Multiply and multiply accumulate"命令群のエンコーディング内 123 * における未定義命令である. 140 124 */ 141 125 #else 142 126 143 #define CPUEXC1 EXCNO_UNDEF /* æªå®ç¾©å½ä»¤*/127 #define CPUEXC1 EXCNO_UNDEF /* 未定義命令 */ 144 128 #define RAISE_CPU_EXCEPTION Asm(".word 0xf0500090") 145 129 #define PREPARE_RETURN_CPUEXC
Note:
See TracChangeset
for help on using the changeset viewer.