Ignore:
Timestamp:
May 2, 2017, 5:55:20 PM (7 years ago)
Author:
nmir-saito
Message:

Tracのソース閲覧時に文字化けするためmimetypewo

File:
1 edited

Legend:

Unmodified
Added
Removed
  • rubycfg_ssp/trunk/interrupt.trb

    • Property svn:mime-type set to text/plain; charset=utf-8
    r284 r285  
    1111#              Nagoya Municipal Industrial Research Institute, JAPAN
    1212#
    13 #   ä¸Šè¨˜è‘—作権è€
    14 ã¯ï¼Œä»¥ä¸‹ã®(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
    15 #   ã‚¢ï¼ˆæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‚’改変したものを含む.以下同じ)を使用・複製・改
    16 #   å¤‰ãƒ»å†é
    17 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    18 #   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    19 #       æ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定が,そのままの形でソー
    20 #       ã‚¹ã‚³ãƒ¼ãƒ‰ä¸­ã«å«ã¾ã‚Œã¦ã„ること.
    21 #   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    22 #       ç”¨ã§ãã‚‹å½¢ã§å†é
    23 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    24 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    25 #       è€
    26 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    27 #       ã®ç„¡ä¿è¨¼è¦å®šã‚’掲載すること.
    28 #   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    29 #       ç”¨ã§ããªã„形で再é
    30 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    31 #       ã¨ï¼Ž
    32 #     (a) 再é
    33 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    34 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    35 #         ä½œæ¨©è¡¨ç¤ºï¼Œã“の利用条件および下記の無保証規定を掲載すること.
    36 #     (b) 再é
    37 å¸ƒã®å½¢æ
    38 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    39 #         å ±å‘Šã™ã‚‹ã“と.
    40 #   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    41 #       å®³ã‹ã‚‰ã‚‚,上記著作権è€
    42 ãŠã‚ˆã³TOPPERSプロジェクトをå
    43 è²¬ã™ã‚‹ã“と.
    44 #       ã¾ãŸï¼Œæœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ãƒ¦ãƒ¼ã‚¶ã¾ãŸã¯ã‚¨ãƒ³ãƒ‰ãƒ¦ãƒ¼ã‚¶ã‹ã‚‰ã®ã„かなる理
    45 #       ç”±ã«åŸºã¥ãè«‹æ±‚からも,上記著作権è€
    46 ãŠã‚ˆã³TOPPERSプロジェクトを
    47 #       å
    48 è²¬ã™ã‚‹ã“と.
    49 #
    50 #   æœ¬ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã¯ï¼Œç„¡ä¿è¨¼ã§æä¾›ã•ã‚Œã¦ã„るものである.上記著作権è€
    51 ãŠ
    52 #   ã‚ˆã³TOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    53 #   ã«å¯¾ã™ã‚‹é©åˆæ€§ã‚‚含めて,いかなる保証も行わない.また,本ソフトウェ
    54 #   ã‚¢ã®åˆ©ç”¨ã«ã‚ˆã‚Šç›´æŽ¥çš„または間接的に生じたいかなる損害に関しても,そ
    55 #   ã®è²¬ä»»ã‚’負わない.
     13#   上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     14#   ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     15#   変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     16#   (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     17#       権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     18#       スコード中に含まれていること.
     19#   (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     20#       用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     21#       者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     22#       の無保証規定を掲載すること.
     23#   (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     24#       用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     25#       と.
     26#     (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     27#         作権表示,この利用条件および下記の無保証規定を掲載すること.
     28#     (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     29#         報告すること.
     30#   (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     31#       害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     32#       また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     33#       由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     34#       免責すること.
     35#
     36#   本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     37#   よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     38#   に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     39#   アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     40#   の責任を負わない.
    5641#
    5742#   $Id: interrupt.trb 678 2016-03-06 02:36:09Z ertl-hiro $
     
    5944
    6045#
    61 #               å‰²è¾¼ã¿ç®¡ç†æ©Ÿèƒ½ã®ç”Ÿæˆã‚¹ã‚¯ãƒªãƒ—ト
     46#               割込み管理機能の生成スクリプト
    6247#
    6348
     
    6550
    6651#
    67 ãƒˆãƒ¬ãƒ¼ã‚¹ãƒ­ã‚°ãƒžã‚¯ãƒ­ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå®šç¾©
     52トレースログマクロのデフォルト定義
    6853#
    6954$kernelCfgC.add(<<EOS)
     
    7863
    7964#
    80 #  CRE_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号のデ
    81 ãƒ•ã‚©ãƒ«ãƒˆå®šç¾©
     65#  CRE_ISRで使用できる割込み番号とそれに対応する割込みハンドラ番号のデ
     66フォルト定義
    8267#
    8368if $INTNO_CREISR_VALID.nil?
     
    8974
    9075#
    91 #  CFG_INTで使用できる割込み優å
    92 ˆåº¦ã®ãƒ‡ãƒ•ã‚©ãƒ«ãƒˆå®šç¾©
     76#  CFG_INTで使用できる割込み優先度のデフォルト定義
    9377#
    9478if $INTPRI_CFGINT_VALID.nil?
     
    9781
    9882#
    99 å‰²è¾¼ã¿ç•ªå·ã¨å‰²è¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ç•ªå·ã®å¤‰æ›ãƒ†ãƒ¼ãƒ–ルの作成
     83割込み番号と割込みハンドラ番号の変換テーブルの作成
    10084#
    10185if $INTNO_CREISR_VALID.length != $INHNO_CREISR_VALID.length
     
    11397
    11498#
    115 å‰²è¾¼ã¿è¦æ±‚ラインに関するエラーチェック
     99割込み要求ラインに関するエラーチェック
    116100#
    117101$cfgData[:CFG_INT].each do |key, params|
    118   #     intnoが割込み番号として正しくない場合(E_PAR)
     102  #     intnoが割込み番号として正しくない場合(E_PAR)
    119103  if $INTNO_VALID.index(params[:intno]).nil?
    120104    error_illegal("E_PAR", params, :intno)
    121105  end
    122106
    123   #     intatrが無効の場合(E_RSATR)
    124   #(TA_ENAINT,TA_EDGE,TARGET_INTATR以外のビットがセットされている場合)
     107  #     intatrが無効の場合(E_RSATR)
     108  #(TA_ENAINT,TA_EDGE,TARGET_INTATR以外のビットがセットされている場合)
    125109  if (params[:intatr] & ~($TA_ENAINT|$TA_EDGE|$TARGET_INTATR)) != 0
    126110    error_illegal_sym("E_RSATR", params, :intatr, :intno)
    127111  end
    128112
    129   #     intpriがCFG_INTに対する割込み優å
    130 ˆåº¦ã¨ã—て正しくない場合(E_PAR)
     113  #     intpriがCFG_INTに対する割込み優先度として正しくない場合(E_PAR)
    131114  if $INTPRI_CFGINT_VALID.index(params[:intpri]).nil?
    132115    error_illegal_sym("E_PAR", params, :intpri, :intno)
    133116  end
    134117
    135   # カーネル管理外に固定されているintnoに対して,intpriにTMIN_INTPRIよ
    136   #     ã‚Šã‚‚小さい値が指定されなかった場合(E_OBJ)
     118  # カーネル管理外に固定されているintnoに対して,intpriにTMIN_INTPRIよ
     119  #     りも小さい値が指定されなかった場合(E_OBJ)
    137120  if !$INTNO_FIX_NONKERNEL.nil?
    138121    if !$INTNO_FIX_NONKERNEL.index(params[:intno]).nil?
     
    144127  end
    145128
    146   #     ã‚«ãƒ¼ãƒãƒ«ç®¡ç†ã«å›ºå®šã•ã‚Œã¦ã„ã‚‹intnoに対して,intpriにTMIN_INTPRIより
    147   #     ã‚‚小さい値が指定された場合(E_OBJ)
     129  #     カーネル管理に固定されているintnoに対して,intpriにTMIN_INTPRIより
     130  #     も小さい値が指定された場合(E_OBJ)
    148131  if !$INTNO_FIX_KERNEL.nil?
    149132    if !$INTNO_FIX_KERNEL.index(params[:intno]).nil?
     
    157140
    158141#
    159 å‰²è¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ã«é–¢ã™ã‚‹ã‚¨ãƒ©ãƒ¼ãƒã‚§ãƒƒã‚¯
     142割込みハンドラに関するエラーチェック
    160143#
    161144$cfgData[:DEF_INH].each do |key, params|
    162   # inhnoが割込みハンドラ番号として正しくない場合(E_PAR)
     145  # inhnoが割込みハンドラ番号として正しくない場合(E_PAR)
    163146  if $INHNO_VALID.index(params[:inhno]).nil?
    164147    error_illegal("E_PAR", params, :inhno)
    165148  end
    166149
    167   # inhatrが無効の場合(E_RSATR)
    168   #(TARGET_INHATR以外のビットがセットされている場合)
     150  # inhatrが無効の場合(E_RSATR)
     151  #(TARGET_INHATR以外のビットがセットされている場合)
    169152  if (params[:inhatr] & ~($TARGET_INHATR)) != 0
    170153    error_illegal_sym("E_RSATR", params, :inhatr, :inhno)
    171154  end
    172155
    173   #     ã‚«ãƒ¼ãƒãƒ«ç®¡ç†å¤–に固定されているinhnoに対して,inhatrにTA_NONKERNELが
    174   #     æŒ‡å®šã•ã‚Œã¦ã„ない場合(E_RSATR)
     156  #     カーネル管理外に固定されているinhnoに対して,inhatrにTA_NONKERNELが
     157  #     指定されていない場合(E_RSATR)
    175158  if !$INHNO_FIX_NONKERNEL.nil?
    176159    if !$INHNO_FIX_NONKERNEL.index(params[:inhno]).nil?
     
    182165  end
    183166
    184   #     ã‚«ãƒ¼ãƒãƒ«ç®¡ç†ã«å›ºå®šã•ã‚Œã¦ã„ã‚‹inhnoに対して,inhatrにTA_NONKERNELが指
    185   #     å®šã•ã‚Œã¦ã„る場合(E_RSATR)
     167  #     カーネル管理に固定されているinhnoに対して,inhatrにTA_NONKERNELが指
     168  #     定されている場合(E_RSATR)
    186169  if !$INHNO_FIX_KERNEL.nil?
    187170    if !$INHNO_FIX_KERNEL.index(params[:inhno]).nil?
     
    196179    intnoVal = $toIntnoVal[params[:inhno].val]
    197180
    198     # inhnoに対応するintnoに対するCFG_INTがない場合(E_OBJ)
     181    # inhnoに対応するintnoに対するCFG_INTがない場合(E_OBJ)
    199182    if !$cfgData[:CFG_INT].has_key?(intnoVal)
    200183      error_ercd("E_OBJ", params, "intno `#{intnoVal}' corresponding to " \
     
    203186      intnoParams = $cfgData[:CFG_INT][intnoVal]
    204187      if (params[:inhatr] & $TA_NONKERNEL) == 0
    205         # inhatrにTA_NONKERNELが指定されておらず,inhnoに対応するintno
    206         # に対してCFG_INTで設定された割込み優å
    207 ˆåº¦ãŒTMIN_INTPRIよりも小
    208         # さい場合(E_OBJ)
     188        # inhatrにTA_NONKERNELが指定されておらず,inhnoに対応するintno
     189        # に対してCFG_INTで設定された割込み優先度がTMIN_INTPRIよりも小
     190        # さい場合(E_OBJ)
    209191        if intnoParams[:intpri] < $TMIN_INTPRI
    210192          error_ercd("E_OBJ", params, "intpri `#{intnoParams[:intpri]}' " \
     
    212194        end
    213195      else
    214         # inhatrにTA_NONKERNELが指定されており,inhnoに対応するintnoに
    215         # 対してCFG_INTで設定された割込み優å
    216 ˆåº¦ãŒTMIN_INTPRI以上である
    217         # 場合(E_OBJ)
     196        # inhatrにTA_NONKERNELが指定されており,inhnoに対応するintnoに
     197        # 対してCFG_INTで設定された割込み優先度がTMIN_INTPRI以上である
     198        # 場合(E_OBJ)
    218199        if intnoParams[:intpri] >= $TMIN_INTPRI
    219200          error_ercd("E_OBJ", params, "intpri `#{intnoParams[:intpri]}' " \
     
    226207
    227208#
    228 å‰²è¾¼ã¿ã‚µãƒ¼ãƒ“スルーチン(ISR)に関するエラーチェックと割込みハンドラの生成
     209割込みサービスルーチン(ISR)に関するエラーチェックと割込みハンドラの生成
    229210#
    230211$cfgData[:ATT_ISR].sort.each do |key, params|
    231   #     isratrが無効の場合(E_RSATR)
    232   #(TARGET_ISRATR以外のビットがセットされている場合)
     212  #     isratrが無効の場合(E_RSATR)
     213  #(TARGET_ISRATR以外のビットがセットされている場合)
    233214  if (params[:isratr] & ~($TARGET_ISRATR)) != 0
    234215    error_illegal("E_RSATR", params, "isratr")
    235216  end
    236217
    237   #     intnoがATT_ISRに対する割込み番号として正しくない場合(E_PAR)
     218  #     intnoがATT_ISRに対する割込み番号として正しくない場合(E_PAR)
    238219  if $INTNO_ATTISR_VALID.index(params[:intno]).nil?
    239220    error_illegal("E_PAR", params, "intno")
    240221  end
    241222
    242   #     (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)でない場合(E_PAR)
     223  #     (TMIN_ISRPRI <= isrpri && isrpri <= TMAX_ISRPRI)でない場合(E_PAR)
    243224  if !($TMIN_ISRPRI <= params[:isrpri] && params[:isrpri] <= $TMAX_ISRPRI)
    244225    error_illegal("E_PAR", params, "isrpri")
     
    247228
    248229$INTNO_ATTISR_VALID.each do |intnoVal|
    249   # 割込み番号intnoに対して登録されたISRのリストの作成
     230  # 割込み番号intnoに対して登録されたISRのリストの作成
    250231  isrParamsList = []
    251232  $cfgData[:ATT_ISR].sort.each do |key, params|
     
    255236  end
    256237
    257   #     å‰²è¾¼ã¿ç•ªå·intnoに対して登録されたISRが存在する場合
     238  #     割込み番号intnoに対して登録されたISRが存在する場合
    258239  if isrParamsList.size > 0
    259240    inhnoVal = $toInhnoVal[intnoVal]
    260241
    261     # intnoに対応するinhnoに対してDEF_INHがある場合(E_OBJ)
     242    # intnoに対応するinhnoに対してDEF_INHがある場合(E_OBJ)
    262243    if $cfgData[:DEF_INH].has_key?(inhnoVal)
    263244      inhnoParams = $cfgData[:DEF_INH][inhnoVal]
     
    266247    end
    267248
    268     # intnoに対するCFG_INTがない場合(E_OBJ)
     249    # intnoに対するCFG_INTがない場合(E_OBJ)
    269250    if !$cfgData[:CFG_INT].has_key?(intnoVal)
    270251      error_ercd("E_OBJ", isrParamsList[0], "%%intno in %apiname " \
     
    273254      intnoParams = $cfgData[:CFG_INT][intnoVal]
    274255
    275       # intnoに対してCFG_INTで設定された割込み優å
    276 ˆåº¦ãŒTMIN_INTPRIよりも
    277       # 小さい場合(E_OBJ)
     256      # intnoに対してCFG_INTで設定された割込み優先度がTMIN_INTPRIよりも
     257      # 小さい場合(E_OBJ)
    278258      if intnoParams[:intpri] < $TMIN_INTPRI
    279259        error_ercd("E_OBJ", isrParamsList[0],
     
    283263    end
    284264
    285     # 次のDEF_INHに相当するデータを生成
     265    # 次のDEF_INHに相当するデータを生成
    286266    # DEF_INH(inhno, { TA_NULL, _kernel_inthdr_<intno> } );
    287267    $cfgData[:DEF_INH][inhnoVal] = {
     
    291271    }
    292272
    293     # 割込みサービスルーチン用の割込みハンドラ
     273    # 割込みサービスルーチン用の割込みハンドラ
    294274    $kernelCfgC.add("void")
    295275    $kernelCfgC.add("_kernel_inthdr_#{intnoVal}(void)")
     
    305285    end
    306286
    307     # 割込みサービスルーチンを優å
    308 ˆåº¦é †ã«å‘¼ã³å‡ºã™
    309     i = 0               # stable sortを行うための変数
     287    # 割込みサービスルーチンを優先度順に呼び出す
     288    i = 0               # stable sortを行うための変数
    310289    isrParamsList.sort_by {|params| [ params[:isrpri].val, i += 1 ]} \
    311290                                                                                .each_with_index do |params, index|
     
    328307
    329308#
    330 #  割込みハンドラのための標準的な初期化æƒ
    331 å ±ã®ç”Ÿæˆ
     309#  割込みハンドラのための標準的な初期化情報の生成
    332310#
    333311if !$OMIT_INITIALIZE_INTERRUPT || $USE_INHINIB_TABLE
    334312  #
    335   #  定義する割込みハンドラの数
     313  #  定義する割込みハンドラの数
    336314  #
    337315  $kernelCfgC.add(<<EOS)
     
    342320  if $cfgData[:DEF_INH].size != 0
    343321    #
    344     #  割込みハンドラのエントリ
     322    #  割込みハンドラのエントリ
    345323    #
    346324    $cfgData[:DEF_INH].each do |key, params|
     
    351329
    352330    #
    353     #  割込みハンドラ初期化ブロック
     331    #  割込みハンドラ初期化ブロック
    354332    #
    355333    $kernelCfgC.append("const INHNO\t_kernel_inhinib_inhno[TNUM_INHNO] = {")
     
    381359
    382360#
    383 #  割込み要求ラインのための標準的な初期化æƒ
    384 å ±ã®ç”Ÿæˆ
     361#  割込み要求ラインのための標準的な初期化情報の生成
    385362#
    386363if !$OMIT_INITIALIZE_INTERRUPT || $USE_INTINIB_TABLE
    387364
    388365  #
    389   #  設定する割込み要求ラインの数
     366  #  設定する割込み要求ラインの数
    390367  #
    391368  $kernelCfgC.add(<<EOS)
     
    395372
    396373  #
    397   #  割込み要求ライン初期化ブロック
     374  #  割込み要求ライン初期化ブロック
    398375  #
    399376  if $cfgData[:CFG_INT].size != 0
     
    427404
    428405#
    429 å‰²è¾¼ã¿ç®¡ç†æ©Ÿèƒ½åˆæœŸåŒ–関数の追加
     406割込み管理機能初期化関数の追加
    430407#
    431408$initializeFunctions.push("_kernel_initialize_interrupt();")
Note: See TracChangeset for help on using the changeset viewer.