Changeset 356 for ssp_aarch64/trunk/arm64_gcc/prc_config.h
- Timestamp:
- Jun 8, 2018, 11:24:32 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
ssp_aarch64/trunk/arm64_gcc/prc_config.h
-
Property svn:mime-type
set to
text/plain; charset=utf-8
r353 r356 8 8 * Nagoya Municipal Industrial Research Institute, JAPAN 9 9 * 10 * ä¸è¨èä½æ¨©è 11 ã¯ï¼ä»¥ä¸ã®(1)ã(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 12 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 13 * å¤ã»åé 14 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 15 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 16 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 17 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 18 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 19 * ç¨ã§ããå½¢ã§åé 20 å¸ããå ´åã«ã¯ï¼åé 21 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 22 * è 23 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 24 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 25 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 26 * ç¨ã§ããªãå½¢ã§åé 27 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 28 * ã¨ï¼ 29 * (a) åé 30 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 31 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 32 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 33 * (b) åé 34 å¸ã®å½¢æ 35 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 36 * å ±åãããã¨ï¼ 37 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 38 * 害ãããï¼ä¸è¨èä½æ¨©è 39 ããã³TOPPERSããã¸ã§ã¯ããå 40 責ãããã¨ï¼ 41 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 42 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 43 ããã³TOPPERSããã¸ã§ã¯ãã 44 * å 45 責ãããã¨ï¼ 46 * 47 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 48 ã 49 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 50 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 51 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 52 * ã®è²¬ä»»ãè² ããªãï¼ 10 * 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ 11 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 12 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 13 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 14 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 15 * スコード中に含まれていること. 16 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 17 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 18 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 19 * の無保証規定を掲載すること. 20 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 21 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 22 * と. 23 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 24 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 25 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 26 * 報告すること. 27 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 28 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 29 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 30 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 31 * 免責すること. 32 * 33 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 34 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 35 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 36 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 37 * の責任を負わない. 53 38 * 54 39 * @(#) $Id: prc_config.h 1304 2008-08-27 07:28:36Z ertl-honda $ … … 56 41 57 42 /* 58 * ããã»ããµä¾åã¢ã¸ã¥ã¼ã«ï¼ARM64ç¨ï¼59 * 60 * ãã®ã¤ã³ã¯ã«ã¼ããã¡ã¤ã«ã¯ï¼target_config.hï¼ã¾ãã¯ï¼ããããã¤ã³ã¯61 * ã«ã¼ãããããã¡ã¤ã«ï¼ã®ã¿ããã¤ã³ã¯ã«ã¼ããããï¼ä»ã®ãã¡ã¤ã«ãã62 * ç´æ¥ã¤ã³ã¯ã«ã¼ããã¦ã¯ãªããªãï¼43 * プロセッサ依存モジュール(ARM64用) 44 * 45 * このインクルードファイルは,target_config.h(または,そこからインク 46 * ルードされるファイル)のみからインクルードされる.他のファイルから 47 * 直接インクルードしてはならない. 63 48 */ 64 49 … … 71 56 72 57 /* 73 * éã¿ã¹ã¯ã³ã³ããã¹ãç¨ã®ã¹ã¿ãã¯åæå¤58 * 非タスクコンテキスト用のスタック初期値 74 59 */ 75 60 #define TOPPERS_ISTKPT(istk, istksz) ((STK_T *)((char *)(istk) + (istksz))) 76 61 77 62 /* 78 * å²è¾¼ã¿ãã¹ãæ°63 * 割込みネスト数 79 64 */ 80 65 extern uint8_t intnest; 81 66 82 67 /* 83 * ã³ã³ããã¹ãã®åç 84 § 68 * コンテキストの参照 85 69 * 86 70 */ … … 103 87 104 88 /* 105 * TOPPERSæ¨æºå²è¾¼ã¿å¦çã¢ãã«ã®å®ç¾ 106 * 107 * å 108 ¨å²è¾¼ã¿ããã¯ãã©ã°ã¨ã㦠PSTATE.F ããã³ PSTATE.I ãç¨ãã 109 * CPUããã¯ãã©ã°ã¨ã㦠PSTATE.Iããç¨ãã 110 * å²è¾¼ã¿åªå 111 度ãã¹ã¯ã¨ã㦠GICC_PMR ã¬ã¸ã¹ã¿ãç¨ããï¼ 112 */ 113 114 /* 115 * TIPM_ENAALLï¼å²è¾¼ã¿åªå 116 度ãã¹ã¯å 117 ¨è§£é¤ï¼ã®å 118 é¨è¡¨ç¾ 89 * TOPPERS標準割込み処理モデルの実現 90 * 91 * 全割込みロックフラグとして PSTATE.F および PSTATE.I を用いる 92 * CPUロックフラグとして PSTATE.I を用いる 93 * 割込み優先度マスクとして GICC_PMR レジスタを用いる. 94 */ 95 96 /* 97 * TIPM_ENAALL(割込み優先度マスク全解除)の内部表現 119 98 */ 120 99 #define IIPM_ENAALL (0) … … 124 103 125 104 /* 126 * CPUããã¯ç¶æ 127 ã¸ã®ç§»è¡ 105 * CPUロック状態への移行 128 106 */ 129 107 Inline void … … 137 115 138 116 /* 139 * CPUããã¯ç¶æ 140 ã®è§£é¤ 117 * CPUロック状態の解除 141 118 */ 142 119 Inline void … … 150 127 151 128 /* 152 * CPUããã¯ç¶æ 153 ã®åç 154 § 129 * CPUロック状態の参照 155 130 */ 156 131 Inline bool_t … … 174 149 175 150 /* 176 * ï¼ã¢ãã«ä¸ã®ï¼å²è¾¼ã¿åªå 177 度ãã¹ã¯ã®è¨å® 178 * 179 * CPUããã¯ãã©ã°ãã¯ãªã¢ããã¦ããæã¯ï¼ãã¼ãã¦ã§ã¢ã®å²è¾¼ã¿åªå 180 度ã 181 * ã¹ã¯ãè¨å®ããï¼CPUããã¯ãã©ã°ãã»ããããã¦ããæã¯ï¼saved_iipm 182 * ãè¨å®ãï¼ããã«ï¼ãã¼ãã¦ã§ã¢ã®å²è¾¼ã¿åªå 183 度ãã¹ã¯ãï¼è¨å®ããã㨠184 * ããï¼ã¢ãã«ä¸ã®ï¼å²è¾¼ã¿åªå 185 度ãã¹ã¯ã¨TIPM_LOCKã®é«ãæ¹ã«è¨å®ããï¼ 151 * (モデル上の)割込み優先度マスクの設定 152 * 153 * CPUロックフラグがクリアされている時は,ハードウェアの割込み優先度マ 154 * スクを設定する.CPUロックフラグがセットされている時は,saved_iipm 155 * を設定し,さらに,ハードウェアの割込み優先度マスクを,設定しようと 156 * した(モデル上の)割込み優先度マスクとTIPM_LOCKの高い方に設定する. 186 157 */ 187 158 Inline void … … 195 166 196 167 /* 197 * ï¼ã¢ãã«ä¸ã®ï¼å²è¾¼ã¿åªå 198 度ãã¹ã¯ã®åç 199 § 200 * 201 * CPUããã¯ãã©ã°ãã¯ãªã¢ããã¦ããæã¯ãã¼ãã¦ã§ã¢ã®å²è¾¼ã¿åªå 202 度ã 203 * ã¹ã¯ãï¼ã»ããããã¦ããæã¯saved_iipmãåç 204 §ããï¼ 168 * (モデル上の)割込み優先度マスクの参照 169 * 170 * CPUロックフラグがクリアされている時はハードウェアの割込み優先度マ 171 * スクを,セットされている時はsaved_iipmを参照する. 205 172 */ 206 173 Inline PRI … … 214 181 215 182 /* 216 * ãã£ã¹ãããã£ã®åä½éå§ï¼prc_support.Sï¼ 217 * 218 * start_dispatchã¯ï¼ã«ã¼ãã«èµ·åæã«å¼ã³åºãã¹ããã®ã§ï¼ãã¹ã¦ã®å²è¾¼ 219 * ã¿ãç¦æ¢ããç¶æ 220 ï¼å²è¾¼ã¿ããã¯ç¶æ 221 ã¨åçã®ç¶æ 222 ï¼ã§å¼ã³åºããªããã° 223 * ãªããªãï¼ 183 * ディスパッチャの動作開始(prc_support.S) 184 * 185 * start_dispatchは,カーネル起動時に呼び出すべきもので,すべての割込 186 * みを禁止した状態(割込みロック状態と同等の状態)で呼び出さなければ 187 * ならない. 224 188 */ 225 189 extern void start_dispatch(void) NoReturn; … … 227 191 228 192 /* 229 * ã«ã¼ãã«ã®çµäºå¦çã®å¼åºãï¼prc_support.Sï¼230 * 231 * call_exit_kernel ã¯ï¼ã«ã¼ãã«ã®çµäºæã«å¼ã³åºãã¹ããã®ã§ï¼éã¿ã¹ã¯232 * ã³ã³ããã¹ãã«åãæãã¦ï¼ã«ã¼ãã«ã®çµäºå¦çï¼exit_kernelï¼ãå¼ã³åº233 * ãï¼193 * カーネルの終了処理の呼出し(prc_support.S) 194 * 195 * call_exit_kernelは,カーネルの終了時に呼び出すべきもので,非タスク 196 * コンテキストに切り換えて,カーネルの終了処理(exit_kernel)を呼び出 197 * す. 234 198 */ 235 199 extern void call_exit_kernel(void) NoReturn; 236 200 237 201 /* 238 * ã¢ã¤ãã«ã«ã¼ãã®å®è£ 239 240 * 241 * åã«CPUããã¯ç¶æ 242 ã¨CPUããã¯è§£é¤ç¶æ 243 ãå¼ã³åºãå®è£ 244 ã¨ããï¼ 245 * ã¹ãªã¼ãã¢ã¼ãã«å 246 ¥ããå ´åã¯æ¬å¦çãwfiå½ä»¤ãç¨ãã¦æ¸ãæããã°è¯ãï¼ 202 * アイドルループの実装 203 * 204 * 単にCPUロック状態とCPUロック解除状態を呼び出す実装とする. 205 * スリープモードに入れる場合は本処理をwfi命令を用いて書き換えれば良い. 247 206 */ 248 207 Inline void … … 250 209 { 251 210 x_unlock_cpu(); 252 /* CPU ã¢ã³ãã㯠=> CPUããã¯*/211 /* CPUアンロック => CPUロック */ 253 212 x_lock_cpu(); 254 213 } 255 214 256 215 /* 257 * å²è¾¼ã¿çªå·ã»å²è¾¼ã¿ãã³ãã©çªå·258 * 259 * å²è¾¼ã¿ãã³ãã©çªå·(inhno)ã¨å²è¾¼ã¿çªå·(intno)ã¯ï¼260 * å²ãè¾¼ã¿çºçæã«GICC_IAR ã«è¨å®ãããä¾å¤çªå·ã¨ããï¼261 */ 262 263 /* 264 * å²è¾¼ã¿çªå·ã®ç¯å²ã®å¤å®216 * 割込み番号・割込みハンドラ番号 217 * 218 * 割込みハンドラ番号(inhno)と割込み番号(intno)は, 219 * 割り込み発生時にGICC_IAR に設定される例外番号とする. 220 */ 221 222 /* 223 * 割込み番号の範囲の判定 265 224 */ 266 225 #define VALID_INTNO(intno) ((TMIN_INTNO <= (intno)) && ((intno) <= TMAX_INTNO)) … … 269 228 270 229 /* 271 * å²è¾¼ã¿ãã³ãã©ã®è¨å®230 * 割込みハンドラの設定 272 231 */ 273 232 Inline void … … 277 236 278 237 /* 279 * å²è¾¼ã¿ãã³ãã©ã®åºå 280 ¥å£å¦çã®çæãã¯ã 238 * 割込みハンドラの出入口処理の生成マクロ 281 239 * 282 240 */ … … 285 243 286 244 /* 287 * å²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°288 */ 289 290 /* 291 * å²è¾¼ã¿è¦æ±ã©ã¤ã³è¨å®ãã¼ãã«ï¼kernel_cfg.cï¼292 * 293 * å²è¾¼ã¿å±æ§ãè¨å®ããã¦ããããå¤å¥ããããã®ãã¼ãã«ï¼kernel_cfg.cï¼294 * å²è¾¼ã¿è¦æ±ã©ã¤ã³ã«å¯¾ãã¦å²è¾¼ã¿å±æ§ãè¨å®ããã¦ããã°1ï¼è¨å®ããã¦ã295 * ãªããã°0ãä¿æãããã¼ãã«ï¼245 * 割込み要求禁止フラグ 246 */ 247 248 /* 249 * 割込み要求ライン設定テーブル(kernel_cfg.c) 250 * 251 * 割込み属性が設定されているかを判別するためのテーブル(kernel_cfg.c) 252 * 割込み要求ラインに対して割込み属性が設定されていれば1,設定されてい 253 * なければ0を保持するテーブル. 296 254 */ 297 255 extern const uint8_t intcfg_table[]; … … 299 257 300 258 /* 301 * å²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°ã®ã»ãã302 * 303 * intno ã§æå®ãããå²è¾¼ã¿è¦æ±ã©ã¤ã³ã«å¯¾ããå²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°ã®ã»ã304 * ããï¼å²è¾¼ã¿ãç¦æ¢ããï¼å²è¾¼ã¿å±æ§ãè¨å®ããã¦ããªãå²è¾¼ã¿è¦æ±ã©ã¤305 * ã³ãæå®ãããå ´åã«ã¯ï¼falseãè¿ãï¼259 * 割込み要求禁止フラグのセット 260 * 261 * intnoで指定された割込み要求ラインに対する割込み要求禁止フラグのセッ 262 * トし,割込みを禁止する.割込み属性が設定されていない割込み要求ライ 263 * ンが指定された場合には,falseを返す. 306 264 */ 307 265 Inline bool_t … … 320 278 321 279 /* 322 * å²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°ã®ã¯ãªã¢323 * 324 * intno ã§æå®ãããå²è¾¼ã¿è¦æ±ã©ã¤ã³ã«å¯¾ããå²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°ã®ã¯ãª325 * ã¢ãï¼å²è¾¼ã¿ã許å¯ããï¼å²è¾¼ã¿å±æ§ãè¨å®ããã¦ããªãå²è¾¼ã¿è¦æ±ã©ã¤326 * ã³ãæå®ãããå ´åã«ã¯ï¼falseãè¿ãï¼280 * 割込み要求禁止フラグのクリア 281 * 282 * intnoで指定された割込み要求ラインに対する割込み要求禁止フラグのクリ 283 * アし,割込みを許可する.割込み属性が設定されていない割込み要求ライ 284 * ンが指定された場合には,falseを返す. 327 285 */ 328 286 Inline bool_t … … 341 299 342 300 /* 343 * å²è¾¼ã¿è¦æ±ã®ã¯ãªã¢301 * 割込み要求のクリア 344 302 */ 345 303 Inline void … … 350 308 351 309 /* 352 * å²è¾¼ã¿è¦æ±ã®ãã§ãã¯310 * 割込み要求のチェック 353 311 */ 354 312 Inline bool_t … … 360 318 361 319 /* 362 * å²è¾¼ã¿è¦æ±ã©ã¤ã³ã®å±æ§ã®è¨å®320 * 割込み要求ラインの属性の設定 363 321 */ 364 322 extern void x_config_int(INTNO intno, ATR intatr, PRI intpri); 365 323 366 324 /* 367 * å²è¾¼ã¿ãã³ãã©å 368 ¥å£ã§å¿ 369 è¦ãªIRCæä½ 325 * 割込みハンドラ入口で必要なIRC操作 370 326 */ 371 327 Inline void … … 375 331 376 332 /* 377 * å²è¾¼ã¿ãã³ãã©ã®åºå£ã§å¿ 378 è¦ãªIRCæä½ 333 * 割込みハンドラの出口で必要なIRC操作 379 334 */ 380 335 Inline void … … 384 339 385 340 /* 386 * CPU ä¾å¤ãã³ãã©é¢é£387 */ 388 389 /* 390 * CPU ä¾å¤ãã³ãã©çªå·341 * CPU例外ハンドラ関連 342 */ 343 344 /* 345 * CPU例外ハンドラ番号 391 346 */ 392 347 #define VALID_EXCNO_DEFEXC(excno) (TMIN_EXCNO <= (excno) && (excno) <= TMAX_EXCNO) 393 348 394 349 /* 395 * CPU ä¾å¤ãã³ãã©ã®è¨å®350 * CPU例外ハンドラの設定 396 351 */ 397 352 Inline void … … 401 356 402 357 /* 403 * CPUä¾å¤ãã³ãã©ã®å 404 ¥å£å¦çã®çæãã¯ã 358 * CPU例外ハンドラの入口処理の生成マクロ 405 359 */ 406 360 #define EXC_ENTRY(excno, exchdr) exchdr … … 408 362 409 363 /* 410 * ããã»ããµä¾åã®åæå364 * プロセッサ依存の初期化 411 365 */ 412 366 extern void prc_initialize(void); 413 367 414 368 /* 415 * ããã»ããµä¾åã®çµäºæå¦ç369 * プロセッサ依存の終了時処理 416 370 */ 417 371 extern void prc_terminate(void) NoReturn; 418 372 419 373 /* 420 * ç»é²ããã¦ããªãä¾å¤ãçºçããã¨å¼ã³åºããã374 * 登録されていない例外が発生すると呼び出される 421 375 */ 422 376 extern void default_exc_handler(void *p_excinf); 423 377 424 378 /* 425 * æªç»é²ã®å²è¾¼ã¿ãçºçããå ´åã«å¼ã³åºããã379 * 未登録の割込みが発生した場合に呼び出される 426 380 */ 427 381 extern void default_int_handler(void); 428 382 429 383 /* 430 * å²è¾¼ã¿/ä¾å¤ãã³ãã©ãã¼ãã«(kernel_cfg.c)384 * 割込み/例外ハンドラテーブル(kernel_cfg.c) 431 385 */ 432 386 extern const INTHDR inh_table[]; … … 434 388 435 389 /* 436 * å²è¾¼ã¿ãã³ãã©ã®å¼ã³åºã390 * 割込みハンドラの呼び出し 437 391 */ 438 392 extern void call_int_handler(uint32_t intno); 439 393 440 394 /* 441 * CPU ä¾å¤ãã³ãã©ã®å¼ã³åºã395 * CPU例外ハンドラの呼び出し 442 396 */ 443 397 extern void call_exc_handler(void *p_excinf, uint32_t excno); -
Property svn:mime-type
set to
Note:
See TracChangeset
for help on using the changeset viewer.