- 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_kernel_impl.c
- Property svn:keywords deleted
-
Property svn:mime-type
changed from
text/x-csrc
totext/x-csrc;charset=UTF-8
r270 r321 9 9 * Graduate School of Information Science, Nagoya Univ., JAPAN 10 10 * 11 * ä¸è¨èä½æ¨©è 12 ã¯ï¼ä»¥ä¸ã®(1)ï½(4)ã®æ¡ä»¶ãæºããå ´åã«éãï¼æ¬ã½ããã¦ã§ 13 * ã¢ï¼æ¬ã½ããã¦ã§ã¢ãæ¹å¤ãããã®ãå«ãï¼ä»¥ä¸åãï¼ã使ç¨ã»è¤è£½ã»æ¹ 14 * å¤ã»åé 15 å¸ï¼ä»¥ä¸ï¼å©ç¨ã¨å¼ã¶ï¼ãããã¨ãç¡åã§è¨±è«¾ããï¼ 16 * (1) æ¬ã½ããã¦ã§ã¢ãã½ã¼ã¹ã³ã¼ãã®å½¢ã§å©ç¨ããå ´åã«ã¯ï¼ä¸è¨ã®èä½ 17 * 権表示ï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãï¼ãã®ã¾ã¾ã®å½¢ã§ã½ã¼ 18 * ã¹ã³ã¼ãä¸ã«å«ã¾ãã¦ãããã¨ï¼ 19 * (2) æ¬ã½ããã¦ã§ã¢ãï¼ã©ã¤ãã©ãªå½¢å¼ãªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 20 * ç¨ã§ããå½¢ã§åé 21 å¸ããå ´åã«ã¯ï¼åé 22 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨ 23 * è 24 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®èä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ 25 * ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 26 * (3) æ¬ã½ããã¦ã§ã¢ãï¼æ©å¨ã«çµã¿è¾¼ããªã©ï¼ä»ã®ã½ããã¦ã§ã¢éçºã«ä½¿ 27 * ç¨ã§ããªãå½¢ã§åé 28 å¸ããå ´åã«ã¯ï¼æ¬¡ã®ããããã®æ¡ä»¶ãæºããã 29 * ã¨ï¼ 30 * (a) åé 31 å¸ã«ä¼´ãããã¥ã¡ã³ãï¼å©ç¨è 32 ããã¥ã¢ã«ãªã©ï¼ã«ï¼ä¸è¨ã®è 33 * ä½æ¨©è¡¨ç¤ºï¼ãã®å©ç¨æ¡ä»¶ããã³ä¸è¨ã®ç¡ä¿è¨¼è¦å®ãæ²è¼ãããã¨ï¼ 34 * (b) åé 35 å¸ã®å½¢æ 36 ãï¼å¥ã«å®ããæ¹æ³ã«ãã£ã¦ï¼TOPPERSããã¸ã§ã¯ãã« 37 * å ±åãããã¨ï¼ 38 * (4) æ¬ã½ããã¦ã§ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ 39 * 害ãããï¼ä¸è¨èä½æ¨©è 40 ããã³TOPPERSããã¸ã§ã¯ããå 41 責ãããã¨ï¼ 42 * ã¾ãï¼æ¬ã½ããã¦ã§ã¢ã®ã¦ã¼ã¶ã¾ãã¯ã¨ã³ãã¦ã¼ã¶ããã®ãããªãç 43 * ç±ã«åºã¥ãè«æ±ãããï¼ä¸è¨èä½æ¨©è 44 ããã³TOPPERSããã¸ã§ã¯ãã 45 * å 46 責ãããã¨ï¼ 11 * 上記著作権者は,以下の(1)~(4)の条件を満たす場合に限り,本ソフトウェ 12 * ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改 13 * 変・再配布(以下,利用と呼ぶ)することを無償で許諾する. 14 * (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作 15 * 権表示,この利用条件および下記の無保証規定が,そのままの形でソー 16 * スコード中に含まれていること. 17 * (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使 18 * 用できる形で再配布する場合には,再配布に伴うドキュメント(利用 19 * 者マニュアルなど)に,上記の著作権表示,この利用条件および下記 20 * の無保証規定を掲載すること. 21 * (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使 22 * 用できない形で再配布する場合には,次のいずれかの条件を満たすこ 23 * と. 24 * (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著 25 * 作権表示,この利用条件および下記の無保証規定を掲載すること. 26 * (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに 27 * 報告すること. 28 * (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損 29 * 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること. 30 * また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理 31 * 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを 32 * 免責すること. 47 33 * 48 * æ¬ã½ããã¦ã§ã¢ã¯ï¼ç¡ä¿è¨¼ã§æä¾ããã¦ãããã®ã§ããï¼ä¸è¨èä½æ¨©è 49 ã 50 * ãã³TOPPERSããã¸ã§ã¯ãã¯ï¼æ¬ã½ããã¦ã§ã¢ã«é¢ãã¦ï¼ç¹å®ã®ä½¿ç¨ç®ç 51 * ã«å¯¾ããé©åæ§ãå«ãã¦ï¼ãããªãä¿è¨¼ãè¡ããªãï¼ã¾ãï¼æ¬ã½ããã¦ã§ 52 * ã¢ã®å©ç¨ã«ããç´æ¥çã¾ãã¯éæ¥çã«çãããããªãæ害ã«é¢ãã¦ãï¼ã 53 * ã®è²¬ä»»ãè² ããªãï¼ 34 * 本ソフトウェアは,無保証で提供されているものである.上記著作権者お 35 * よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的 36 * に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ 37 * アの利用により直接的または間接的に生じたいかなる損害に関しても,そ 38 * の責任を負わない. 54 39 * 55 40 * $Id$ … … 57 42 58 43 /* 59 * ã«ã¼ãã«ã®ã³ã¢ä¾åé¨ï¼ARMç¨ï¼44 * カーネルのコア依存部(ARM用) 60 45 */ 61 46 … … 66 51 67 52 /* 68 * ã³ã³ããã¹ãåç 69 §ã®ããã®å¤æ° 70 */ 71 uint32_t excpt_nest_count; /* ä¾å¤ãã¹ãã«ã¦ã³ã */ 72 73 /* 74 * MMUé¢é£ã®æä½ï¼VMSAï¼ 53 * コンテキスト参照のための変数 54 */ 55 uint32_t excpt_nest_count; /* 例外ネストカウント */ 56 57 /* 58 * MMU関連の操作(VMSA) 75 59 */ 76 60 #ifdef USE_ARM_MMU 77 61 78 #define CP15_DACR_D0_CLIENT 0x01U /* å¤æãã¼ãã«ã«å¾ããã¡ã¤ã³0ã«ã¢ã¯ã»ã¹*/79 #define DEFAULT_ASID 1 /* 使ç¨ããASID */80 81 /* 82 * ã»ã¯ã·ã§ã³ãã¼ãã«62 #define CP15_DACR_D0_CLIENT 0x01U /* 変換テーブルに従いドメイン0にアクセス */ 63 #define DEFAULT_ASID 1 /* 使用するASID */ 64 65 /* 66 * セクションテーブル 83 67 */ 84 68 static uint32_t section_table[ARM_SECTION_TABLE_ENTRY] … … 86 70 87 71 /* 88 * MMU ã®ã»ã¯ã·ã§ã³ãã¼ãã«ã¨ã³ããªã®è¨å®72 * MMUのセクションテーブルエントリの設定 89 73 */ 90 74 Inline void … … 121 105 122 106 /* 123 * MMU ã®åæå107 * MMUの初期化 124 108 */ 125 109 void … … 130 114 131 115 /* 132 * MMU ã®ã»ã¯ã·ã§ã³ãã¼ãã«ã®è¨å®116 * MMUのセクションテーブルの設定 133 117 */ 134 118 for (i = 0; i < ARM_SECTION_TABLE_ENTRY; i++) { … … 140 124 141 125 /* 142 * TTBR0 ãç¨ããããã«æå®ï¼ARMv6以éï¼126 * TTBR0を用いるように指定(ARMv6以降) 143 127 */ 144 128 #if __TARGET_ARCH_ARM >= 6 … … 147 131 148 132 /* 149 * å¤æãã¼ãã«ã¨ãã¦ï¼section_tableã使ç¨ããï¼133 * 変換テーブルとして,section_tableを使用する. 150 134 */ 151 135 reg = ((uint32_t) &(section_table[0])) | TTBR_CONFIG; … … 153 137 154 138 /* 155 * ãã¡ã¤ã³ã¢ã¯ã»ã¹å¶å¾¡ã®è¨å®139 * ドメインアクセス制御の設定 156 140 */ 157 141 CP15_WRITE_DACR(CP15_DACR_D0_CLIENT); 158 142 159 143 /* 160 * ASID ã®è¨å®144 * ASIDの設定 161 145 */ 162 146 #if __TARGET_ARCH_ARM >= 6 … … 165 149 166 150 /* 167 * TLBå 168 ¨ä½ã®ç¡å¹å 151 * TLB全体の無効化 169 152 */ 170 153 arm_invalidate_tlb(); 171 154 172 155 /* 173 * MMU ãæå¹ã«ããï¼ARMv6ã§ã¯ï¼æ¡å¼µãã¼ã¸ãã¼ãã«è¨å®ã使ãï¼ãµã174 * ãã¼ã¸ã¯ä½¿ããªãï¼ããã«è¨å®ããï¼156 * MMUを有効にする.ARMv6では,拡張ページテーブル設定を使う(サブ 157 * ページは使わない)ように設定する. 175 158 */ 176 159 CP15_READ_SCTLR(reg); … … 187 170 188 171 /* 189 * ã³ã¢ä¾åã®åæå172 * コア依存の初期化 190 173 */ 191 174 void … … 193 176 { 194 177 /* 195 * ã«ã¼ãã«èµ·åæã¯éã¿ã¹ã¯ã³ã³ããã¹ãã¨ãã¦åä½ãããããã«ï¼ä¾å¤196 * ã®ãã¹ãåæ°ã1ã«åæåããï¼178 * カーネル起動時は非タスクコンテキストとして動作させるために,例外 179 * のネスト回数を1に初期化する. 197 180 */ 198 181 excpt_nest_count = 1U; 199 182 200 183 /* 201 * MMU ãæå¹ã«184 * MMUを有効に 202 185 */ 203 186 #ifdef USE_ARM_MMU … … 206 189 207 190 /* 208 * ããã©ã¼ãã³ã¹ã¢ãã¿ã®åæå191 * パフォーマンスモニタの初期化 209 192 */ 210 193 #if defined(USE_ARM_PM_HIST) && __TARGET_ARCH_ARM == 7 … … 214 197 215 198 /* 216 * ã³ã¢ä¾åã®çµäºå¦ç199 * コア依存の終了処理 217 200 */ 218 201 void … … 222 205 223 206 /* 224 * CPU ä¾å¤ã®çºçç¶æ³ã®ãã°åºå207 * CPU例外の発生状況のログ出力 225 208 */ 226 209 #ifndef OMIT_XLOG_SYS 227 210 228 211 /* 229 * CPUä¾å¤ãã³ãã©ã®ä¸ããï¼CPUä¾å¤æ 230 å ±ãã¤ã³ã¿ï¼p_excinfï¼ãå¼æ°ã¨ã 231 * ã¦å¼ã³åºããã¨ã§ï¼CPUä¾å¤ã®çºçç¶æ³ãã·ã¹ãã ãã°ã«åºåããï¼ 212 * CPU例外ハンドラの中から,CPU例外情報ポインタ(p_excinf)を引数とし 213 * て呼び出すことで,CPU例外の発生状況をシステムログに出力する. 232 214 */ 233 215 void … … 246 228 247 229 /* 248 * ããªãã§ããï¼ãã¼ã¿ã¢ãã¼ããçºçããç¶æ³ï¼ç¶æ 249 ã¨ã¢ãã¬ã¹ï¼ãã·ã¹ 250 * ãã ãã°ã«åºåããï¼ 230 * プリフェッチ/データアボートが発生した状況(状態とアドレス)をシス 231 * テムログに出力する. 251 232 */ 252 233 void … … 282 263 283 264 /* 284 * æªå®ç¾©ã®å²è¾¼ã¿ãå 285 ¥ã£ãå ´åã®å¦ç 265 * 未定義の割込みが入った場合の処理 286 266 */ 287 267 #ifndef OMIT_DEFAULT_INT_HANDLER … … 297 277 298 278 /* 299 * æªå®ç¾©ã®ä¾å¤ãå 300 ¥ã£ãå ´åã®å¦ç 279 * 未定義の例外が入った場合の処理 301 280 */ 302 281 #ifndef OMIT_DEFAULT_EXC_HANDLER
Note:
See TracChangeset
for help on using the changeset viewer.