- 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/gic_kernel_impl.h
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-chdr
totext/x-chdr;charset=UTF-8
r270 r321 6 6 * Graduate School of Information Science, Nagoya Univ., JAPAN 7 7 * 8 * ä¸è¨èä½æ¨©è 9 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 10 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 11 * å¤ã»åé 12 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 13 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 14 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 15 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 16 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 17 * ç¨ã§ããå½¢ã§åé 18 å¸ããå ´åã«ã¯ï¼åé 19 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 20 * è 21 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 22 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 23 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 24 * ç¨ã§ããªãå½¢ã§åé 25 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 26 * ã¨ï¼ 27 * (a) åé 28 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 29 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 30 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 31 * (b) åé 32 å¸ã®å½¢æ 33 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 34 * å ±åãããã¨ï¼ 35 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 36 * 害ãããï¼ä¸è¨èä½æ¨©è 37 ããã³TOPPERSããã¸ã§ã¯ããå 38 責ãããã¨ï¼ 39 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 40 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 41 ããã³TOPPERSããã¸ã§ã¯ãã 42 * å 43 責ãããã¨ï¼ 8 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 9 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 10 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 11 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 12 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 13 * スコード中に含まれていること. 14 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 15 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 16 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 17 * の無保証規定を掲載すること. 18 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 19 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 20 * と. 21 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 22 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 23 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 24 * 報告すること. 25 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 26 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 27 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 28 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 29 * 免責すること. 44 30 * 45 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 * ã®è²¬ä»»ãè² ããªãï¼ 31 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 * の責任を負わない. 51 36 * 52 37 * $Id$ … … 54 39 55 40 /* 56 * ã«ã¼ãã«ã®å²è¾¼ã¿ã³ã³ããã¼ã©ä¾åé¨ï¼GICç¨ï¼57 * 58 * ãã®ããããã¡ã¤ã«ã¯ï¼target_kernel_impl.hï¼ã¾ãã¯ï¼ããããã¤ã³ã¯59 * ã«ã¼ãããããã¡ã¤ã«ï¼ã®ã¿ããã¤ã³ã¯ã«ã¼ããããï¼ä»ã®ãã¡ã¤ã«ãã60 * ç´æ¥ã¤ã³ã¯ã«ã¼ããã¦ã¯ãªããªãï¼41 * カーネルの割込みコントローラ依存部(GIC用) 42 * 43 * このヘッダファイルは,target_kernel_impl.h(または,そこからインク 44 * ルードされるファイル)のみからインクルードされる.他のファイルから 45 * 直接インクルードしてはならない. 61 46 */ 62 47 … … 68 53 69 54 /* 70 * å²è¾¼ã¿çªå·ã®æ°ï¼æå°å¤ã¨æ大å¤55 * 割込み番号の数,最小値と最大値 71 56 */ 72 57 #define TNUM_INTNO GIC_TNUM_INTNO … … 75 60 76 61 /* 77 * å²è¾¼ã¿ãã³ãã©çªå·ã®æ°62 * 割込みハンドラ番号の数 78 63 */ 79 64 #define TNUM_INHNO GIC_TNUM_INTNO 80 65 81 66 /* 82 * å²è¾¼ã¿çªå·ã®å®ç¾©67 * 割込み番号の定義 83 68 */ 84 69 #define GIC_INTNO_SGI0 0U … … 87 72 88 73 /* 89 * å²è¾¼ã¿åªå 90 度ã®æä½ 91 * 92 * å²è¾¼ã¿åªå 93 度ã®å 94 é¨è¡¨ç¾ã¯ï¼uint_tåã§è¡¨ãï¼0ãæé«åªå 95 度ã§ï¼å¤ã大ã 96 * ãã»ã©åªå 97 度ãä¸ãããã®ã¨ããï¼GICã®ã¬ã¸ã¹ã¿æ§æã¨æ´åãããããã«ï¼ 98 * åªå 99 度ã®æ®µæ°ã256段éã®æã«ãããã¦è¡¨ãï¼ 74 * 割込み優先度の操作 75 * 76 * 割込み優先度の内部表現は,uint_t型で表し,0が最高優先度で,値が大き 77 * いほど優先度が下がるものとする.GICのレジスタ構成と整合させるために, 78 * 優先度の段数が256段階の時にあわせて表す. 100 79 */ 101 80 #define GIC_PRI_LEVEL (TMAX_INTPRI - TMIN_INTPRI + 2) … … 120 99 #endif /* GIC_PRI_LEVEL == 16 */ 121 100 122 /* å¤é¨è¡¨ç¾ã¸ã®å¤æ*/101 /* 外部表現への変換 */ 123 102 #define EXT_IPM(pri) \ 124 103 (((PRI)((pri) >> GIC_PRI_SHIFT)) - (GIC_PRI_LEVEL - 1)) 125 104 126 /* å 127 é¨è¡¨ç¾ã¸ã®å¤æ */ 105 /* 内部表現への変換 */ 128 106 #define INT_IPM(ipm) \ 129 107 (((uint_t)((ipm) + (GIC_PRI_LEVEL - 1))) << GIC_PRI_SHIFT) 130 108 131 109 /* 132 * GICã¬ã¸ã¹ã¿ã®ã¢ãã¬ã¹ãå®ç¾©ããããã®ãã¯ã 133 * 134 * GICã¬ã¸ã¹ã¿ã®ã¢ãã¬ã¹ãï¼ã¢ã»ã³ããªè¨èªãããåç 135 §ã§ããããã«ããã 136 * ãã®ãã¯ãï¼ 110 * GICレジスタのアドレスを定義するためのマクロ 111 * 112 * GICレジスタのアドレスを,アセンブリ言語からも参照できるようにするた 113 * めのマクロ. 137 114 */ 138 115 #ifndef GIC_REG … … 141 118 142 119 /* 143 * CPU ã¤ã³ã¿ãã§ã¼ã¹é¢é£ã®å®ç¾©120 * CPUインタフェース関連の定義 144 121 */ 145 122 #define GICC_CTLR GIC_REG(GICC_BASE, 0x00) … … 152 129 153 130 /* 154 * CPU ã¤ã³ã¿ãã§ã¼ã¹å¶å¾¡ã¬ã¸ã¹ã¿ï¼GICC_CTLRï¼ã®è¨å®å¤ï¼GICv1ã§ã»ãã¥ãª155 * ãã£æ¡å¼µããªãå ´åï¼131 * CPUインタフェース制御レジスタ(GICC_CTLR)の設定値(GICv1でセキュリ 132 * ティ拡張がない場合) 156 133 */ 157 134 #define GICC_CTLR_DISABLE UINT_C(0x00) … … 159 136 160 137 /* 161 * CPU ã¤ã³ã¿ãã§ã¼ã¹å¶å¾¡ã¬ã¸ã¹ã¿ï¼GICC_CTLRï¼ã®è¨å®å¤ï¼GICv2ã§ã»ãã¥ãª162 * ãã£æ¡å¼µããªãå ´åãï¼æ¡å¼µãããå ´åã®ã»ãã¥ã¢ã¢ã¼ãï¼138 * CPUインタフェース制御レジスタ(GICC_CTLR)の設定値(GICv2でセキュリ 139 * ティ拡張がない場合か,拡張がある場合のセキュアモード) 163 140 */ 164 141 #ifdef TOPPERS_SAFEG_SECURE … … 170 147 171 148 /* 172 * ãã£ã¹ããªãã¥ã¼ã¿é¢é£ã®å®ç¾©149 * ディストリビュータ関連の定義 173 150 */ 174 151 #define GICD_CTLR GIC_REG(GICD_BASE, 0x000) … … 191 168 192 169 /* 193 * ãã£ã¹ããªãã¥ã¼ã¿å¶å¾¡ã¬ã¸ã¹ã¿ï¼GICD_CTLRï¼ã®è¨å®å¤170 * ディストリビュータ制御レジスタ(GICD_CTLR)の設定値 194 171 */ 195 172 #define GICD_CTLR_DISABLE UINT_C(0x00) … … 197 174 198 175 /* 199 * å²è¾¼ã¿ã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³ã¬ã¸ã¹ã¿ï¼GICD_ICFGRnï¼ã®è¨å®å¤ 200 * 201 * 第1ãããã¯ï¼ARM11 MPCoreããã³GICã®æ©ãææã®å®è£ 202 ã§ã¯å²è¾¼ã¿ã®éç¥ 203 * å 204 ããã»ããµãè¨å®ããããã«ä½¿ç¨ããã¦ããï¼ 176 * 割込みコンフィギュレーションレジスタ(GICD_ICFGRn)の設定値 177 * 178 * 第1ビットは,ARM11 MPCoreおよびGICの早い時期の実装では割込みの通知 179 * 先プロセッサを設定するために使用されている. 205 180 */ 206 181 #define GICD_ICFGRn_LEVEL UINT_C(0x00) … … 214 189 215 190 /* 216 * CPUã¤ã³ã¿ãã§ã¼ã¹ã®æä½ 217 */ 218 219 /* 220 * å²è¾¼ã¿åªå 221 度ãã¹ã¯ãè¨å®ï¼priã¯å 222 é¨è¡¨ç¾ï¼ 191 * CPUインタフェースの操作 192 */ 193 194 /* 195 * 割込み優先度マスクを設定(priは内部表現) 223 196 */ 224 197 Inline void … … 229 202 230 203 /* 231 * å²è¾¼ã¿åªå 232 度ãã¹ã¯ãåå¾ï¼å 233 é¨è¡¨ç¾ã§è¿ãï¼ 204 * 割込み優先度マスクを取得(内部表現で返す) 234 205 */ 235 206 Inline uint_t … … 240 211 241 212 /* 242 * CPU ã¤ã³ã¿ãã§ã¼ã¹ã®åæå213 * CPUインタフェースの初期化 243 214 */ 244 215 extern void gicc_initialize(void); 245 216 246 217 /* 247 * CPU ã¤ã³ã¿ãã§ã¼ã¹ã®çµäº218 * CPUインタフェースの終了 248 219 */ 249 220 extern void gicc_terminate(void); 250 221 251 222 /* 252 * ãã£ã¹ããªãã¥ã¼ã¿ã®æä½253 */ 254 255 /* 256 * å²è¾¼ã¿ç¦æ¢ï¼å²è¾¼ã¿ã¤ãã¼ãã«ã®ã¯ãªã¢ï¼223 * ディストリビュータの操作 224 */ 225 226 /* 227 * 割込み禁止(割込みイネーブルのクリア) 257 228 */ 258 229 Inline void … … 263 234 264 235 /* 265 * å²è¾¼ã¿è¨±å¯ï¼å²è¾¼ã¿ã¤ãã¼ãã«ã®ã»ããï¼236 * 割込み許可(割込みイネーブルのセット) 266 237 */ 267 238 Inline void … … 272 243 273 244 /* 274 * å²è¾¼ã¿ãã³ãã£ã³ã°ã®ã¯ãªã¢245 * 割込みペンディングのクリア 275 246 */ 276 247 Inline void … … 281 252 282 253 /* 283 * å²è¾¼ã¿ãã³ãã£ã³ã°ã®ã»ãã254 * 割込みペンディングのセット 284 255 */ 285 256 Inline void … … 290 261 291 262 /* 292 * å²è¾¼ã¿ãã³ãã£ã³ã°ã®ãã§ãã¯263 * 割込みペンディングのチェック 293 264 */ 294 265 Inline bool_t … … 300 271 301 272 /* 302 * å²è¾¼ã¿ã®ã³ã³ãã£ã°ã¬ã¼ã·ã§ã³273 * 割込みのコンフィグレーション 303 274 */ 304 275 Inline void … … 315 286 316 287 /* 317 * å²è¾¼ã¿ã°ã«ã¼ãã®è¨å®ï¼ã»ãã¥ãªãã£æ¡å¼µï¼288 * 割込みグループの設定(セキュリティ拡張) 318 289 */ 319 290 Inline void … … 330 301 331 302 /* 332 * å²è¾¼ã¿è¦æ±ã©ã¤ã³ã«å¯¾ããå²è¾¼ã¿åªå 333 度ã®è¨å®ï¼priã¯å 334 é¨è¡¨ç¾ï¼ 303 * 割込み要求ラインに対する割込み優先度の設定(priは内部表現) 335 304 */ 336 305 Inline void … … 347 316 348 317 /* 349 * å²è¾¼ã¿ã¿ã¼ã²ããããã»ããµã®è¨å®350 * 351 * prcs ã¯ï¼ã¿ã¼ã²ããã¨ããããã»ããµã表ããããã®ãããæ¯è«çåã§æ352 * å®ããï¼353 * ããã»ããµ0 : 0x01354 * ããã»ããµ1 : 0x02355 * ããã»ããµ2 : 0x04356 * ããã»ããµ3 : 0x08318 * 割込みターゲットプロセッサの設定 319 * 320 * prcsは,ターゲットとするプロセッサを表すビットのビット毎論理和で指 321 * 定する. 322 * プロセッサ0 : 0x01 323 * プロセッサ1 : 0x02 324 * プロセッサ2 : 0x04 325 * プロセッサ3 : 0x08 357 326 */ 358 327 Inline void … … 369 338 370 339 /* 371 * ãã£ã¹ããªãã¥ã¼ã¿ã®åæå340 * ディストリビュータの初期化 372 341 */ 373 342 extern void gicd_initialize(void); 374 343 375 344 /* 376 * ãã£ã¹ããªãã¥ã¼ã¿ã®çµäº345 * ディストリビュータの終了 377 346 */ 378 347 extern void gicd_terminate(void); … … 381 350 382 351 /* 383 * å²è¾¼ã¿çªå·ã®ç¯å²ã®å¤å®352 * 割込み番号の範囲の判定 384 353 */ 385 354 #define VALID_INTNO(intno) (TMIN_INTNO <= (intno) && (intno) <= TMAX_INTNO) 386 355 387 356 /* 388 * å²è¾¼ã¿è¦æ±ã©ã¤ã³ã®ããã®æ¨æºçãªåæåæ 389 å ±ãçæãã 357 * 割込み要求ラインのための標準的な初期化情報を生成する 390 358 */ 391 359 #define USE_INTINIB_TABLE 392 360 393 361 /* 394 * å²è¾¼ã¿è¦æ±ã©ã¤ã³è¨å®ãã¼ãã«ãçæãã362 * 割込み要求ライン設定テーブルを生成する 395 363 */ 396 364 #define USE_INTCFG_TABLE 397 365 398 366 /* 399 * ã³ã¢ä¾åé¨367 * コア依存部 400 368 */ 401 369 #include "core_kernel_impl.h" 402 370 403 371 /* 404 * ã¿ã¼ã²ããéä¾åé¨ã«æä¾ããé¢æ°372 * ターゲット非依存部に提供する関数 405 373 */ 406 374 #ifndef TOPPERS_MACRO_ONLY 407 375 408 376 /* 409 * å²è¾¼ã¿åªå 410 度ãã¹ã¯ã®è¨å® 377 * 割込み優先度マスクの設定 411 378 */ 412 379 Inline void … … 417 384 418 385 /* 419 * å²è¾¼ã¿åªå 420 度ãã¹ã¯ã®åç 421 § 386 * 割込み優先度マスクの参照 422 387 */ 423 388 Inline PRI … … 428 393 429 394 /* 430 * å²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°ã®ã»ãã431 * 432 * intno ã§æå®ãããå²è¾¼ã¿è¦æ±ã©ã¤ã³ã«å¯¾ããå²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°ã®ã»ã433 * ããï¼å²è¾¼ã¿ãç¦æ¢ããï¼å²è¾¼ã¿å±æ§ãè¨å®ããã¦ããªãå²è¾¼ã¿è¦æ±ã©ã¤434 * ã³ãæå®ãããå ´åã«ã¯ï¼falseãè¿ãï¼395 * 割込み要求禁止フラグのセット 396 * 397 * intnoで指定された割込み要求ラインに対する割込み要求禁止フラグのセッ 398 * トし,割込みを禁止する.割込み属性が設定されていない割込み要求ライ 399 * ンが指定された場合には,falseを返す. 435 400 */ 436 401 Inline bool_t … … 445 410 446 411 /* 447 * å²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°ã®ã¯ãªã¢448 * 449 * intno ã§æå®ãããå²è¾¼ã¿è¦æ±ã©ã¤ã³ã«å¯¾ããå²è¾¼ã¿è¦æ±ç¦æ¢ãã©ã°ã®ã¯ãª450 * ã¢ãï¼å²è¾¼ã¿ã許å¯ããï¼å²è¾¼ã¿å±æ§ãè¨å®ããã¦ããªãå²è¾¼ã¿è¦æ±ã©ã¤451 * ã³ãæå®ãããå ´åã«ã¯ï¼falseãè¿ãï¼412 * 割込み要求禁止フラグのクリア 413 * 414 * intnoで指定された割込み要求ラインに対する割込み要求禁止フラグのクリ 415 * アし,割込みを許可する.割込み属性が設定されていない割込み要求ライ 416 * ンが指定された場合には,falseを返す. 452 417 */ 453 418 Inline bool_t … … 462 427 463 428 /* 464 * å²è¾¼ã¿è¦æ±ã®ã¯ãªã¢429 * 割込み要求のクリア 465 430 */ 466 431 Inline void … … 471 436 472 437 /* 473 * å²è¾¼ã¿è¦æ±ã®ãã§ãã¯438 * 割込み要求のチェック 474 439 */ 475 440 Inline bool_t … … 480 445 481 446 /* 482 * å²è¾¼ã¿è¦æ±ã®ã»ãã447 * 割込み要求のセット 483 448 */ 484 449 Inline void
Note:
See TracChangeset
for help on using the changeset viewer.