- 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.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;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 責ãããã¨ï¼ 44 * 45 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 46 ã 47 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 48 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 49 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 50 * ã®è²¬ä»»ãè² ããªãï¼ 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 * 免責すること. 30 * 31 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 32 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 33 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 34 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 35 * の責任を負わない. 51 36 * 52 37 * $Id$ … … 54 39 55 40 /* 56 * ã«ã¼ãã«ã®å²è¾¼ã¿ã³ã³ããã¼ã©ä¾åé¨ï¼GICç¨ï¼41 * カーネルの割込みコントローラ依存部(GIC用) 57 42 */ 58 43 … … 63 48 64 49 /* 65 * CPU ã¤ã³ã¿ãã§ã¼ã¹ã®æä½66 */ 67 68 /* 69 * CPU ã¤ã³ã¿ãã§ã¼ã¹ã®åæå50 * CPUインタフェースの操作 51 */ 52 53 /* 54 * CPUインタフェースの初期化 70 55 */ 71 56 void … … 73 58 { 74 59 /* 75 * CPU ã¤ã³ã¿ãã§ã¼ã¹ããã£ã¹ã¨ã¼ãã«60 * CPUインタフェースをディスエーブル 76 61 */ 77 62 sil_wrw_mem(GICC_CTLR, GICC_CTLR_DISABLE); 78 63 79 64 /* 80 * å²è¾¼ã¿åªå 81 度ãã¹ã¯ãæä½åªå 82 度ã«è¨å® 65 * 割込み優先度マスクを最低優先度に設定 83 66 */ 84 67 gicc_set_priority((GIC_PRI_LEVEL - 1) << GIC_PRI_SHIFT); 85 68 86 69 /* 87 * å²è¾¼ã¿åªå 88 度ã®å 89 ¨ãããæå¹ã« 70 * 割込み優先度の全ビット有効に 90 71 */ 91 72 sil_wrw_mem(GICC_BPR, 0U); 92 73 93 74 /* 94 * ã¢ã¯ãã£ããªå²è¾¼ã¿ãããã°ï¼EOIã«ããã¯ãªã¢ãã75 * アクティブな割込みがあれば,EOIによりクリアする 95 76 */ 96 77 sil_wrw_mem(GICC_EOIR, sil_rew_mem(GICC_IAR)); 97 78 98 79 /* 99 * CPU ã¤ã³ã¿ãã§ã¼ã¹ãã¤ãã¼ãã«80 * CPUインタフェースをイネーブル 100 81 */ 101 82 #ifdef TOPPERS_SAFEG_SECURE … … 108 89 109 90 /* 110 * CPU ã¤ã³ã¿ãã§ã¼ã¹ã®çµäºå¦ç91 * CPUインタフェースの終了処理 111 92 */ 112 93 void … … 117 98 118 99 /* 119 * ãã£ã¹ããªãã¥ã¼ã¿ã®æä½120 */ 121 122 /* 123 * ãã£ã¹ããªãã¥ã¼ã¿ã®åæå100 * ディストリビュータの操作 101 */ 102 103 /* 104 * ディストリビュータの初期化 124 105 */ 125 106 void … … 129 110 130 111 /* 131 * ãã£ã¹ããªãã¥ã¼ã¿ããã£ã¹ã¨ã¼ãã«112 * ディストリビュータをディスエーブル 132 113 */ 133 114 sil_wrw_mem(GICD_CTLR, GICD_CTLR_DISABLE); … … 135 116 #ifdef TOPPERS_SAFEG_SECURE 136 117 /* 137 * ãã¹ã¦ã®å²è¾¼ã¿ãã°ã«ã¼ã1ï¼IRQï¼ã«è¨å®118 * すべての割込みをグループ1(IRQ)に設定 138 119 */ 139 120 for (i = 0; i < (GIC_TNUM_INTNO + 31) / 32; i++) { … … 143 124 144 125 /* 145 * ãã¹ã¦ã®å²è¾¼ã¿ãç¦æ¢126 * すべての割込みを禁止 146 127 */ 147 128 for (i = 0; i < (GIC_TNUM_INTNO + 31) / 32; i++) { … … 150 131 151 132 /* 152 * ãã¹ã¦ã®å²è¾¼ã¿ãã³ãã£ã³ã°ãã¯ãªã¢133 * すべての割込みペンディングをクリア 153 134 */ 154 135 for (i = 0; i < (GIC_TNUM_INTNO + 31) / 32; i++) { … … 157 138 158 139 /* 159 * ãã¹ã¦ã®å²è¾¼ã¿ãæä½åªå 160 度ã«è¨å® 140 * すべての割込みを最低優先度に設定 161 141 */ 162 142 for (i = 0; i < (GIC_TNUM_INTNO + 3) / 4; i++){ … … 165 145 166 146 /* 167 * ãã¹ã¦ã®å 168 ±æããªãã§ã©ã«å²è¾¼ã¿ã®ã¿ã¼ã²ãããããã»ããµ0ã«è¨å® 147 * すべての共有ペリフェラル割込みのターゲットをプロセッサ0に設定 169 148 */ 170 149 for (i = GIC_INTNO_SPI0 / 4; i < (GIC_TNUM_INTNO + 3) / 4; i++) { … … 173 152 174 153 /* 175 * ãã¹ã¦ã®ããªãã§ã©ã«å²è¾¼ã¿ãã¬ãã«ããªã¬ã«è¨å®154 * すべてのペリフェラル割込みをレベルトリガに設定 176 155 */ 177 156 for (i = GIC_INTNO_PPI0 / 16; i < (GIC_TNUM_INTNO + 15) / 16; i++) { … … 184 163 185 164 /* 186 * ãã£ã¹ããªãã¥ã¼ã¿ãã¤ãã¼ãã«165 * ディストリビュータをイネーブル 187 166 */ 188 167 sil_wrw_mem(GICD_CTLR, GICD_CTLR_ENABLE); … … 190 169 191 170 /* 192 * ãã£ã¹ããªãã¥ã¼ã¿ã®çµäºå¦ç171 * ディストリビュータの終了処理 193 172 */ 194 173 void … … 201 180 202 181 /* 203 * å²è¾¼ã¿è¦æ±ã©ã¤ã³ã®å±æ§ã®è¨å®204 * 205 * ASP ã«ã¼ãã«ã§ã®å©ç¨ãæ³å®ãã¦ï¼ãã©ã¡ã¼ã¿ã¨ã©ã¼ã¯ã¢ãµã¼ã·ã§ã³ã§ãã§ã206 * ã¯ãã¦ããï¼182 * 割込み要求ラインの属性の設定 183 * 184 * ASPカーネルでの利用を想定して,パラメータエラーはアサーションでチェッ 185 * クしている. 207 186 */ 208 187 Inline void … … 213 192 214 193 /* 215 * å²è¾¼ã¿ãç¦æ¢194 * 割込みを禁止 216 195 * 217 * å²è¾¼ã¿ãåãä»ããã¾ã¾ï¼ã¬ãã«ããªã¬ï¼ã¨ãã¸ããªã¬ã®è¨å®ãï¼å² 218 * è¾¼ã¿åªå 219 度ã®è¨å®ãè¡ãã®ã¯å±éºãªããï¼å²è¾¼ã¿å±æ§ã«ãããããï¼ 220 * ä¸æ¦ãã¹ã¯ããï¼ 196 * 割込みを受け付けたまま,レベルトリガ/エッジトリガの設定や,割 197 * 込み優先度の設定を行うのは危険なため,割込み属性にかかわらず, 198 * 一旦マスクする. 221 199 */ 222 200 disable_int(intno); 223 201 224 202 /* 225 * å²è¾¼ã¿ãã³ã³ãã£ã®ã¥ã¬ã¼ã·ã§ã³203 * 割込みをコンフィギュレーション 226 204 */ 227 205 #ifdef TOPPERS_SAFEG_SECURE … … 246 224 247 225 /* 248 * å²è¾¼ã¿åªå 249 度ã¨ã¿ã¼ã²ããããã»ããµãè¨å® 226 * 割込み優先度とターゲットプロセッサを設定 250 227 */ 251 228 gicd_set_priority(intno, INT_IPM(intpri)); … … 253 230 254 231 /* 255 * å²è¾¼ã¿ã許å¯232 * 割込みを許可 256 233 */ 257 234 if ((intatr & TA_ENAINT) != 0U) { … … 261 238 262 239 /* 263 * å²è¾¼ã¿ç®¡çæ©è½ã®åæå240 * 割込み管理機能の初期化 264 241 */ 265 242 void
Note:
See TracChangeset
for help on using the changeset viewer.