Changeset 315 for rubycfg_asp/trunk/asp_dcre/kernel/interrupt.trb
- Timestamp:
- Jul 23, 2017, 2:29:40 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
rubycfg_asp/trunk/asp_dcre/kernel/interrupt.trb
-
Property svn:mime-type
changed from
text/x-ruby
totext/x-ruby; charset=UTF-8
r313 r315 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: interrupt.trb 678 2016-03-06 02:36:09Z ertl-hiro $ … … 57 42 58 43 # 59 # å²è¾¼ã¿ç®¡çæ©è½ã®çæã¹ã¯ãªãã60 # 61 62 # 63 # kernel_cfg.c ã®çæ44 # 割込み管理機能の生成スクリプト 45 # 46 47 # 48 # kernel_cfg.cの生成 64 49 # 65 50 $kernelCfgC.comment_header("Interrupt Management Functions") 66 51 67 52 # 68 # ATT_ISR ã§ä½¿ç¨ã§ããå²è¾¼ã¿çªå·ã¨ããã«å¯¾å¿ããå²è¾¼ã¿ãã³ãã©çªå·ã®ã69 # ãã©ã«ãå®ç¾©53 # ATT_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号のデ 54 # フォルト定義 70 55 # 71 56 if $INTNO_ATTISR_VALID.nil? … … 77 62 78 63 # 79 # CFG_INTã§ä½¿ç¨ã§ããå²è¾¼ã¿åªå 80 度ã®ããã©ã«ãå®ç¾© 64 # CFG_INTで使用できる割込み優先度のデフォルト定義 81 65 # 82 66 if $INTPRI_CFGINT_VALID.nil? … … 85 69 86 70 # 87 # å²è¾¼ã¿çªå·ã¨å²è¾¼ã¿ãã³ãã©çªå·ã®å¤æãã¼ãã«ã®ä½æ71 # 割込み番号と割込みハンドラ番号の変換テーブルの作成 88 72 # 89 73 if $INTNO_ATTISR_VALID.length != $INHNO_ATTISR_VALID.length … … 101 85 102 86 # 103 # å²è¾¼ã¿è¦æ±ã©ã¤ã³ã«é¢ããã¨ã©ã¼ãã§ãã¯87 # 割込み要求ラインに関するエラーチェック 104 88 # 105 89 $cfgData[:CFG_INT].each do |key, params| 106 # intno ãå²è¾¼ã¿çªå·ã¨ãã¦æ£ãããªãå ´åï¼E_PARï¼ï¼»NGKI2972ï¼½90 # intnoが割込み番号として正しくない場合(E_PAR)[NGKI2972] 107 91 if $INTNO_VALID.index(params[:intno]).nil? 108 92 error_illegal("E_PAR", params, :intno) 109 93 end 110 94 111 # intatr ãç¡å¹ã®å ´åï¼E_RSATRï¼ï¼»NGKI2969ï¼½112 # ï¼TA_ENAINTï¼TA_EDGEï¼TARGET_INTATR以å¤ã®ããããã»ããããã¦ããå ´åï¼95 # intatrが無効の場合(E_RSATR)[NGKI2969] 96 #(TA_ENAINT,TA_EDGE,TARGET_INTATR以外のビットがセットされている場合) 113 97 if (params[:intatr] & ~($TA_ENAINT|$TA_EDGE|$TARGET_INTATR)) != 0 114 98 error_illegal_sym("E_RSATR", params, :intatr, :intno) 115 99 end 116 100 117 # intpriãCFG_INTã«å¯¾ããå²è¾¼ã¿åªå 118 度ã¨ãã¦æ£ãããªãå ´åï¼E_PARï¼ 119 # ï¼»NGKI2973ï¼½ 101 # intpriがCFG_INTに対する割込み優先度として正しくない場合(E_PAR) 102 # [NGKI2973] 120 103 if $INTPRI_CFGINT_VALID.index(params[:intpri]).nil? 121 104 error_illegal_sym("E_OBJ", params, :intpri, :intno) 122 105 end 123 106 124 # ã«ã¼ãã«ç®¡çå¤ã«åºå®ããã¦ããintnoã«å¯¾ãã¦ï¼intpriã«TMIN_INTPRIã125 # ããå°ããå¤ãæå®ãããªãã£ãå ´åï¼E_OBJï¼ï¼»NGKI2983ï¼½107 # カーネル管理外に固定されているintnoに対して,intpriにTMIN_INTPRIよ 108 # りも小さい値が指定されなかった場合(E_OBJ)[NGKI2983] 126 109 if !$INTNO_FIX_NONKERNEL.nil? 127 110 if !$INTNO_FIX_NONKERNEL.index(params[:intno]).nil? … … 133 116 end 134 117 135 # ã«ã¼ãã«ç®¡çã«åºå®ããã¦ããintnoã«å¯¾ãã¦ï¼intpriã«TMIN_INTPRIãã136 # ãå°ããå¤ãæå®ãããå ´åï¼E_OBJï¼ï¼»NGKI2984ï¼½118 # カーネル管理に固定されているintnoに対して,intpriにTMIN_INTPRIより 119 # も小さい値が指定された場合(E_OBJ)[NGKI2984] 137 120 if !$INTNO_FIX_KERNEL.nil? 138 121 if !$INTNO_FIX_KERNEL.index(params[:intno]).nil? … … 146 129 147 130 # 148 # å²è¾¼ã¿ãã³ãã©ã«é¢ããã¨ã©ã¼ãã§ãã¯131 # 割込みハンドラに関するエラーチェック 149 132 # 150 133 $cfgData[:DEF_INH].each do |key, params| 151 # inhno ãå²è¾¼ã¿ãã³ãã©çªå·ã¨ãã¦æ£ãããªãå ´åï¼E_PARï¼ï¼»NGKI3055ï¼½134 # inhnoが割込みハンドラ番号として正しくない場合(E_PAR)[NGKI3055] 152 135 if $INHNO_VALID.index(params[:inhno]).nil? 153 136 error_illegal("E_PAR", params, :inhno) 154 137 end 155 138 156 # inhatr ãç¡å¹ã®å ´åï¼E_RSATRï¼ï¼»NGKI3052ï¼½157 # ï¼TARGET_INHATR以å¤ã®ããããã»ããããã¦ããå ´åï¼139 # inhatrが無効の場合(E_RSATR)[NGKI3052] 140 #(TARGET_INHATR以外のビットがセットされている場合) 158 141 if (params[:inhatr] & ~($TARGET_INHATR)) != 0 159 142 error_illegal_sym("E_RSATR", params, :inhatr, :inhno) 160 143 end 161 144 162 # ã«ã¼ãã«ç®¡çå¤ã«åºå®ããã¦ããinhnoã«å¯¾ãã¦ï¼inhatrã«TA_NONKERNELã163 # æå®ããã¦ããªãå ´åï¼E_RSATRï¼ï¼»NGKI3067ï¼½145 # カーネル管理外に固定されているinhnoに対して,inhatrにTA_NONKERNELが 146 # 指定されていない場合(E_RSATR)[NGKI3067] 164 147 if !$INHNO_FIX_NONKERNEL.nil? 165 148 if !$INHNO_FIX_NONKERNEL.index(params[:inhno]).nil? … … 171 154 end 172 155 173 # ã«ã¼ãã«ç®¡çã«åºå®ããã¦ããinhnoã«å¯¾ãã¦ï¼inhatrã«TA_NONKERNELãæ174 # å®ããã¦ããå ´åï¼E_RSATRï¼ï¼»NGKI3068ï¼½156 # カーネル管理に固定されているinhnoに対して,inhatrにTA_NONKERNELが指 157 # 定されている場合(E_RSATR)[NGKI3068] 175 158 if !$INHNO_FIX_KERNEL.nil? 176 159 if !$INHNO_FIX_KERNEL.index(params[:inhno]).nil? … … 185 168 intnoVal = $toIntnoVal[params[:inhno].val] 186 169 187 # inhno ã«å¯¾å¿ããintnoã«å¯¾ããCFG_INTããªãå ´åï¼E_OBJï¼ï¼»NGKI3062ï¼½170 # inhnoに対応するintnoに対するCFG_INTがない場合(E_OBJ)[NGKI3062] 188 171 if !$cfgData[:CFG_INT].has_key?(intnoVal) 189 172 error_ercd("E_OBJ", params, "intno `#{intnoVal}' corresponding to " \ … … 192 175 intnoParams = $cfgData[:CFG_INT][intnoVal] 193 176 if (params[:inhatr] & $TA_NONKERNEL) == 0 194 # inhatrã«TA_NONKERNELãæå®ããã¦ãããï¼inhnoã«å¯¾å¿ããintno 195 # ã«å¯¾ãã¦CFG_INTã§è¨å®ãããå²è¾¼ã¿åªå 196 度ãTMIN_INTPRIãããå° 197 # ããå ´åï¼E_OBJï¼ï¼»NGKI3065ï¼½ 177 # inhatrにTA_NONKERNELが指定されておらず,inhnoに対応するintno 178 # に対してCFG_INTで設定された割込み優先度がTMIN_INTPRIよりも小 179 # さい場合(E_OBJ)[NGKI3065] 198 180 if intnoParams[:intpri] < $TMIN_INTPRI 199 181 error_ercd("E_OBJ", params, "intpri `#{intnoParams[:intpri]}' " \ … … 201 183 end 202 184 else 203 # inhatrã«TA_NONKERNELãæå®ããã¦ããï¼inhnoã«å¯¾å¿ããintnoã« 204 # 対ãã¦CFG_INTã§è¨å®ãããå²è¾¼ã¿åªå 205 度ãTMIN_INTPRI以ä¸ã§ãã 206 # å ´åï¼E_OBJï¼ï¼»NGKI3066ï¼½ 185 # inhatrにTA_NONKERNELが指定されており,inhnoに対応するintnoに 186 # 対してCFG_INTで設定された割込み優先度がTMIN_INTPRI以上である 187 # 場合(E_OBJ)[NGKI3066] 207 188 if intnoParams[:intpri] >= $TMIN_INTPRI 208 189 error_ercd("E_OBJ", params, "intpri `#{intnoParams[:intpri]}' " \ … … 215 196 216 197 # 217 # å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ï¼ISRï¼ã«é¢ããã¨ã©ã¼ãã§ãã¯198 # 割込みサービスルーチン(ISR)に関するエラーチェック 218 199 # 219 200 $cfgData[:ATT_ISR].sort.each do |key, params| 220 # isratr ãç¡å¹ã®å ´åï¼E_RSATRï¼ï¼»NGKI2998ï¼½221 # ï¼TARGET_ISRATR以å¤ã®ããããã»ããããã¦ããå ´åï¼201 # isratrが無効の場合(E_RSATR)[NGKI2998] 202 #(TARGET_ISRATR以外のビットがセットされている場合) 222 203 if (params[:isratr] & ~($TARGET_ISRATR)) != 0 223 204 error_illegal("E_RSATR", params, "isratr") 224 205 end 225 206 226 # intno ãATT_ISRã«å¯¾ããå²è¾¼ã¿çªå·ã¨ãã¦æ£ãããªãå ´åï¼E_PARï¼227 # ï¼»NGKI3003ï¼½207 # intnoがATT_ISRに対する割込み番号として正しくない場合(E_PAR) 208 # [NGKI3003] 228 209 if $INTNO_ATTISR_VALID.index(params[:intno]).nil? 229 210 error_illegal("E_PAR", params, "intno") 230 211 end 231 212 232 # (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI) ã§ãªãå ´åï¼E_PARï¼233 # ï¼»NGKI3005ï¼½213 # (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)でない場合(E_PAR) 214 # [NGKI3005] 234 215 if !($TMIN_ISRPRI <= params[:isrpri] && params[:isrpri] <= $TMAX_ISRPRI) 235 216 error_illegal("E_PAR", params, "isrpri") … … 238 219 239 220 $INTNO_ATTISR_VALID.each do |intnoVal| 240 # å²è¾¼ã¿çªå·intnoã«å¯¾ãã¦ç»é²ãããISRã®ãªã¹ãã®ä½æ221 # 割込み番号intnoに対して登録されたISRのリストの作成 241 222 isrParamsList = [] 242 223 $cfgData[:ATT_ISR].sort.each do |key, params| … … 246 227 end 247 228 248 # å²è¾¼ã¿çªå·intnoã«å¯¾ãã¦ç»é²ãããISRãåå¨ããå ´å229 # 割込み番号intnoに対して登録されたISRが存在する場合 249 230 if isrParamsList.size > 0 250 231 inhnoVal = $toInhnoVal[intnoVal] 251 232 252 # intno ã«å¯¾å¿ããinhnoã«å¯¾ãã¦DEF_INHãããå ´åï¼E_OBJï¼ï¼»NGKI3013ï¼½233 # intnoに対応するinhnoに対してDEF_INHがある場合(E_OBJ)[NGKI3013] 253 234 if $cfgData[:DEF_INH].has_key?(inhnoVal) 254 235 inhnoParams = $cfgData[:DEF_INH][inhnoVal] … … 257 238 end 258 239 259 # intno ã«å¯¾ããCFG_INTããªãå ´åï¼E_OBJï¼ï¼»NGKI3012ï¼½240 # intnoに対するCFG_INTがない場合(E_OBJ)[NGKI3012] 260 241 if !$cfgData[:CFG_INT].has_key?(intnoVal) 261 242 error_ercd("E_OBJ", isrParamsList[0], "%%intno in %apiname " \ … … 264 245 intnoParams = $cfgData[:CFG_INT][intnoVal] 265 246 266 # intnoã«å¯¾ãã¦CFG_INTã§è¨å®ãããå²è¾¼ã¿åªå 267 度ãTMIN_INTPRIããã 268 # å°ããå ´åï¼E_OBJï¼ï¼»NGKI3014ï¼½ 247 # intnoに対してCFG_INTで設定された割込み優先度がTMIN_INTPRIよりも 248 # 小さい場合(E_OBJ)[NGKI3014] 269 249 if intnoParams[:intpri] < $TMIN_INTPRI 270 250 error_ercd("E_OBJ", isrParamsList[0], … … 277 257 278 258 # 279 # å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ï¼ISRï¼ç®¡çã®ãã¼ã¿æ§é259 # 割込みサービスルーチン(ISR)管理のデータ構造 280 260 # 281 261 intnoIsrList = [] … … 313 293 314 294 # 315 # å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ï¼ISRï¼å¼åºãã®ããã®å²è¾¼ã¿ãã³ãã©295 # 割込みサービスルーチン(ISR)呼出しのための割込みハンドラ 316 296 # 317 297 intnoIsrList.each do |intnoVal| 318 298 inhnoVal = $toInhnoVal[intnoVal] 319 299 320 # 次ã®DEF_INHã«ç¸å½ãããã¼ã¿ãçæ300 # 次のDEF_INHに相当するデータを生成 321 301 # DEF_INH(inhno, { TA_NULL, _kernel_inthdr_<intno> } ); 322 302 $cfgData[:DEF_INH][inhnoVal] = { … … 326 306 } 327 307 328 # å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ç¨ã®å²è¾¼ã¿ãã³ãã©308 # 割込みサービスルーチン用の割込みハンドラ 329 309 $kernelCfgC.add("void") 330 310 $kernelCfgC.add("_kernel_inthdr_#{intnoVal}(void)") … … 337 317 338 318 # 339 # å²è¾¼ã¿ãµã¼ãã¹ã«ã¼ãã³ã«é¢ããä¸è¬çãªæ 340 å ±ã®çæ 319 # 割込みサービスルーチンに関する一般的な情報の生成 341 320 # 342 321 class IsrObject … … 346 325 347 326 def generate() 348 # AID_ISR ã®å¦ç327 # AID_ISRの処理 349 328 numAutoObjid = 0 350 329 $cfgData[:AID_ISR].each do |key, params| … … 353 332 numObjid = $cfgData[:ATT_ISR].size + numAutoObjid 354 333 355 # kernel_cfg.h ã®çæ334 # kernel_cfg.hの生成 356 335 $kernelCfgH.add("#define TNUM_ISRID\t#{numAutoObjid}") 357 336 358 # ãªãã¸ã§ã¯ãã®IDçªå·ã®ãã¯ãå®ç¾©ã®çæ337 # オブジェクトのID番号のマクロ定義の生成 359 338 $cfgData[:ATT_ISR].sort.each do |key, params| 360 339 if params[:isrid] … … 364 343 $kernelCfgH.add() 365 344 366 # ãªãã¸ã§ã¯ãã®IDçªå·ãä¿æããå¤æ°345 # オブジェクトのID番号を保持する変数 367 346 if $USE_EXTERNAL_ID 368 347 $cfgData[:ATT_ISR].sort.each do |key, params| … … 375 354 end 376 355 377 # éçã«çæããããªãã¸ã§ã¯ãã®æ°356 # 静的に生成されたオブジェクトの数 378 357 $kernelCfgC.add("#define TNUM_SISR\t#{$cfgData[:ATT_ISR].size}") 379 358 $kernelCfgC.add("#define TNUM_ISR\t#{numObjid}") 380 359 381 # ãªãã¸ã§ã¯ãIDçªå·ã®æ大å¤360 # オブジェクトID番号の最大値 382 361 $kernelCfgC.add("const ID _kernel_tmax_isrid" \ 383 362 " = (TMIN_ISRID + TNUM_ISRID - 1);") 384 363 $kernelCfgC.add("const uint_t _kernel_tnum_sisr = TNUM_SISR;") 385 364 386 # ãã¼ã¿æ§é365 # データ構造 387 366 if $cfgData[:ATT_ISR].size > 0 388 # äºåæºåï¼ã¨ã©ã¼ãã§ãã¯ï¼ã¡ã¢ãªé åã®çæï¼367 # 事前準備(エラーチェック,メモリ領域の生成) 389 368 $cfgData[:ATT_ISR].sort.each do |key, params| 390 369 prepare(key, params) 391 370 end 392 371 393 # ãªãã¸ã§ã¯ãå 394 ¨ä½ã«å¯¾ãã¦å¿ 395 è¦ãªã¡ã¢ãªé åã®çæï¼ãªãã·ã§ã³ï¼ 372 # オブジェクト全体に対して必要なメモリ領域の生成(オプション) 396 373 if respond_to?(:generateData) 397 374 generateData() 398 375 end 399 376 400 # ãªãã¸ã§ã¯ãåæåãããã¯ã®çæ377 # オブジェクト初期化ブロックの生成 401 378 $kernelCfgC.add("const ISRINIB _kernel_sisrinib_table" \ 402 379 "[TNUM_SISR] = {") … … 412 389 end 413 390 414 # åççæãªãã¸ã§ã¯ãç¨ã®ãªãã¸ã§ã¯ãåæåãããã¯391 # 動的生成オブジェクト用のオブジェクト初期化ブロック 415 392 @inibList.each do |type, array| 416 393 if numAutoObjid > 0 … … 422 399 423 400 if numObjid > 0 424 # ãªãã¸ã§ã¯ã管çãããã¯ã®çæ401 # オブジェクト管理ブロックの生成 425 402 $kernelCfgC.add2("ISRCB _kernel_isrcb_table" \ 426 403 "[TNUM_ISR];") 427 404 428 # ãªãã¸ã§ã¯ãåæåé¢æ°ã®è¿½å405 # オブジェクト初期化関数の追加 429 406 $initializeFunctions.push("_kernel_initialize_isr();") 430 407 else … … 435 412 436 413 def prepare(key, params) 437 # ã¨ã©ã¼ãã§ãã¯ã¯å®æ½æ¸ã¿ãªã®ã§ï¼ããã§ã®å¦çã¯ä¸è¦414 # エラーチェックは実施済みなので,ここでの処理は不要 438 415 end 439 416 … … 448 425 449 426 # 450 # å²è¾¼ã¿ãã³ãã©ã®ããã®æ¨æºçãªåæåæ 451 å ±ã®çæ 427 # 割込みハンドラのための標準的な初期化情報の生成 452 428 # 453 429 if !$OMIT_INITIALIZE_INTERRUPT || $USE_INHINIB_TABLE 454 430 # 455 # å®ç¾©ããå²è¾¼ã¿ãã³ãã©ã®æ°431 # 定義する割込みハンドラの数 456 432 # 457 433 $kernelCfgC.add(<<EOS) … … 462 438 if $cfgData[:DEF_INH].size != 0 463 439 # 464 # å²è¾¼ã¿ãã³ãã©ã®ã¨ã³ããª440 # 割込みハンドラのエントリ 465 441 # 466 442 $cfgData[:DEF_INH].each do |key, params| … … 473 449 474 450 # 475 # å²è¾¼ã¿ãã³ãã©åæåãããã¯451 # 割込みハンドラ初期化ブロック 476 452 # 477 453 $kernelCfgC.add("const INHINIB _kernel_inhinib_table[TNUM_INHNO] = {") … … 495 471 496 472 # 497 # å²è¾¼ã¿è¦æ±ã©ã¤ã³ã®ããã®æ¨æºçãªåæåæ 498 å ±ã®çæ 473 # 割込み要求ラインのための標準的な初期化情報の生成 499 474 # 500 475 if !$OMIT_INITIALIZE_INTERRUPT || $USE_INTINIB_TABLE 501 476 # 502 # è¨å®ããå²è¾¼ã¿è¦æ±ã©ã¤ã³ã®æ°477 # 設定する割込み要求ラインの数 503 478 # 504 479 $kernelCfgC.add(<<EOS) … … 508 483 509 484 # 510 # å²è¾¼ã¿è¦æ±ã©ã¤ã³åæåãããã¯485 # 割込み要求ライン初期化ブロック 511 486 # 512 487 if $cfgData[:CFG_INT].size != 0 … … 526 501 527 502 # 528 # å²è¾¼ã¿ç®¡çæ©è½åæåé¢æ°ã®è¿½å503 # 割込み管理機能初期化関数の追加 529 504 # 530 505 $initializeFunctions.push("_kernel_initialize_interrupt();") -
Property svn:mime-type
changed from
Note:
See TracChangeset
for help on using the changeset viewer.