Ignore:
Timestamp:
Mar 8, 2016, 8:37:45 PM (8 years ago)
Author:
coas-nagasima
Message:

MIMEにSJISを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • UsbWattMeter/trunk/asp_dcre/arch/rx630_ccrx/prc_config.h

    • Property svn:mime-type changed from text/x-chdr to text/x-chdr; charset=SHIFT_JIS
    r164 r167  
    1111 *  Copyright (C) 2013      by Mitsuhiro Matsuura
    1212 *
    13  *  ã‹L’˜ìŒ ŽÒ‚́CˆÈ‰º‚Ì(1)`(4)‚ÌðŒ‚ð–ž‚½‚·ê‡‚ÉŒÀ‚èC–{ƒ\ƒtƒgƒEƒF
    14  *  ƒAi–{ƒ\ƒtƒgƒEƒFƒA‚ð‰ü•Ï‚µ‚½‚à‚Ì‚ðŠÜ‚ށDˆÈ‰º“¯‚¶j‚ðŽg—pE•¡»E‰ü
    15  *  •ÏEÄ”z•ziˆÈ‰ºC—˜—p‚ƌĂԁj‚·‚邱‚Ƃ𖳏ž‚Å‹–‘ø‚·‚éD
    16  *  (1) –{ƒ\ƒtƒgƒEƒFƒA‚ðƒ\[ƒXƒR[ƒh‚ÌŒ`‚Å—˜—p‚·‚éê‡‚ɂ́Cã‹L‚Ì’˜ì
    17  *      Œ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’肪C‚»‚Ì‚Ü‚Ü‚ÌŒ`‚Ń\[
    18  *      ƒXƒR[ƒh’†‚ÉŠÜ‚Ü‚ê‚Ä‚¢‚邱‚ƁD
    19  *  (2) –{ƒ\ƒtƒgƒEƒFƒA‚ðCƒ‰ƒCƒuƒ‰ƒŠŒ`Ž®‚ȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    20  *      —p‚Å‚«‚éŒ`‚ōĔz•z‚·‚éê‡‚ɂ́CÄ”z•z‚É”º‚¤ƒhƒLƒ
    21 ƒƒ“ƒgi—˜—p
    22  *      ŽÒƒ}ƒjƒ
    23 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L
    24  *      ‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    25  *  (3) –{ƒ\ƒtƒgƒEƒFƒA‚ðC‹@Ší‚É‘g‚ݍž‚ނȂǁC‘¼‚̃\ƒtƒgƒEƒFƒAŠJ”­‚ÉŽg
    26  *      —p‚Å‚«‚È‚¢Œ`‚ōĔz•z‚·‚éê‡‚ɂ́CŽŸ‚Ì‚¢‚¸‚ê‚©‚ÌðŒ‚ð–ž‚½‚·‚±
    27  *      ‚ƁD
    28  *    (a) Ä”z•z‚É”º‚¤ƒhƒLƒ
    29 ƒƒ“ƒgi—˜—pŽÒƒ}ƒjƒ
    30 ƒAƒ‹‚Ȃǁj‚ɁCã‹L‚Ì’˜
    31  *        ìŒ •\Ž¦C‚±‚Ì—˜—pðŒ‚¨‚æ‚щº‹L‚Ì–³•ÛØ‹K’è‚ðŒfÚ‚·‚邱‚ƁD
    32  *    (b) Ä”z•z‚ÌŒ`‘Ô‚ðC•Ê‚É’è‚ß‚é•û–@‚É‚æ‚Á‚āCTOPPERSƒvƒƒWƒFƒNƒg‚É
    33  *        •ñ‚·‚邱‚ƁD
    34  *  (4) –{ƒ\ƒtƒgƒEƒFƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚é‚¢‚©‚Ȃ鑹
    35  *      ŠQ‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð–Ɛӂ·‚邱‚ƁD
    36  *      ‚Ü‚½C–{ƒ\ƒtƒgƒEƒFƒA‚̃†[ƒU‚Ü‚½‚̓Gƒ“ƒhƒ†[ƒU‚©‚ç‚Ì‚¢‚©‚Ȃ闝
    37  *      —R‚ÉŠî‚­¿‹‚©‚ç‚àCã‹L’˜ìŒ ŽÒ‚¨‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚ð
    38  *      –Ɛӂ·‚邱‚ƁD
     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 *      免責すること.
    3935 *
    40  *  –{ƒ\ƒtƒgƒEƒFƒA‚́C–³•ÛØ‚Å’ñ‹Ÿ‚³‚ê‚Ä‚¢‚é‚à‚Ì‚Å‚ ‚éDã‹L’˜ìŒ ŽÒ‚¨
    41  *  ‚æ‚ÑTOPPERSƒvƒƒWƒFƒNƒg‚́C–{ƒ\ƒtƒgƒEƒFƒA‚ÉŠÖ‚µ‚āC“Á’è‚ÌŽg—p–Ú“I
    42  *  ‚ɑ΂·‚é“K‡«‚àŠÜ‚߂āC‚¢‚©‚È‚é•ÛØ‚às‚í‚È‚¢D‚Ü‚½C–{ƒ\ƒtƒgƒEƒF
    43  *  ƒA‚Ì—˜—p‚É‚æ‚è’¼Ú“I‚Ü‚½‚͊ԐړI‚ɐ¶‚¶‚½‚¢‚©‚Ȃ鑹ŠQ‚ÉŠÖ‚µ‚Ä‚àC‚»
    44  *  ‚̐ӔC‚𕉂í‚È‚¢D
     36 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     37 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     38 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     39 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     40 *  の責任を負わない.
    4541 *
    4642 *  @(#) $Id$
     
    4844
    4945/*
    50  *              ƒvƒƒZƒbƒTˆË‘¶ƒ‚ƒWƒ
    51 [ƒ‹iRX630—pj
    52  *
    53  *  ‚±‚̃Cƒ“ƒNƒ‹[ƒhƒtƒ@ƒCƒ‹‚́Ctarget_config.hi‚Ü‚½‚́C‚»‚±‚©‚çƒCƒ“ƒN
    54  *  ƒ‹[ƒh‚³‚ê‚éƒtƒ@ƒCƒ‹j‚Ì‚Ý‚©‚çƒCƒ“ƒNƒ‹[ƒh‚³‚ê‚éD‘¼‚̃tƒ@ƒCƒ‹‚©‚ç
    55  *  ’¼ÚƒCƒ“ƒNƒ‹[ƒh‚µ‚Ä‚Í‚È‚ç‚È‚¢D
     46 *              プロセッサ依存モジュール(RX630用)
     47 *
     48 *  このインクルードファイルは,target_config.h(または,そこからインク
     49 *  ルードされるファイル)のみからインクルードされる.他のファイルから
     50 *  直接インクルードしてはならない.
    5651 */
    5752
     
    6257
    6358/*
    64  *  ƒvƒƒZƒbƒT‚Ì“ÁŽê–½—߂̃Cƒ“ƒ‰ƒCƒ“ŠÖ”’è‹`
     59 *  プロセッサの特殊命令のインライン関数定義
    6560 */
    6661#include "prc_insn.h"
     
    6964
    7065/*
    71  *  ”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg—p‚̃Xƒ^ƒbƒN‰Šú’l
     66 *  非タスクコンテキスト用のスタック初期値
    7267 */
    7368
     
    7671
    7772/*
    78  *  ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒgƒuƒƒbƒN‚Ì’è‹`
     73 *  タスクコンテキストブロックの定義
    7974 */
    8075typedef struct task_context_block {
    81         void    *sp;            /* ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^ */
    82         FP              pc;                     /* ƒvƒƒOƒ‰ƒ€ƒJƒEƒ“ƒ^ */
     76        void    *sp;            /* スタックポインタ */
     77        FP              pc;                     /* プログラムカウンタ */
    8378} TSKCTXB;
    8479
    8580
    8681/*
    87  *  Š„ž‚Ý”­¶‰ñ”‚ð•Û‘¶‚·‚é•Ï”
     82 *  割込み発生回数を保存する変数
    8883 */
    8984extern uint16_t intnest;
     
    9186
    9287/*
    93  *  CPUƒƒbƒNó‘Ô‚Å‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒN
    94  *
    95  *  TIPM_LOCK‚́CCPUƒƒbƒNó‘Ô‚Å‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒNC‚·‚È‚í‚¿CƒJ[ƒl
    96  *  ƒ‹ŠÇ—ŠO‚Ì‚à‚Ì‚ðœ‚­‚·‚ׂĂ̊„ž‚Ý—v‹‚ðƒ}ƒXƒN‚·‚é’l‚É’è‹`‚·‚éD
    97  *
    98  *  TMIN_INTPRI•ÏX‚·‚邱‚Æ‚ÅŠÇ—ŠOŠ„ž‚Ý‚Ì—L–³‚ðŒˆ’è‚·‚éD
    99  *  —Ⴆ‚ÎTMIN_INTPRI‚ð-14‚ɐݒ肷‚é‚ƁCƒŒƒxƒ‹15‚ÌŠ„ž‚Ý‚ªƒJ[ƒlƒ‹ŠÇ—ŠO‚Æ
    100  *  ‚È‚éDTMIN_INTPRI‚ð-15‚ɐݒ肷‚é‚ƁCNMIˆÈŠO‚ɃJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚Ý‚ð
    101  *  Ý‚¯‚È‚¢‚±‚Æ‚É‚È‚éi‚±‚̏ꍇ‚É‚Í-15‚ɐݒ肷‚邱‚Ƃ𐄏§‚·‚éjD
     88 *  CPUロック状態での割込み優先度マスク
     89 *
     90 *  TIPM_LOCKは,CPUロック状態での割込み優先度マスク,すなわち,カーネ
     91 *  ル管理外のものを除くすべての割込み要求をマスクする値に定義する.
     92 *
     93 *  TMIN_INTPRI変更することで管理外割込みの有無を決定する.
     94 *  例えばTMIN_INTPRIを-14に設定すると,レベル15の割込みがカーネル管理外と
     95 *  なる.TMIN_INTPRIを-15に設定すると,NMI以外にカーネル管理外の割込みを
     96 *  設けないことになる(この場合には-15に設定することを推奨する).
    10297 */
    10398#ifndef TIPM_LOCK
     
    107102
    108103/*
    109  *  TOPPERS•W€Š„ž‚ݏˆ—ƒ‚ƒfƒ‹‚ÌŽÀŒ»
    110  */
    111 /*
    112  *  ƒRƒ“ƒeƒLƒXƒg‚ÌŽQÆ
    113  *
    114  *  RX‚ł́CŠ„ž‚Ý‚Ì–ß‚èæ‚ªƒ^ƒXƒN‚©‚Ç‚¤‚©‚ð”»’f‚·‚邽‚ß‚É intnest
    115  *  ‚ðŽg—p‚µ‚Ä‚¢‚éD‚±‚ê‚ð—p‚¢‚ăRƒ“ƒeƒLƒXƒg‚ð”»’f‚·‚éD
     104 *  TOPPERS標準割込み処理モデルの実現
     105 */
     106/*
     107 *  コンテキストの参照
     108 *
     109 *  RXでは,割込みの戻り先がタスクかどうかを判断するために intnest
     110 *  を使用している.これを用いてコンテキストを判断する.
    116111 */
    117112Inline bool_t
    118113sense_context( void )
    119114{
    120         /*  ƒlƒXƒgƒJƒEƒ“ƒ^0‚æ‚è‘å‚È‚ç”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg  */
     115        /*  ネストカウンタ0より大なら非タスクコンテキスト  */
    121116        return ( intnest > 0U );
    122117}
     
    124119
    125120/*
    126  *  CPUƒƒbƒNƒtƒ‰ƒOŽÀŒ»‚Ì‚½‚߂̕ϐ”
    127  *
    128  *  ‚±‚ê‚ç‚̕ϐ”‚́CCPUƒƒbƒNó‘Ô‚ÌŽž‚̂ݏ‘‚«Š·‚¦‚Ä‚æ‚¢‚à‚Ì‚Æ‚·‚éD
     121 *  CPUロックフラグ実現のための変数
     122 *
     123 *  これらの変数は,CPUロック状態の時のみ書き換えてよいものとする.
    129124 */
    130125#if TIPM_LOCK != -15
    131 extern bool_t   lock_flag;              /* CPUƒƒbƒNƒtƒ‰ƒO‚Ì’l‚ð•ÛŽ‚·‚é•Ï” */
    132 extern uint32_t saved_ipl;              /* Š„ž‚Ý—Dæ“xƒŒƒxƒ‹‚ð•Û‘¶‚·‚é•Ï” */
     126extern bool_t   lock_flag;              /* CPUロックフラグの値を保持する変数 */
     127extern uint32_t saved_ipl;              /* 割込み優先度レベルを保存する変数 */
    133128#endif  /* TIPM_LOCK != -15     */
    134129
     
    137132
    138133/*
    139  *  Š„ž‚Ý—Dæ“xƒ}ƒXƒN‚ÌŠO•”•\Œ»‚Æ“à•”•\Œ»‚Ì•ÏŠ·
    140  *
    141  *  RX630‚ł́CƒvƒƒZƒbƒTƒXƒe[ƒ^ƒXƒ[ƒhƒŒƒWƒXƒ^iPSWj‚̉º‚©‚ç
    142  *  24`27ƒrƒbƒg–Ú‚Ì4ƒrƒbƒg‚ÉŠ„ž‚Ý—Dæ“xƒŒƒxƒ‹iIPLj‚ª’u‚©‚ê‚Ä‚¢‚éD
    143  *  ƒJ[ƒlƒ‹ŠÇ—ŠOŠ„ž‚Ý‚ðŽÀ‘•‚·‚éê‡‚ÉIPL‚ðŽg—p‚µ‚½§Œä‚ðs‚¤D
    144  *  ƒJ[ƒlƒ‹‚ÍŠ„ž‚Ý—Dæ“xƒ}ƒXƒNi-1‚©‚ç˜A‘±‚µ‚½•‰‚Ì’lj‚ÅŠÇ—‚³‚ê‚Ä
    145  *  ‚¢‚邽‚ßIPL‚Æ‚Ì•ÏŠ·‚ª•K—v‚Æ‚È‚éD
    146  */
    147 #define IPL_TO_IPM( ipl )       (-(( PRI )(( ipl ) >> 24U )))           /* IPL‚ðIPM‚É   */
    148 #define IPM_TO_IPL( ipm )       ((( uint32_t )(-( ipm ))) << 24U )      /* IPM‚ðIPL‚É   */
    149 
    150 
    151 /*
    152  *  CPUƒƒbƒNó‘Ô‚Å‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‚ÌIPL
     134 *  割込み優先度マスクの外部表現と内部表現の変換
     135 *
     136 *  RX630では,プロセッサステータスワードレジスタ(PSW)の下から
     137 *  24〜27ビット目の4ビットに割込み優先度レベル(IPL)が置かれている.
     138 *  カーネル管理外割込みを実装する場合にIPLを使用した制御を行う.
     139 *  カーネルは割込み優先度マスク(-1から連続した負の値)で管理されて
     140 *  いるためIPLとの変換が必要となる.
     141 */
     142#define IPL_TO_IPM( ipl )       (-(( PRI )(( ipl ) >> 24U )))           /* IPLをIPMに     */
     143#define IPM_TO_IPL( ipm )       ((( uint32_t )(-( ipm ))) << 24U )      /* IPMをIPLに     */
     144
     145
     146/*
     147 *  CPUロック状態での割込み優先度マスクのIPL
    153148 */
    154149#define IPL_LOCK                ( IPM_TO_IPL( TIPM_LOCK ) )
    155150
    156151/*
    157  *  TIPM_ENAALLiŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœj‚ÌIPL
     152 *  TIPM_ENAALL(割込み優先度マスク全解除)のIPL
    158153 */
    159154#define IPL_ENAALL              ( IPM_TO_IPL( TIPM_ENAALL ) )
     
    163158
    164159/*
    165  *  Š„ž‚Ý—vˆö–ˆ‚̃Œƒxƒ‹ & ‘®«’è‹`ƒe[ƒuƒ‹
    166  *  (ƒeƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹‚É‚æ‚éo—Í)
     160 *  割込み要因毎のレベル & 属性定義テーブル
     161 *  (テンプレートファイルによる出力)
    167162 */
    168163typedef struct cfg_int_info {
     
    175170
    176171/*
    177  *  Š„ž‚ݔԍ†‚͈̔͂̔»’è
    178  *
    179  *  Š„ž‚ݔԍ†‚ª—LŒø‚È’l‚©Œµ–§‚Ƀ`ƒFƒbƒN‚·‚邽‚ß,
    180  *  ƒRƒ“ƒtƒBƒMƒ
    181 ƒŒ[ƒ^o—̓e[ƒuƒ‹‚ðŽQÆ‚·‚é.
     172 *  割込み番号の範囲の判定
     173 *
     174 *  割込み番号が有効な値か厳密にチェックするため,
     175 *  コンフィギュレータ出力テーブルを参照する.
    182176 */
    183177#define VALID_INTNO( intno )    \
     
    186180#define VALID_INTNO_CFGINT( intno )     VALID_INTNO( intno )
    187181
    188 /* cre_int‚Å—LŒø‚ÈŠ„ž‚ݔԍ†‚ÌŽw’è  */
     182/* cre_intで有効な割込み番号の指定  */
    189183#define VALID_INTNO_CREINT          VALID_INTNO_CFGINT((intno))
    190184
    191 /* cre_isr‚Å—LŒø‚ÈŠ„ž‚ݔԍ†‚ÌŽw’è  */
     185/* cre_isrで有効な割込み番号の指定  */
    192186#define VALID_INTNO_CREISR(intno)       VALID_INTNO_CFGINT((intno))
    193187
    194188
    195189/*
    196  *  Š„ž‚ݐ§ŒäƒŒƒWƒXƒ^ŠÖ˜A‚Ì’è‹`
     190 *  割込み制御レジスタ関連の定義
    197191 */
    198192#define IRQ_POSEDGE                     ( 0x08U )
     
    203197
    204198/*
    205  *  CPUƒƒbƒNó‘Ԃւ̈ڍs
    206  *
    207  *  IPMiƒn[ƒhƒEƒFƒA‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒNj‚ðCsaved_iipm‚É•Û‘¶‚µCƒJ[
    208  *  ƒlƒ‹ŠÇ—ŠO‚Ì‚à‚Ì‚ðœ‚­‚·‚ׂĂ̊„ž‚Ý—v‹‚ðƒ}ƒXƒN‚·‚é’liTIPM_LOCKj
    209  *  ‚ɐݒ肷‚éD‚Ü‚½Clock_flag‚ðTRUE‚É‚·‚éD
    210  *
    211  *  IPM‚ªCÅ‰‚©‚çTIPM_LOCK‚Æ“¯‚¶‚©‚»‚ê‚æ‚荂‚¢ê‡‚ɂ́C‚»‚ê‚ð
    212  *  saved_iipm‚É•Û‘¶‚·‚é‚݂̂ŁCTIPM_LOCK‚ɂ͐ݒ肵‚È‚¢D‚±‚ê‚́Cƒ‚ƒfƒ‹
    213  *  ã‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‚ªCTIPM_LOCK‚Æ“¯‚¶‚©‚»‚ê‚æ‚荂‚¢ƒŒƒxƒ‹‚ɐݒè
    214  *  ‚³‚ê‚Ä‚¢‚éó‘Ô‚É‚ ‚½‚éD
    215  *
    216  *  ‚±‚̊֐”‚́CCPUƒƒbƒNó‘ԁilock_flag‚ªTRUE‚̏ó‘ԁj‚ŌĂ΂ê‚邱‚Æ‚Í
    217  *  ‚È‚¢‚à‚Ì‚Æ‘z’肵‚Ä‚¢‚éD
     199 *  CPUロック状態への移行
     200 *
     201 *  IPM(ハードウェアの割込み優先度マスク)を,saved_iipmに保存し,カー
     202 *  ネル管理外のものを除くすべての割込み要求をマスクする値(TIPM_LOCK)
     203 *  に設定する.また,lock_flagをTRUEにする.
     204 *
     205 *  IPMが,最初からTIPM_LOCKと同じかそれより高い場合には,それを
     206 *  saved_iipmに保存するのみで,TIPM_LOCKには設定しない.これは,モデル
     207 *  上の割込み優先度マスクが,TIPM_LOCKと同じかそれより高いレベルに設定
     208 *  されている状態にあたる.
     209 *
     210 *  この関数は,CPUロック状態(lock_flagがTRUEの状態)で呼ばれることは
     211 *  ないものと想定している.
    218212 */
    219213Inline void
     
    226220
    227221        /*
    228          *  current_ipl()‚Ì•Ô‚è’l‚𒼐Úsaved_ipl‚É•Û‘¶‚¹‚¸CˆêŽž•Ï”ipl
    229          *  ‚ð—p‚¢‚Ä‚¢‚é‚̂́Ccurrent_ipl()‚ðŒÄ‚ñ‚¾’¼Œã‚ÉŠ„ž‚Ý‚ª”­¶‚µC
    230          *  ‹N“®‚³‚ꂽŠ„ž‚ݏˆ—‚Åsaved_ipl‚ª•ÏX‚³‚ê‚é‰Â”\«‚ª‚ ‚邽‚ß‚Å
    231          *  ‚ ‚éD
     222         *  current_ipl()の返り値を直接saved_iplに保存せず,一時変数ipl
     223         *  を用いているのは,current_ipl()を呼んだ直後に割込みが発生し,
     224         *  起動された割込み処理でsaved_iplが変更される可能性があるためで
     225         *  ある.
    232226         */
    233227        ipl = current_ipl();
     
    246240
    247241/*
    248  *  CPUƒƒbƒNó‘Ԃ̉ðœ
    249  *
    250  *  lock_flag‚ðFALSE‚É‚µCIPMiƒn[ƒhƒEƒFƒA‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒNj‚ðC
    251  *  saved_iipm‚É•Û‘¶‚µ‚½’l‚É–ß‚·D
    252  *
    253  *  ‚±‚̊֐”‚́CCPUƒƒbƒNó‘ԁilock_flag‚ªtrue‚̏ó‘ԁj‚ł̂݌Ă΂ê‚é‚à
    254  *  ‚Ì‚Æ‘z’肵‚Ä‚¢‚éD
     242 *  CPUロック状態の解除
     243 *
     244 *  lock_flagをFALSEにし,IPM(ハードウェアの割込み優先度マスク)を,
     245 *  saved_iipmに保存した値に戻す.
     246 *
     247 *  この関数は,CPUロック状態(lock_flagがtrueの状態)でのみ呼ばれるも
     248 *  のと想定している.
    255249 */
    256250Inline void
     
    270264
    271265/*
    272  *  CPUƒƒbƒNó‘Ô‚ÌŽQÆ
     266 *  CPUロック状態の参照
    273267 */
    274268Inline bool_t
     
    287281
    288282/*
    289  * iƒ‚ƒfƒ‹ã‚́jŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‚̐ݒè
    290  *
    291  *  CPUƒƒbƒNƒtƒ‰ƒO‚ªƒNƒŠƒA‚³‚ê‚Ä‚¢‚鎞‚́Cƒn[ƒhƒEƒFƒA‚ÌŠ„ž‚Ý—Dæ“xƒ}
    292  *  ƒXƒN‚ðÝ’è‚·‚éDCPUƒƒbƒNƒtƒ‰ƒO‚ªƒZƒbƒg‚³‚ê‚Ä‚¢‚鎞‚́Csaved_iipm
    293  *  ‚ðÝ’肵C‚³‚ç‚ɁCƒn[ƒhƒEƒFƒA‚ÌŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‚ðCÝ’肵‚悤‚Æ
    294  *  ‚µ‚½iƒ‚ƒfƒ‹ã‚́jŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‚ÆTIPM_LOCK‚̍‚‚¢•û‚ɐݒ肷‚éD
     283 * (モデル上の)割込み優先度マスクの設定
     284 *
     285 *  CPUロックフラグがクリアされている時は,ハードウェアの割込み優先度マ
     286 *  スクを設定する.CPUロックフラグがセットされている時は,saved_iipm
     287 *  を設定し,さらに,ハードウェアの割込み優先度マスクを,設定しようと
     288 *  した(モデル上の)割込み優先度マスクとTIPM_LOCKの高い方に設定する.
    295289 */
    296290Inline void
     
    316310
    317311/*
    318  * iƒ‚ƒfƒ‹ã‚́jŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‚ÌŽQÆ
    319  *
    320  *  CPUƒƒbƒNƒtƒ‰ƒO‚ªƒNƒŠƒA‚³‚ê‚Ä‚¢‚鎞‚̓n[ƒhƒEƒFƒA‚ÌŠ„ž‚Ý—Dæ“xƒ}
    321  *  ƒXƒN‚ðCƒZƒbƒg‚³‚ê‚Ä‚¢‚鎞‚Ísaved_iipm‚ðŽQÆ‚·‚éD
     312 * (モデル上の)割込み優先度マスクの参照
     313 *
     314 *  CPUロックフラグがクリアされている時はハードウェアの割込み優先度マ
     315 *  スクを,セットされている時はsaved_iipmを参照する.
    322316 */
    323317Inline PRI
     
    343337
    344338/*
    345  *  Š„ž‚Ý—v‹‹ÖŽ~ƒtƒ‰ƒO‚̃Zƒbƒg
    346  *
    347  *  Š„ž‚Ý‘®«‚ªÝ’肳‚ê‚Ä‚¢‚È‚¢Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚ɑ΂µ‚ÄŠ„ž‚Ý—v‹‹ÖŽ~
    348  *  ƒtƒ‰ƒO‚ðƒZƒbƒg‚µ‚悤‚Æ‚µ‚½ê‡‚ɂ́CFALSE‚ð•Ô‚·D
     339 *  割込み要求禁止フラグのセット
     340 *
     341 *  割込み属性が設定されていない割込み要求ラインに対して割込み要求禁止
     342 *  フラグをセットしようとした場合には,FALSEを返す.
    349343 */
    350344Inline bool_t
     
    352346{
    353347        /*
    354          *  ƒŒƒxƒ‹’è‹`‚ª0‚Å‚ ‚éê‡‚ÍCFG_INT‚³‚ê‚Ä‚¢‚È‚¢
     348         *  レベル定義が0である場合はCFG_INTされていない
    355349         */
    356350        if( cfg_int_table[intno].intpri == 0 ){
     
    368362
    369363/*
    370  *  Š„ž‚Ý—v‹‹ÖŽ~ƒtƒ‰ƒO‚̃NƒŠƒA
    371  *
    372  *  Š„ž‚Ý‘®«‚ªÝ’肳‚ê‚Ä‚¢‚È‚¢Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚ɑ΂µ‚ÄŠ„ž‚Ý—v‹‹ÖŽ~
    373  *  ƒtƒ‰ƒO‚ðƒNƒŠƒA‚µ‚悤‚Æ‚µ‚½ê‡‚ɂ́CFALSE‚ð•Ô‚·D
     364 *  割込み要求禁止フラグのクリア
     365 *
     366 *  割込み属性が設定されていない割込み要求ラインに対して割込み要求禁止
     367 *  フラグをクリアしようとした場合には,FALSEを返す.
    374368 */
    375369Inline bool_t
     
    377371{
    378372        /*
    379          *  ƒŒƒxƒ‹’è‹`‚ª0‚Å‚ ‚éê‡‚ÍCFG_INT‚³‚ê‚Ä‚¢‚È‚¢
     373         *  レベル定義が0である場合はCFG_INTされていない
    380374         */
    381375        if( cfg_int_table[intno].intpri == 0 ){
     
    393387
    394388/*
    395  *  Š„ž‚Ý—v‹‚̃NƒŠƒA
     389 *  割込み要求のクリア
    396390 */
    397391Inline void
     
    406400
    407401/*
    408  *  Š„ž‚Ý—v‹‚̃`ƒFƒbƒN
     402 *  割込み要求のチェック
    409403 */
    410404Inline bool_t
     
    412406{
    413407        /*
    414          *  Š„ž‚Ý—v‹ƒŒƒWƒXƒ^‚Í0 or 1‚Å‚µ‚©‚È‚¢‚½‚ß,
    415          *  ‚»‚Ì‚Ü‚Ü‚Ì’l‚ð•Ô‚·.
     408         *  割込み要求レジスタは0 or 1でしかないため,
     409         *  そのままの値を返す.
    416410         */
    417411        return ( *IR_REG(intno) );
     
    423417
    424418/*
    425  *  Š„ž‚Ý—v‹ƒ‰ƒCƒ“‚Ì‘®«‚̐ݒè
     419 *  割込み要求ラインの属性の設定
    426420 */
    427421extern void     x_config_int( INTNO intno, ATR intatr, PRI intpri );
     
    429423
    430424/*
    431  *  Š„ž‚݃nƒ“ƒhƒ‰‚Ì“üŒû‚Å•K—v‚ÈIRC‘€ì
     425 *  割込みハンドラの入口で必要なIRC操作
    432426 *
    433427 */
     
    438432
    439433        /*
    440          *  ƒŒƒxƒ‹ŒŸo‚ÌŠ„ž‚݂ɑ΂µ‚Ä‚ÍŠ„ž‚݃Xƒe[ƒ^ƒX
    441          *  ƒtƒ‰ƒO‚ðƒNƒŠƒA‚·‚é.
     434         *  レベル検出の割込みに対しては割込みステータス
     435         *  フラグをクリアする.
    442436         */
    443437        if( ( cfg_int_table[intno].intatr & TA_LOWLEVEL ) > 0 ){
    444438                if( *IR_REG(intno) > 0U ){
    445439                        /*
    446                          *  ŠO•”Š„ž‚݂̏ꍇ, IRQ’[Žq‚ªHigh‚É–ß‚Á‚Ä‚¢‚é
    447                          *  ‚±‚Æ‚ðŠm”F‚·‚éŽ|‚ª‹LÚ‚³‚ê‚Ä‚¢‚邪, È—ª‚·‚é.
     440                         *  外部割込みの場合, IRQ端子がHighに戻っている
     441                         *  ことを確認する旨が記載されているが, 省略する.
    448442                         */
    449443                //      *ir_reg_addr[intno] = 0U;
    450444
    451445                        /*
    452                          *  ƒn[ƒhƒEƒFƒAƒ}ƒjƒ
    453 ƒAƒ‹‚É0‚É‚È‚Á‚½‚±‚Æ‚ð
    454                          *  Šm”F‚·‚éŽ|‚ª‹LÚ‚ ‚邽‚ß, ƒŒƒWƒXƒ^’l‚ð“ǂݏo‚·.
     446                         *  ハードウェアマニュアルに0になったことを
     447                         *  確認する旨が記載あるため, レジスタ値を読み出す.
    455448                         */
    456449                //      reg = *ir_reg_addr[intno];
     
    461454
    462455/*
    463  *  Š„ž‚݃nƒ“ƒhƒ‰‚̏oŒû‚Å•K—v‚ÈIRC‘€ì
     456 *  割込みハンドラの出口で必要なIRC操作
    464457 *
    465458 */
     
    467460i_end_int( INTNO intno )
    468461{
    469         /* “Á‚ɍs‚¤‚ׂ«ˆ—‚Í‚È‚¢ */
    470 }
    471 
    472 
    473 /*
    474  *  Å‚—Dæ‡ˆÊƒ^ƒXƒN‚ւ̃fƒBƒXƒpƒbƒ`iprc_support.a30j
    475  *
    476  *  dispatch‚́Cƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚©‚çŒÄ‚яo‚³‚ꂽƒT[ƒrƒXƒR[ƒ‹ˆ—‚©
    477  *  ‚çŒÄ‚яo‚·‚ׂ«‚à‚̂ŁCƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒgECPUƒƒbƒNó‘ԁEƒfƒBƒXƒpƒb
    478  *  ƒ`‹–‰Âó‘ԁEiƒ‚ƒfƒ‹ã‚́jŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘ԂŌĂяo‚³‚È
    479  *  ‚¯‚ê‚΂Ȃç‚È‚¢D
     462        /* 特に行うべき処理はない */
     463}
     464
     465
     466/*
     467 *  最高優先順位タスクへのディスパッチ(prc_support.a30)
     468 *
     469 *  dispatchは,タスクコンテキストから呼び出されたサービスコール処理か
     470 *  ら呼び出すべきもので,タスクコンテキスト・CPUロック状態・ディスパッ
     471 *  チ許可状態・(モデル上の)割込み優先度マスク全解除状態で呼び出さな
     472 *  ければならない.
    480473 */
    481474extern void     dispatch( void );
    482475
    483476/*
    484  *  ƒfƒBƒXƒpƒbƒ`ƒƒ‚Ì“®ìŠJŽniprc_support.a30j
    485  *
    486  *  start_dispatch‚́CƒJ[ƒlƒ‹‹N“®Žž‚ɌĂяo‚·‚ׂ«‚à‚̂ŁC‚·‚ׂĂ̊„ž
    487  *  ‚Ý‚ð‹ÖŽ~‚µ‚½ó‘ԁi‘SŠ„ž‚݃ƒbƒNó‘Ô‚Æ“¯“™‚̏ó‘ԁj‚ŌĂяo‚³‚È‚¯‚ê‚Î
    488  *  ‚È‚ç‚È‚¢D
     477 *  ディスパッチャの動作開始(prc_support.a30)
     478 *
     479 *  start_dispatchは,カーネル起動時に呼び出すべきもので,すべての割込
     480 *  みを禁止した状態(全割込みロック状態と同等の状態)で呼び出さなければ
     481 *  ならない.
    489482 */
    490483extern void     start_dispatch( void ) NoReturn;
    491484
    492485/*
    493  *  Œ»Ý‚̃Rƒ“ƒeƒLƒXƒg‚ðŽÌ‚ĂăfƒBƒXƒpƒbƒ`iprc_support.a30j
    494  *
    495  *  exit_and_dispatch‚́Cext_tsk‚©‚çŒÄ‚яo‚·‚ׂ«‚à‚̂ŁCƒ^ƒXƒNƒRƒ“ƒeƒL
    496  *  ƒXƒgECPUƒƒbƒNó‘ԁEƒfƒBƒXƒpƒbƒ`‹–‰Âó‘ԁEiƒ‚ƒfƒ‹ã‚́jŠ„ž‚Ý—Dæ
    497  *  “xƒ}ƒXƒN‘S‰ðœó‘ԂŌĂяo‚³‚È‚¯‚ê‚΂Ȃç‚È‚¢D
     486 *  現在のコンテキストを捨ててディスパッチ(prc_support.a30)
     487 *
     488 *  exit_and_dispatchは,ext_tskから呼び出すべきもので,タスクコンテキ
     489 *  スト・CPUロック状態・ディスパッチ許可状態・(モデル上の)割込み優先
     490 *  度マスク全解除状態で呼び出さなければならない.
    498491 */
    499492#define _kernel_exit_and_dispatch();    \
     
    504497
    505498/*
    506  *  ƒJ[ƒlƒ‹‚̏I—¹ˆ—‚̌ďo‚µiprc_support.a30j
    507  *
    508  *  call_exit_kernel‚́CƒJ[ƒlƒ‹‚̏I—¹Žž‚ɌĂяo‚·‚ׂ«‚à‚̂ŁC”ñƒ^ƒXƒN
    509  *  ƒRƒ“ƒeƒLƒXƒg‚ɐ؂芷‚¦‚āCƒJ[ƒlƒ‹‚̏I—¹ˆ—iexit_kernelj‚ðŒÄ‚яo
    510  *  ‚·D
     499 *  カーネルの終了処理の呼出し(prc_support.a30)
     500 *
     501 *  call_exit_kernelは,カーネルの終了時に呼び出すべきもので,非タスク
     502 *  コンテキストに切り換えて,カーネルの終了処理(exit_kernel)を呼び出
     503 *  す.
    511504 */
    512505extern void call_exit_kernel( void ) NoReturn;
    513506
    514507/*
    515  *  ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚̏‰Šú‰»
    516  *
    517  *  ƒ^ƒXƒN‚ª‹xŽ~ó‘Ô‚©‚çŽÀs‚Å‚«‚éó‘ԂɈڍs‚·‚鎞‚ɌĂ΂ê‚éD‚±‚ÌŽž“_
    518  *  ‚ŃXƒ^ƒbƒN—̈æ‚ðŽg‚Á‚Ä‚Í‚È‚ç‚È‚¢D
    519  *
    520  *  activate_context‚ðCƒCƒ“ƒ‰ƒCƒ“ŠÖ”‚Å‚Í‚È‚­ƒ}ƒNƒ’è‹`‚Æ‚µ‚Ä‚¢‚é‚̂́C
    521  *  ‚±‚ÌŽž“_‚Å‚ÍTCB‚ª’è‹`‚³‚ê‚Ä‚¢‚È‚¢‚½‚ß‚Å‚ ‚éD
     508 *  タスクコンテキストの初期化
     509 *
     510 *  タスクが休止状態から実行できる状態に移行する時に呼ばれる.この時点
     511 *  でスタック領域を使ってはならない.
     512 *
     513 *  activate_contextを,インライン関数ではなくマクロ定義としているのは,
     514 *  この時点ではTCBが定義されていないためである.
    522515 */
    523516extern void     start_r( void );
     
    527520        {                                                                                                                                                                       \
    528521                                                                                                                                                                                \
    529                 /*  ƒXƒ^ƒbƒNƒ|ƒCƒ“ƒ^‰Šú’l‚ÌÝ’è  */                                                                                    \
     522                /*  スタックポインタ初期値の設定  */                                                                                  \
    530523                ( p_tcb )->tskctxb.sp = ( void * )((( uint32_t ) ( p_tcb )->p_tinib->stk ) +    \
    531524                                                                ( p_tcb )->p_tinib->stksz );                                                    \
    532                 /* ‹N“®”Ô’n‚̐ݒè */                                                                                                                    \
     525                /* 起動番地の設定 */                                                                                                                   \
    533526                ( p_tcb )->tskctxb.pc = ( FP ) start_r;                                                                                 \
    534527        }                                                                                                                                                                       \
     
    537530
    538531/*
    539  *  calltex‚ÍŽg—p‚µ‚È‚¢
     532 *  calltexは使用しない
    540533 */
    541534#define OMIT_CALLTEX
     
    543536
    544537/*
    545  *  Š„ž‚݃nƒ“ƒhƒ‰‚̐ݒè
    546  *
    547  *  RX630‚ÍROM‚ÉŠ„ž‚݃xƒNƒ^‚ð”z’u‚·‚邽‚߁C–{ŠÖ”‚Í‹óŠÖ”‚ÅŽÀ‘•‚·‚éD
     538 *  割込みハンドラの設定
     539 *
     540 *  RX630はROMに割込みベクタを配置するため,本関数は空関数で実装する.
    548541 */
    549542Inline void
     
    554547
    555548/*
    556  *  CPU—áŠOƒnƒ“ƒhƒ‰‚̐ݒè
    557  *
    558  *  RX630‚ÍROM‚É—áŠOƒxƒNƒ^‚ð”z’u‚·‚邽‚߁C–{ŠÖ”‚Í‹óŠÖ”‚ÅŽÀ‘•‚·‚éD
     549 *  CPU例外ハンドラの設定
     550 *
     551 *  RX630はROMに例外ベクタを配置するため,本関数は空関数で実装する.
    559552 */
    560553Inline void
     
    565558
    566559/*
    567  *  Š„ž‚Ý/—áŠOƒnƒ“ƒhƒ‰‚Ì“üŒûˆ—‚̐¶¬ƒ}ƒNƒ
    568  *
    569  *  ƒeƒ“ƒvƒŒ[ƒgƒtƒ@ƒCƒ‹‚É‚æ‚萶¬‚·‚邽‚ß‹óƒ}ƒNƒ‚Æ‚·‚éD
     560 *  割込み/例外ハンドラの入口処理の生成マクロ
     561 *
     562 *  テンプレートファイルにより生成するため空マクロとする.
    570563 */
    571564#define HDR_ENTRY(hdr, intexc_num , tobejmp)
    572565
    573566/*
    574  *  Š„ž‚݃nƒ“ƒhƒ‰‚Ì“üŒûˆ—‚̐¶¬ƒ}ƒNƒ
     567 *  割込みハンドラの入口処理の生成マクロ
    575568 */
    576569#define _INT_ENTRY(inhno, inthdr)                               _kernel_##inthdr##_##inhno##_entry
     
    583576
    584577/*
    585  *  CPU—áŠOƒnƒ“ƒhƒ‰‚Ì“üŒûˆ—‚̐¶¬ƒ}ƒNƒ
     578 *  CPU例外ハンドラの入口処理の生成マクロ
    586579 */
    587580#define _EXC_ENTRY(excno , exchdr)                                      _kernel_##exchdr##_##excno##_entry
     
    594587
    595588/*
    596  *  CPU—áŠO‚Ì”­¶‚µ‚½Žž‚̃Rƒ“ƒeƒLƒXƒg‚ÌŽQÆ
    597  *
    598  *  CPU—áŠO‚Ì”­¶‚µ‚½Žž‚̃Rƒ“ƒeƒLƒXƒg‚ªCƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚ÌŽž‚ÉFALSEC
    599  *  ‚»‚¤‚Å‚È‚¢Žž‚Étrue‚ð•Ô‚·D
     589 *  CPU例外の発生した時のコンテキストの参照
     590 *
     591 *  CPU例外の発生した時のコンテキストが,タスクコンテキストの時にFALSE,
     592 *  そうでない時にtrueを返す.
    600593 */
    601594Inline bool_t
     
    603596{
    604597        /*
    605          *  ƒlƒXƒgƒJƒEƒ“ƒ^‚ª1‚æ‚è‘å‚È‚ç”ñƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg
     598         *  ネストカウンタが1より大なら非タスクコンテキスト
    606599         */
    607600        return( intnest > 1U );
     
    610603
    611604/*
    612  *  CPU—áŠOî•ñ p_excinf ‚©‚ç PSW ‚Ì’l‚ðŽæ“¾‚·‚邽‚߂̃IƒtƒZƒbƒg’l
    613  *  EXCNO + ACC + FPSW + R1`R15 + PC
     605 *  CPU例外情報 p_excinf から PSW の値を取得するためのオフセット値
     606 *  EXCNO + ACC + FPSW + R1R15 + PC
    614607 */
    615608#define EXC_GET_PSW_OFFSET      (4+8+4+60+4)
    616609
    617610/*
    618  *  CPU—áŠO‚Ì”­¶‚µ‚½Žž‚ÌIPL‚ÌŽQÆ
     611 *  CPU例外の発生した時のIPLの参照
    619612 */
    620613Inline uint32_t
     
    634627
    635628/*
    636  *  CPU—áŠO‚Ì”­¶‚µ‚½Žž‚̃Rƒ“ƒeƒLƒXƒg‚ÆŠ„ž‚݂̃}ƒXƒNó‘Ô‚ÌŽQÆ
    637  *
    638  *  CPU—áŠO‚Ì”­¶‚µ‚½Žž‚̃VƒXƒeƒ€ó‘Ô‚ªCƒJ[ƒlƒ‹ŽÀs’†‚Å‚È‚­Cƒ^ƒXƒNƒR
    639  *  ƒ“ƒeƒLƒXƒg‚Å‚ ‚èC‘SŠ„ž‚݃ƒbƒNó‘Ô‚Å‚È‚­CCPUƒƒbƒNó‘Ô‚Å‚È‚­Ciƒ‚
    640  *  ƒfƒ‹ã‚́jŠ„ž‚Ý—Dæ“xƒ}ƒXƒN‘S‰ðœó‘Ô‚Å‚ ‚鎞‚ÉtrueC‚»‚¤‚Å‚È‚¢Žž
    641  *  ‚ÉFALSE‚ð•Ô‚·iCPU—áŠO‚ªƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚ݏˆ—’†‚Å”­¶‚µ‚½ê‡
    642  *  ‚É‚àFALSE‚ð•Ô‚·jD
     629 *  CPU例外の発生した時のコンテキストと割込みのマスク状態の参照
     630 *
     631 *  CPU例外の発生した時のシステム状態が,カーネル実行中でなく,タスクコ
     632 *  ンテキストであり,全割込みロック状態でなく,CPUロック状態でなく,(モ
     633 *  デル上の)割込み優先度マスク全解除状態である時にtrue,そうでない時
     634 *  にFALSEを返す(CPU例外がカーネル管理外の割込み処理中で発生した場合
     635 *  にもFALSEを返す).
    643636 * 
    644  *  ƒJ[ƒlƒ‹ŽÀs’†‚Å‚È‚¢¨ (TIPM_LOCK== -15) Iƒtƒ‰ƒO == 1
     637 *  カーネル実行中でない→ (TIPM_LOCK== -15) Iフラグ == 1
    645638 *                         (else)           IPL < IPL_LOCK
    646  *  ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚Å‚ ‚遨intnest == 0
    647  *  ‘SŠ„ž‚݃ƒbƒN‚Å‚È‚¢¨ Iƒtƒ‰ƒO == 1
    648  *  Š„ž‚Ý—Dæ“xƒ}ƒXƒN‚ª‘S‰ðœ¨IPL == 0
     639 *  タスクコンテキストである→intnest == 0
     640 *  全割込みロックでない→ Iフラグ == 1
     641 *  割込み優先度マスクが全解除→IPL == 0
    649642 * 
    650643 * 
     
    659652
    660653/*
    661  *  CPU—áŠO‚Ì”­¶‚µ‚½Žž‚̃Rƒ“ƒeƒLƒXƒg‚ÆŠ„ž‚݁^CPUƒƒbƒNó‘Ô‚ÌŽQÆ
    662  *
    663  *  CPU—áŠO‚Ì”­¶‚µ‚½Žž‚̃VƒXƒeƒ€ó‘Ô‚ªCƒJ[ƒlƒ‹ŽÀs’†‚Å‚È‚­Cƒ^ƒXƒNƒR
    664  *  ƒ“ƒeƒLƒXƒg‚Å‚ ‚èC‘SŠ„ž‚݃ƒbƒNó‘Ô‚Å‚È‚­CCPUƒƒbƒNó‘Ô‚Å‚È‚¢Žž‚É
    665  *  trueC‚»‚¤‚Å‚È‚¢Žž‚Éfalse‚ð•Ô‚·iCPU—áŠO‚ªƒJ[ƒlƒ‹ŠÇ—ŠO‚ÌŠ„ž‚ݏˆ
    666  *  —’†‚Å”­¶‚µ‚½ê‡‚É‚àfalse‚ð•Ô‚·jD
     654 *  CPU例外の発生した時のコンテキストと割込み/CPUロック状態の参照
     655 *
     656 *  CPU例外の発生した時のシステム状態が,カーネル実行中でなく,タスクコ
     657 *  ンテキストであり,全割込みロック状態でなく,CPUロック状態でない時に
     658 *  true,そうでない時にfalseを返す(CPU例外がカーネル管理外の割込み処
     659 *  理中で発生した場合にもfalseを返す).
    667660 * 
    668  *  ƒJ[ƒlƒ‹ŽÀs’†‚Å‚È‚¢¨ (TIPM_LOCK== -15) Iƒtƒ‰ƒO == 1
     661 *  カーネル実行中でない→ (TIPM_LOCK== -15) Iフラグ == 1
    669662 *                         (else)           IPL < TIPM_LOCK
    670  *  ƒ^ƒXƒNƒRƒ“ƒeƒLƒXƒg‚Å‚ ‚遨intnest < 1
    671  *  ‘SŠ„ž‚݃ƒbƒN‚Å‚È‚¢¨ Iƒtƒ‰ƒO == 1
    672  *  CPUƒƒbƒNó‘Ô‚Å‚È‚¢¨(TIPM_LOCK== -15) Iƒtƒ‰ƒO == 1
     663 *  タスクコンテキストである→intnest < 1
     664 *  全割込みロックでない→ Iフラグ == 1
     665 *  CPUロック状態でない→(TIPM_LOCK== -15) Iフラグ == 1
    673666 *                         (else)           IPL < TIPM_LOCK
    674667 */
     
    688681
    689682/*
    690  *  ƒvƒƒZƒbƒTˆË‘¶‚̏‰Šú‰»
     683 *  プロセッサ依存の初期化
    691684 */
    692685extern void     prc_initialize( void );
    693686
    694687/*
    695  *  ƒvƒƒZƒbƒTˆË‘¶‚̏I—¹Žžˆ—
     688 *  プロセッサ依存の終了時処理
    696689 */
    697690extern void     prc_terminate( void );
     
    700693#ifndef OMIT_DEFAULT_INT_HANDLER
    701694/*
    702  *  –¢“o˜^‚ÌŠ„ž‚Ý‚ª”­¶‚µ‚½ê‡‚ɌĂяo‚³‚ê‚é
     695 *  未登録の割込みが発生した場合に呼び出される
    703696 */
    704697void default_int_handler( void );
     
    707700#ifndef OMIT_DEFAULT_EXC_HANDLER
    708701/*
    709  *  –¢“o˜^‚Ì—áŠO‚ª”­¶‚µ‚½ê‡‚ɌĂяo‚³‚ê‚é
     702 *  未登録の例外が発生した場合に呼び出される
    710703 */
    711704void default_exc_handler( void );
Note: See TracChangeset for help on using the changeset viewer.