Ignore:
Timestamp:
Aug 23, 2017, 9:27:43 AM (7 years ago)
Author:
coas-nagasima
Message:

文字コードを設定

File:
1 edited

Legend:

Unmodified
Added
Removed
  • EcnlProtoTool/trunk/asp3_dcre/arch/arm_gcc/common/core_kernel_impl.h

    • Property svn:keywords deleted
    • Property svn:mime-type changed from text/x-chdr to text/x-chdr;charset=UTF-8
    r270 r321  
    99 *              Graduate School of Information Science, Nagoya Univ., JAPAN
    1010 *
    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 è²¬ã™ã‚‹ã“と.
    47  *
    48  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    49 ãŠ
    50  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    51  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    52  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    53  *  の責任を負わない.
     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 *      免責すること.
     33 *
     34 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     35 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     36 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     37 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     38 *  の責任を負わない.
    5439 *
    5540 *  $Id$
     
    5742
    5843/*
    59  *              kernel_impl.hのコア依存部(ARM用)
    60  *
    61  *  このヘッダファイルは,target_kernel_impl.h(または,そこからインク
    62  *  ルードされるファイル)のみからインクルードされる.他のファイルから
    63  *  直接インクルードしてはならない.
     44 *              kernel_impl.hのコア依存部(ARM用)
     45 *
     46 *  このヘッダファイルは,target_kernel_impl.h(または,そこからインク
     47 *  ルードされるファイル)のみからインクルードされる.他のファイルから
     48 *  直接インクルードしてはならない.
    6449 */
    6550
     
    7055
    7156/*
    72  *  エラーチェック方法の指定
    73  */
    74 #define CHECK_STKSZ_ALIGN       8               /* スタックサイズのアライン単位 */
    75 #define CHECK_INTPTR_ALIGN      4               /* intptr_t型の変数のアライン単位 */
    76 #define CHECK_INTPTR_NONNULL            /* intptr_t型の変数の非NULLチェック */
     57 *  エラーチェック方法の指定
     58 */
     59#define CHECK_STKSZ_ALIGN       8               /* スタックサイズのアライン単位 */
     60#define CHECK_INTPTR_ALIGN      4               /* intptr_t型の変数のアライン単位 */
     61#define CHECK_INTPTR_NONNULL            /* intptr_t型の変数の非NULLチェック */
    7762#ifndef  __thumb__
    78 #define CHECK_FUNC_ALIGN        4               /* 関数のアライン単位 */
     63#define CHECK_FUNC_ALIGN        4               /* 関数のアライン単位 */
    7964#endif /* __thumb__ */
    80 #define CHECK_FUNC_NONNULL                      /* 関数の非NULLチェック */
    81 #define CHECK_STACK_ALIGN       8               /* スタック領域のアライン単位 */
    82 #define CHECK_STACK_NONNULL                     /* スタック領域の非NULLチェック */
    83 #define CHECK_MPF_ALIGN         4               /* 固定長メモリプール領域のアライン単位 */
    84 #define CHECK_MPF_NONNULL                       /* 固定長メモリプール領域の非NULLチェック */
    85 #define CHECK_MB_ALIGN          4               /* 管理領域のアライン単位 */
     65#define CHECK_FUNC_NONNULL                      /* 関数の非NULLチェック */
     66#define CHECK_STACK_ALIGN       8               /* スタック領域のアライン単位 */
     67#define CHECK_STACK_NONNULL                     /* スタック領域の非NULLチェック */
     68#define CHECK_MPF_ALIGN         4               /* 固定長メモリプール領域のアライン単位 */
     69#define CHECK_MPF_NONNULL                       /* 固定長メモリプール領域の非NULLチェック */
     70#define CHECK_MB_ALIGN          4               /* 管理領域のアライン単位 */
    8671
    8772#ifndef TOPPERS_MACRO_ONLY
    8873
    8974/*
    90  *  レディキューサーチのためのビットマップサーチ関数
    91  *
    92  *  CLZ命令は最上位ビットからサーチするため,最上位ビットを最高優å
    93 ˆåº¦ã«
    94  *  対応させる.
     75 *  レディキューサーチのためのビットマップサーチ関数
     76 *
     77 *  CLZ命令は最上位ビットからサーチするため,最上位ビットを最高優先度に
     78 *  対応させる.
    9579 */
    9680#if __TARGET_ARCH_ARM >= 6
     
    10892
    10993/*
    110  *  コンテキストの参ç
    111 §
    112  *
    113  *  ARM依存部では,タスクコンテキストと非タスクコンテキストの両方をスー
    114  *  パバイザモードで動作させるため,プロセッサモードで判断することがで
    115  *  きない.そのため,割込みハンドラ/CPU例外ハンドラのネスト段数(これ
    116  *  を,例外ネストカウントと呼ぶ)で管理し,例外ネストカウントが0の時に
    117  *  タスクコンテキスト,0より大きい場合に非タスクコンテキストであると判
    118  *  断する.
    119  */
    120 extern uint32_t excpt_nest_count;               /* 例外ネストカウント */
     94 *  コンテキストの参照
     95 *
     96 *  ARM依存部では,タスクコンテキストと非タスクコンテキストの両方をスー
     97 *  パバイザモードで動作させるため,プロセッサモードで判断することがで
     98 *  きない.そのため,割込みハンドラ/CPU例外ハンドラのネスト段数(これ
     99 *  を,例外ネストカウントと呼ぶ)で管理し,例外ネストカウントが0の時に
     100 *  タスクコンテキスト,0より大きい場合に非タスクコンテキストであると判
     101 *  断する.
     102 */
     103extern uint32_t excpt_nest_count;               /* 例外ネストカウント */
    121104
    122105Inline bool_t
     
    129112
    130113/*
    131  *  TOPPERS標準割込み処理モデルの実現
    132  *
    133  *  ARMコア依存部では,割込みの扱いに関して,次の2つの方法をサポートす
    134  *  る.
    135  *
    136  *  (1) カーネルを単体で使用する場合やSafeGのノンセキュアモードで使用す
    137  *  る場合:IRQをカーネル管理の割込み,FIQをカーネル管理外の割込みとす
    138  *  る.デフォルトでは,この方法が使用される.
    139  *
    140  *  (2) SafeGのセキュアモードで使用する場合:FIQをカーネル管理の割込み
    141  *  とし,カーネルの動作中はIRQを常にマスクする.この方法を使用する場合
    142  *  には,TOPPERS_SAFEG_SECUREをマクロ定義する.
    143  *
    144  *  TOPPERS標準割込み処理モデルの中で,割込み優å
    145 ˆåº¦ãƒžã‚¹ã‚¯ã¨å‰²è¾¼ã¿è¦æ±‚禁
    146  *  止フラグに関しては,割込みコントローラによって実現方法が異なるため,
    147  *  ARMコア依存部では扱わない.
    148  */
    149 
    150 /*
    151  *  FIQとIRQの両方を禁止するCPSRのビットパターン
     114 *  TOPPERS標準割込み処理モデルの実現
     115 *
     116 *  ARMコア依存部では,割込みの扱いに関して,次の2つの方法をサポートす
     117 *  る.
     118 *
     119 *  (1) カーネルを単体で使用する場合やSafeGのノンセキュアモードで使用す
     120 *  る場合:IRQをカーネル管理の割込み,FIQをカーネル管理外の割込みとす
     121 *  る.デフォルトでは,この方法が使用される.
     122 *
     123 *  (2) SafeGのセキュアモードで使用する場合:FIQをカーネル管理の割込み
     124 *  とし,カーネルの動作中はIRQを常にマスクする.この方法を使用する場合
     125 *  には,TOPPERS_SAFEG_SECUREをマクロ定義する.
     126 *
     127 *  TOPPERS標準割込み処理モデルの中で,割込み優先度マスクと割込み要求禁
     128 *  止フラグに関しては,割込みコントローラによって実現方法が異なるため,
     129 *  ARMコア依存部では扱わない.
     130 */
     131
     132/*
     133 *  FIQとIRQの両方を禁止するCPSRのビットパターン
    152134 */
    153135#ifndef TOPPERS_MACRO_ONLY
     
    158140
    159141/*
    160  *  CPUロック・割込みロックでない状æ
    161 ‹ã§ã®CPSRのビットパターン
     142 *  CPUロック・割込みロックでない状態でのCPSRのビットパターン
    162143 */
    163144#ifndef TOPPERS_SAFEG_SECURE
     
    168149
    169150/*
    170  *  CPUロック状æ
    171 ‹ã§ã®CPSRのビットパターン
     151 *  CPUロック状態でのCPSRのビットパターン
    172152 */
    173153#ifndef TOPPERS_SAFEG_SECURE
     
    178158
    179159/*
    180  *  割込みロック状æ
    181 ‹ã§ã®CPSRのビットパターン
     160 *  割込みロック状態でのCPSRのビットパターン
    182161 */
    183162#define CPSR_INTLOCK            CPSR_FIQ_IRQ_BIT
     
    186165
    187166/*
    188  *  CPUロック状æ
    189 ‹ã¸ã®é·ç§»
     167 *  CPUロック状態への遷移
    190168 */
    191169Inline void
     
    203181
    204182        /*
    205          *  メモリ参ç
    206 §ãŒï¼Œã“の関数をè¶
    207 ãˆã¦æœ€é©åŒ–されることを抑止
     183         *  メモリ参照が,この関数を超えて最適化されることを抑止
    208184         */
    209185        ARM_MEMORY_CHANGED;
     
    211187
    212188/*
    213  *  CPUロック状æ
    214 ‹ã¸ã®ç§»è¡Œï¼ˆãƒ‡ã‚£ã‚¹ãƒ‘ッチできる状æ
    215 ‹ï¼‰
     189 *  CPUロック状態への移行(ディスパッチできる状態)
    216190 */
    217191#define lock_cpu_dsp()          lock_cpu()
    218192
    219193/*
    220  *  CPUロック状æ
    221 ‹ã®è§£é™¤
     194 *  CPUロック状態の解除
    222195 */
    223196Inline void
     
    225198{
    226199        /*
    227          *  メモリ参ç
    228 §ãŒï¼Œã“の関数をè¶
    229 ãˆã¦æœ€é©åŒ–されることを抑止
     200         *  メモリ参照が,この関数を超えて最適化されることを抑止
    230201         */
    231202        ARM_MEMORY_CHANGED;
     
    243214
    244215/*
    245  *  CPUロック状æ
    246 ‹ã®è§£é™¤ï¼ˆãƒ‡ã‚£ã‚¹ãƒ‘ッチできる状æ
    247 ‹ï¼‰
     216 *  CPUロック状態の解除(ディスパッチできる状態)
    248217 */
    249218#define unlock_cpu_dsp()        unlock_cpu()
    250219
    251220/*
    252  *  CPUロック状æ
    253 ‹ã®å‚ç
    254 §
     221 *  CPUロック状態の参照
    255222 */
    256223Inline bool_t
     
    265232
    266233/*
    267  *  割込みを受け付けるためのé
    268 å»¶å‡¦ç†
     234 *  割込みを受け付けるための遅延処理
    269235 */
    270236Inline void
     
    274240
    275241/*
    276  *  非タスクコンテキスト用のスタック初期値
     242 *  非タスクコンテキスト用のスタック初期値
    277243 */
    278244#define TOPPERS_ISTKPT(istk, istksz)    ((STK_T *)((char *)(istk) + (istksz)))
    279245
    280246/*
    281  *  タスクコンテキストブロックの定義
     247 *  タスクコンテキストブロックの定義
    282248 */
    283249typedef struct task_context_block {
    284         void    *sp;            /* スタックポインタ */
    285         FP              pc;                     /* 実行再開番地 */
     250        void    *sp;            /* スタックポインタ */
     251        FP              pc;                     /* 実行再開番地 */
    286252} TSKCTXB;
    287253
    288254/*
    289  *  タスクディスパッチャ
    290  */
    291 
    292 /*
    293  *  最高優å
    294 ˆé †ä½ã‚¿ã‚¹ã‚¯ã¸ã®ãƒ‡ã‚£ã‚¹ãƒ‘ッチ(core_support.S)
    295  *
    296  *  dispatchは,タスクコンテキストから呼び出されたサービスコール処理か
    297  *  ら呼び出すべきもので,タスクコンテキスト・CPUロック状æ
    298 ‹ãƒ»ãƒ‡ã‚£ã‚¹ãƒ‘ッ
    299  *  チ許可状æ
    300 ‹ãƒ»ï¼ˆãƒ¢ãƒ‡ãƒ«ä¸Šã®ï¼‰å‰²è¾¼ã¿å„ªå
    301 ˆåº¦ãƒžã‚¹ã‚¯å
    302 ¨è§£é™¤çŠ¶æ
    303 ‹ã§å‘¼ã³å‡ºã•ãª
    304  *  ければならない.
     255 *  タスクディスパッチャ
     256 */
     257
     258/*
     259 *  最高優先順位タスクへのディスパッチ(core_support.S)
     260 *
     261 *  dispatchは,タスクコンテキストから呼び出されたサービスコール処理か
     262 *  ら呼び出すべきもので,タスクコンテキスト・CPUロック状態・ディスパッ
     263 *  チ許可状態・(モデル上の)割込み優先度マスク全解除状態で呼び出さな
     264 *  ければならない.
    305265 */
    306266extern void dispatch(void);
    307267
    308268/*
    309  *  非タスクコンテキストからのディスパッチ要求
     269 *  非タスクコンテキストからのディスパッチ要求
    310270 */
    311271#define request_dispatch()
    312272
    313273/*
    314  *  ディスパッチャの動作開始(core_support.S)
    315  *
    316  *  start_dispatchは,カーネル起動時に呼び出すべきもので,すべての割込
    317  *  みを禁止した状æ
    318 ‹ï¼ˆå‰²è¾¼ã¿ãƒ­ãƒƒã‚¯çŠ¶æ
    319 ‹ã¨åŒç­‰ã®çŠ¶æ
    320 ‹ï¼‰ã§å‘¼ã³å‡ºã•ãªã‘れば
    321  *  ならない.
     274 *  ディスパッチャの動作開始(core_support.S)
     275 *
     276 *  start_dispatchは,カーネル起動時に呼び出すべきもので,すべての割込
     277 *  みを禁止した状態(割込みロック状態と同等の状態)で呼び出さなければ
     278 *  ならない.
    322279 */
    323280extern void start_dispatch(void) NoReturn;
    324281
    325282/*
    326  *  現在のコンテキストを捨ててディスパッチ(core_support.S)
    327  *
    328  *  exit_and_dispatchは,ext_tskから呼び出すべきもので,タスクコンテキ
    329  *  スト・CPUロック状æ
    330 ‹ãƒ»ãƒ‡ã‚£ã‚¹ãƒ‘ッチ許可状æ
    331 ‹ãƒ»ï¼ˆãƒ¢ãƒ‡ãƒ«ä¸Šã®ï¼‰å‰²è¾¼ã¿å„ªå
    332 ˆ
    333  *  度マスクå
    334 ¨è§£é™¤çŠ¶æ
    335 ‹ã§å‘¼ã³å‡ºã•ãªã‘ればならない.
     283 *  現在のコンテキストを捨ててディスパッチ(core_support.S)
     284 *
     285 *  exit_and_dispatchは,ext_tskから呼び出すべきもので,タスクコンテキ
     286 *  スト・CPUロック状態・ディスパッチ許可状態・(モデル上の)割込み優先
     287 *  度マスク全解除状態で呼び出さなければならない.
    336288 */
    337289extern void exit_and_dispatch(void) NoReturn;
    338290
    339291/*
    340  *  カーネルの終了処理の呼出し(core_support.S)
    341  *
    342  *  call_exit_kernelは,カーネルの終了時に呼び出すべきもので,非タスク
    343  *  コンテキストに切り換えて,カーネルの終了処理(exit_kernel)を呼び出
    344  *  す.
     292 *  カーネルの終了処理の呼出し(core_support.S)
     293 *
     294 *  call_exit_kernelは,カーネルの終了時に呼び出すべきもので,非タスク
     295 *  コンテキストに切り換えて,カーネルの終了処理(exit_kernel)を呼び出
     296 *  す.
    345297 */
    346298extern void call_exit_kernel(void) NoReturn;
    347299     
    348300/*
    349  *  タスクコンテキストの初期化
    350  *
    351  *  タスクが休止状æ
    352 ‹ã‹ã‚‰å®Ÿè¡Œã§ãã‚‹çŠ¶æ
    353 ‹ã«é·ç§»ã™ã‚‹æ™‚に呼ばれる.この時点
    354  *  でスタック領域を使ってはならない.
    355  *
    356  *  activate_contextを,インライン関数ではなくマクロ定義としているのは,
    357  *  この時点ではTCBが定義されていないためである.
     301 *  タスクコンテキストの初期化
     302 *
     303 *  タスクが休止状態から実行できる状態に遷移する時に呼ばれる.この時点
     304 *  でスタック領域を使ってはならない.
     305 *
     306 *  activate_contextを,インライン関数ではなくマクロ定義としているのは,
     307 *  この時点ではTCBが定義されていないためである.
    358308 */
    359309extern void start_r(void);
     
    367317
    368318/*
    369  *  標準の割込み管理機能の初期化処理を用いない
     319 *  標準の割込み管理機能の初期化処理を用いない
    370320 */
    371321#define OMIT_INITIALIZE_INTERRUPT
    372322
    373323/*
    374  *  割込みハンドラテーブル(kernel_cfg.c)
     324 *  割込みハンドラテーブル(kernel_cfg.c)
    375325 */
    376326extern FP inh_table[TNUM_INHNO];
    377327
    378328/*
    379  *  割込み要求ライン設定テーブル(kernel_cfg.c)
    380  *
    381  *  割込み要求ラインに対して割込み属性が設定されていれば1,設定されてい
    382  *  なければ0を保持するテーブル.
     329 *  割込み要求ライン設定テーブル(kernel_cfg.c)
     330 *
     331 *  割込み要求ラインに対して割込み属性が設定されていれば1,設定されてい
     332 *  なければ0を保持するテーブル.
    383333 */
    384334#ifdef USE_INTCFG_TABLE
     
    387337
    388338/*
    389  *  標準の例外管理機能の初期化処理を用いない
     339 *  標準の例外管理機能の初期化処理を用いない
    390340 */
    391341#define OMIT_INITIALIZE_EXCEPTION
    392342
    393343/*
    394  *  CPU例外ハンドラテーブル(kernel_cfg.c)
     344 *  CPU例外ハンドラテーブル(kernel_cfg.c)
    395345 */
    396346extern const FP exc_table[TNUM_EXCNO];
    397347
    398348/*
    399  *  CPU例外ハンドラの初期化
     349 *  CPU例外ハンドラの初期化
    400350 */
    401351Inline void
     
    405355
    406356/*
    407  *  CPU例外の発生した時のコンテキストの参ç
    408 §
    409  *
    410  *  CPU例外の発生した時のコンテキストが,タスクコンテキストの時にfalse,
    411  *  そうでない時にtrueを返す.
     357 *  CPU例外の発生した時のコンテキストの参照
     358 *
     359 *  CPU例外の発生した時のコンテキストが,タスクコンテキストの時にfalse,
     360 *  そうでない時にtrueを返す.
    412361 */
    413362Inline bool_t
     
    418367
    419368/*
    420  *  CPU例外の発生した時の割込み優å
    421 ˆåº¦ãƒžã‚¹ã‚¯ã®å‚ç
    422 §
     369 *  CPU例外の発生した時の割込み優先度マスクの参照
    423370 */
    424371Inline PRI
     
    429376
    430377/*
    431  *  CPUロック状æ
    432 ‹ã¾ãŸã¯å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯çŠ¶æ
    433 ‹ã‹ã®å‚ç
    434 §
     378 *  CPUロック状態または割込みロック状態かの参照
    435379 */
    436380Inline bool_t
     
    446390
    447391/*
    448  *  CPU例外の発生した時のコンテキストと割込みのマスク状æ
    449 ‹ã®å‚ç
    450 §
    451  *
    452  *  CPU例外の発生した時のシステム状æ
    453 ‹ãŒï¼Œã‚«ãƒ¼ãƒãƒ«å®Ÿè¡Œä¸­ã§ãªãï¼Œã‚¿ã‚¹ã‚¯ã‚³
    454  *  ンテキストであり,å
    455 ¨å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯çŠ¶æ
    456 ‹ã§ãªãï¼ŒCPUロック状æ
    457 ‹ã§ãªãï¼Œå‰²
    458  *  込み優å
    459 ˆåº¦ãƒžã‚¹ã‚¯å
    460 ¨è§£é™¤çŠ¶æ
    461 ‹ã§ã‚る時にtrue,そうでない時にfalseを返す
    462  *  (CPU例外がカーネル管理外の割込み処理中で発生した場合にもfalseを返
    463  *  す).
     392 *  CPU例外の発生した時のコンテキストと割込みのマスク状態の参照
     393 *
     394 *  CPU例外の発生した時のシステム状態が,カーネル実行中でなく,タスクコ
     395 *  ンテキストであり,全割込みロック状態でなく,CPUロック状態でなく,割
     396 *  込み優先度マスク全解除状態である時にtrue,そうでない時にfalseを返す
     397 *  (CPU例外がカーネル管理外の割込み処理中で発生した場合にもfalseを返
     398 *  す).
    464399 *
    465400 */
     
    475410
    476411/*
    477  *  MMU関連の操作(VMSA)
     412 *  MMU関連の操作(VMSA)
    478413 */
    479414#ifdef USE_ARM_MMU
    480415
    481416/*
    482  *  変換テーブルベースレジスタ(TTBR)の設定値
     417 *  変換テーブルベースレジスタ(TTBR)の設定値
    483418 */
    484419#if __TARGET_ARCH_ARM < 6
     
    495430
    496431/*
    497  *  MMUの設定æƒ
    498 å ±ã®ãƒ‡ãƒ¼ã‚¿åž‹
     432 *  MMUの設定情報のデータ型
    499433 */
    500434typedef struct arm_mmu_config {
    501         uint32_t        vaddr;                  /* 仮想アドレス */
    502         uint32_t        paddr;                  /* 物理アドレス */
    503         uint32_t        size;                   /* サイズ */
    504         uint32_t        attr;                   /* セクション属性 */
     435        uint32_t        vaddr;                  /* 仮想アドレス */
     436        uint32_t        paddr;                  /* 物理アドレス */
     437        uint32_t        size;                   /* サイズ */
     438        uint32_t        attr;                   /* セクション属性 */
    505439} ARM_MMU_CONFIG;
    506440
    507441/*
    508  *  MMUの設定æƒ
    509 å ±ã®æ•°ï¼ˆãƒ¡ãƒ¢ãƒªã‚¨ãƒªã‚¢ã®æ•°ï¼‰ï¼ˆtarget_kernel_impl.c)
     442 *  MMUの設定情報の数(メモリエリアの数)(target_kernel_impl.c)
    510443 */
    511444extern const uint_t arm_tnum_memory_area;
    512445
    513446/*
    514  *  MMUの設定æƒ
    515 å ±ï¼ˆãƒ¡ãƒ¢ãƒªã‚¨ãƒªã‚¢ã®æƒ
    516 å ±ï¼‰ï¼ˆtarget_kernel_impl.c)
     447 *  MMUの設定情報(メモリエリアの情報)(target_kernel_impl.c)
    517448 */
    518449extern ARM_MMU_CONFIG arm_memory_area[];
    519450
    520451/*
    521  *  MMUの初期化
     452 *  MMUの初期化
    522453 */
    523454extern void arm_mmu_initialize(void);
     
    529460
    530461/*
    531  *  コア依存の初期化
     462 *  コア依存の初期化
    532463 */
    533464extern void core_initialize(void);
    534465
    535466/*
    536  *  コア依存の終了処理
     467 *  コア依存の終了処理
    537468 */
    538469extern void core_terminate(void);
    539470
    540471/*
    541  *  CPU例外の発生状況のログ出力
     472 *  CPU例外の発生状況のログ出力
    542473 */
    543474#ifndef OMIT_XLOG_SYS
     
    547478
    548479/*
    549  *  未定義の割込みがå
    550 ¥ã£ãŸå ´åˆã®å‡¦ç†
     480 *  未定義の割込みが入った場合の処理
    551481 */
    552482extern void default_int_handler(void);
    553483
    554484/*
    555  *  未定義の例外がå
    556 ¥ã£ãŸå ´åˆã®å‡¦ç†
     485 *  未定義の例外が入った場合の処理
    557486 */
    558487extern void default_exc_handler(void *p_excinf, EXCNO excno);
Note: See TracChangeset for help on using the changeset viewer.