Ignore:
Timestamp:
Jun 8, 2018, 11:24:32 AM (6 years ago)
Author:
nmir-saito
Message:

set svn:mime-type to files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ssp_aarch64/trunk/arm64_gcc/prc_config.h

    • Property svn:mime-type set to text/plain; charset=utf-8
    r353 r356  
    88 *             Nagoya Municipal Industrial Research Institute, JAPAN
    99 *
    10  *  上記著作権è€
    11 ã¯ï¼Œä»¥ä¸‹ã®(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
    12  *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
    13  *  変・再é
    14 å¸ƒï¼ˆä»¥ä¸‹ï¼Œåˆ©ç”¨ã¨å‘¼ã¶ï¼‰ã™ã‚‹ã“とを無償で許諾する.
    15  *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
    16  *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
    17  *      スコード中に含まれていること.
    18  *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
    19  *      用できる形で再é
    20 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œå†é
    21 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨
    22  *      è€
    23 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—作権表示,この利用条件および下記
    24  *      の無保証規定を掲載すること.
    25  *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
    26  *      用できない形で再é
    27 å¸ƒã™ã‚‹å ´åˆã«ã¯ï¼Œæ¬¡ã®ã„ずれかの条件を満たすこ
    28  *      と.
    29  *    (a) 再é
    30 å¸ƒã«ä¼´ã†ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆï¼ˆåˆ©ç”¨è€
    31 ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ãªã©ï¼‰ã«ï¼Œä¸Šè¨˜ã®è‘—
    32  *        作権表示,この利用条件および下記の無保証規定を掲載すること.
    33  *    (b) 再é
    34 å¸ƒã®å½¢æ
    35 ‹ã‚’,別に定める方法によって,TOPPERSプロジェクトに
    36  *        報告すること.
    37  *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
    38  *      害からも,上記著作権è€
    39 ãŠã‚ˆã³TOPPERSプロジェクトをå
    40 è²¬ã™ã‚‹ã“と.
    41  *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
    42  *      由に基づく請求からも,上記著作権è€
    43 ãŠã‚ˆã³TOPPERSプロジェクトを
    44  *      å
    45 è²¬ã™ã‚‹ã“と.
    46  *
    47  *  本ソフトウェアは,無保証で提供されているものである.上記著作権è€
    48 ãŠ
    49  *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
    50  *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
    51  *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
    52  *  の責任を負わない.
     10 *  上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
     11 *  ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
     12 *  変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
     13 *  (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
     14 *      権表示,この利用条件および下記の無保証規定が,そのままの形でソー
     15 *      スコード中に含まれていること.
     16 *  (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
     17 *      用できる形で再配布する場合には,再配布に伴うドキュメント(利用
     18 *      者マニュアルなど)に,上記の著作権表示,この利用条件および下記
     19 *      の無保証規定を掲載すること.
     20 *  (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
     21 *      用できない形で再配布する場合には,次のいずれかの条件を満たすこ
     22 *      と.
     23 *    (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
     24 *        作権表示,この利用条件および下記の無保証規定を掲載すること.
     25 *    (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
     26 *        報告すること.
     27 *  (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
     28 *      害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
     29 *      また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
     30 *      由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
     31 *      免責すること.
     32 *
     33 *  本ソフトウェアは,無保証で提供されているものである.上記著作権者お
     34 *  よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
     35 *  に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
     36 *  アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
     37 *  の責任を負わない.
    5338 *
    5439 *  @(#) $Id: prc_config.h 1304 2008-08-27 07:28:36Z ertl-honda $
     
    5641
    5742/*
    58  *              プロセッサ依存モジュール(ARM64用)
    59  *
    60  *  このインクルードファイルは,target_config.h(または,そこからインク
    61  *  ルードされるファイル)のみからインクルードされる.他のファイルから
    62  *  直接インクルードしてはならない.
     43 *              プロセッサ依存モジュール(ARM64用)
     44 *
     45 *  このインクルードファイルは,target_config.h(または,そこからインク
     46 *  ルードされるファイル)のみからインクルードされる.他のファイルから
     47 *  直接インクルードしてはならない.
    6348 */
    6449
     
    7156
    7257/*
    73  *  非タスクコンテキスト用のスタック初期値
     58 *  非タスクコンテキスト用のスタック初期値
    7459 */
    7560#define TOPPERS_ISTKPT(istk, istksz) ((STK_T *)((char *)(istk) + (istksz)))
    7661
    7762/*
    78  *  割込みネスト数
     63 *  割込みネスト数
    7964 */
    8065extern uint8_t intnest;
    8166
    8267/*
    83  *  コンテキストの参ç
    84 §
     68 *  コンテキストの参照
    8569 *
    8670 */
     
    10387
    10488/*
    105  *  TOPPERS標準割込み処理モデルの実現
    106  *
    107  *  å
    108 ¨å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯ãƒ•ãƒ©ã‚°ã¨ã—て PSTATE.F および PSTATE.I を用いる
    109  *  CPUロックフラグとして PSTATE.I を用いる
    110  *  割込み優å
    111 ˆåº¦ãƒžã‚¹ã‚¯ã¨ã—て GICC_PMR レジスタを用いる.
    112  */
    113 
    114 /*
    115  *  TIPM_ENAALL(割込み優å
    116 ˆåº¦ãƒžã‚¹ã‚¯å
    117 ¨è§£é™¤ï¼‰ã®å†
    118 éƒ¨è¡¨ç¾
     89 *  TOPPERS標準割込み処理モデルの実現
     90 *
     91 *  全割込みロックフラグとして PSTATE.F および PSTATE.I を用いる
     92 *  CPUロックフラグとして PSTATE.I を用いる
     93 *  割込み優先度マスクとして GICC_PMR レジスタを用いる.
     94 */
     95
     96/*
     97 *  TIPM_ENAALL(割込み優先度マスク全解除)の内部表現
    11998 */
    12099#define IIPM_ENAALL  (0)
     
    124103
    125104/*
    126  *  CPUロック状æ
    127 ‹ã¸ã®ç§»è¡Œ
     105 *  CPUロック状態への移行
    128106 */
    129107Inline void
     
    137115
    138116/*
    139  *  CPUロック状æ
    140 ‹ã®è§£é™¤
     117 *  CPUロック状態の解除
    141118 */
    142119Inline void
     
    150127
    151128/*
    152  *  CPUロック状æ
    153 ‹ã®å‚ç
    154 §
     129 *  CPUロック状態の参照
    155130 */
    156131Inline bool_t
     
    174149
    175150/*
    176  * (モデル上の)割込み優å
    177 ˆåº¦ãƒžã‚¹ã‚¯ã®è¨­å®š
    178  *
    179  *  CPUロックフラグがクリアされている時は,ハードウェアの割込み優å
    180 ˆåº¦ãƒž
    181  *  スクを設定する.CPUロックフラグがセットされている時は,saved_iipm
    182  *  を設定し,さらに,ハードウェアの割込み優å
    183 ˆåº¦ãƒžã‚¹ã‚¯ã‚’,設定しようと
    184  *  した(モデル上の)割込み優å
    185 ˆåº¦ãƒžã‚¹ã‚¯ã¨TIPM_LOCKの高い方に設定する.
     151 * (モデル上の)割込み優先度マスクの設定
     152 *
     153 *  CPUロックフラグがクリアされている時は,ハードウェアの割込み優先度マ
     154 *  スクを設定する.CPUロックフラグがセットされている時は,saved_iipm
     155 *  を設定し,さらに,ハードウェアの割込み優先度マスクを,設定しようと
     156 *  した(モデル上の)割込み優先度マスクとTIPM_LOCKの高い方に設定する.
    186157 */
    187158Inline void
     
    195166
    196167/*
    197  * (モデル上の)割込み優å
    198 ˆåº¦ãƒžã‚¹ã‚¯ã®å‚ç
    199 §
    200  *
    201  *  CPUロックフラグがクリアされている時はハードウェアの割込み優å
    202 ˆåº¦ãƒž
    203  *  スクを,セットされている時はsaved_iipmを参ç
    204 §ã™ã‚‹ï¼Ž
     168 * (モデル上の)割込み優先度マスクの参照
     169 *
     170 *  CPUロックフラグがクリアされている時はハードウェアの割込み優先度マ
     171 *  スクを,セットされている時はsaved_iipmを参照する.
    205172 */
    206173Inline PRI
     
    214181
    215182/*
    216  *  ディスパッチャの動作開始(prc_support.S)
    217  *
    218  *  start_dispatchは,カーネル起動時に呼び出すべきもので,すべての割込
    219  *  みを禁止した状æ
    220 ‹ï¼ˆå‰²è¾¼ã¿ãƒ­ãƒƒã‚¯çŠ¶æ
    221 ‹ã¨åŒç­‰ã®çŠ¶æ
    222 ‹ï¼‰ã§å‘¼ã³å‡ºã•ãªã‘れば
    223  *  ならない.
     183 *  ディスパッチャの動作開始(prc_support.S)
     184 *
     185 *  start_dispatchは,カーネル起動時に呼び出すべきもので,すべての割込
     186 *  みを禁止した状態(割込みロック状態と同等の状態)で呼び出さなければ
     187 *  ならない.
    224188 */
    225189extern void start_dispatch(void) NoReturn;
     
    227191
    228192/*
    229  *  カーネルの終了処理の呼出し(prc_support.S)
    230  *
    231  *  call_exit_kernelは,カーネルの終了時に呼び出すべきもので,非タスク
    232  *  コンテキストに切り換えて,カーネルの終了処理(exit_kernel)を呼び出
    233  *  す.
     193 *  カーネルの終了処理の呼出し(prc_support.S)
     194 *
     195 *  call_exit_kernelは,カーネルの終了時に呼び出すべきもので,非タスク
     196 *  コンテキストに切り換えて,カーネルの終了処理(exit_kernel)を呼び出
     197 *  す.
    234198 */
    235199extern void call_exit_kernel(void) NoReturn;
    236200
    237201/*
    238  *  アイドルループの実è£
    239 
    240  *
    241  *  単にCPUロック状æ
    242 ‹ã¨CPUロック解除状æ
    243 ‹ã‚’呼び出す実è£
    244 ã¨ã™ã‚‹ï¼Ž
    245  *  スリープモードにå
    246 ¥ã‚Œã‚‹å ´åˆã¯æœ¬å‡¦ç†ã‚’wfi命令を用いて書き換えれば良い.
     202 *  アイドルループの実装
     203 *
     204 *  単にCPUロック状態とCPUロック解除状態を呼び出す実装とする.
     205 *  スリープモードに入れる場合は本処理をwfi命令を用いて書き換えれば良い.
    247206 */
    248207Inline void
     
    250209{
    251210    x_unlock_cpu();
    252     /* CPUアンロック => CPUロック  */
     211    /* CPUアンロック => CPUロック  */
    253212    x_lock_cpu();
    254213}
    255214
    256215/*
    257  *  割込み番号・割込みハンドラ番号
    258  *
    259  *  割込みハンドラ番号(inhno)と割込み番号(intno)は,
    260  *  割り込み発生時にGICC_IAR に設定される例外番号とする.
    261  */
    262 
    263 /*
    264  *  割込み番号の範囲の判定
     216 *  割込み番号・割込みハンドラ番号
     217 *
     218 *  割込みハンドラ番号(inhno)と割込み番号(intno)は,
     219 *  割り込み発生時にGICC_IAR に設定される例外番号とする.
     220 */
     221
     222/*
     223 *  割込み番号の範囲の判定
    265224 */
    266225#define VALID_INTNO(intno)           ((TMIN_INTNO <= (intno)) && ((intno) <= TMAX_INTNO))
     
    269228
    270229/*
    271  *  割込みハンドラの設定
     230 *  割込みハンドラの設定
    272231 */
    273232Inline void
     
    277236
    278237/*
    279  *  割込みハンドラの出å
    280 ¥å£å‡¦ç†ã®ç”Ÿæˆãƒžã‚¯ãƒ­
     238 *  割込みハンドラの出入口処理の生成マクロ
    281239 *
    282240 */
     
    285243
    286244/*
    287  *  割込み要求禁止フラグ
    288  */
    289 
    290 /*
    291  *  割込み要求ライン設定テーブル(kernel_cfg.c)
    292  *
    293  *  割込み属性が設定されているかを判別するためのテーブル(kernel_cfg.c)
    294  *  割込み要求ラインに対して割込み属性が設定されていれば1,設定されてい
    295  *  なければ0を保持するテーブル.
     245 *  割込み要求禁止フラグ
     246 */
     247
     248/*
     249 *  割込み要求ライン設定テーブル(kernel_cfg.c)
     250 *
     251 *  割込み属性が設定されているかを判別するためのテーブル(kernel_cfg.c)
     252 *  割込み要求ラインに対して割込み属性が設定されていれば1,設定されてい
     253 *  なければ0を保持するテーブル.
    296254 */
    297255extern const uint8_t intcfg_table[];
     
    299257
    300258/*
    301  *  割込み要求禁止フラグのセット
    302  *
    303  *  intnoで指定された割込み要求ラインに対する割込み要求禁止フラグのセッ
    304  *  トし,割込みを禁止する.割込み属性が設定されていない割込み要求ライ
    305  *  ンが指定された場合には,falseを返す.
     259 *  割込み要求禁止フラグのセット
     260 *
     261 *  intnoで指定された割込み要求ラインに対する割込み要求禁止フラグのセッ
     262 *  トし,割込みを禁止する.割込み属性が設定されていない割込み要求ライ
     263 *  ンが指定された場合には,falseを返す.
    306264 */
    307265Inline bool_t
     
    320278
    321279/*
    322  *  割込み要求禁止フラグのクリア
    323  *
    324  *  intnoで指定された割込み要求ラインに対する割込み要求禁止フラグのクリ
    325  *  アし,割込みを許可する.割込み属性が設定されていない割込み要求ライ
    326  *  ンが指定された場合には,falseを返す.
     280 *  割込み要求禁止フラグのクリア
     281 *
     282 *  intnoで指定された割込み要求ラインに対する割込み要求禁止フラグのクリ
     283 *  アし,割込みを許可する.割込み属性が設定されていない割込み要求ライ
     284 *  ンが指定された場合には,falseを返す.
    327285 */
    328286Inline bool_t
     
    341299
    342300/*
    343  *  割込み要求のクリア
     301 *  割込み要求のクリア
    344302 */
    345303Inline void
     
    350308
    351309/*
    352  *  割込み要求のチェック
     310 *  割込み要求のチェック
    353311 */
    354312Inline bool_t
     
    360318
    361319/*
    362  *  割込み要求ラインの属性の設定
     320 *  割込み要求ラインの属性の設定
    363321 */
    364322extern void x_config_int(INTNO intno, ATR intatr, PRI intpri);
    365323
    366324/*
    367  *  割込みハンドラå
    368 ¥å£ã§å¿
    369 è¦ãªIRC操作
     325 *  割込みハンドラ入口で必要なIRC操作
    370326 */
    371327Inline void
     
    375331
    376332/*
    377  *  割込みハンドラの出口でå¿
    378 è¦ãªIRC操作
     333 *  割込みハンドラの出口で必要なIRC操作
    379334 */
    380335Inline void
     
    384339
    385340/*
    386  *  CPU例外ハンドラ関連
    387  */
    388 
    389 /*
    390  *  CPU例外ハンドラ番号
     341 *  CPU例外ハンドラ関連
     342 */
     343
     344/*
     345 *  CPU例外ハンドラ番号
    391346 */
    392347#define VALID_EXCNO_DEFEXC(excno)    (TMIN_EXCNO <= (excno) && (excno) <= TMAX_EXCNO)
    393348
    394349/*
    395  *  CPU例外ハンドラの設定
     350 *  CPU例外ハンドラの設定
    396351 */
    397352Inline void
     
    401356
    402357/*
    403  *  CPU例外ハンドラのå
    404 ¥å£å‡¦ç†ã®ç”Ÿæˆãƒžã‚¯ãƒ­
     358 *  CPU例外ハンドラの入口処理の生成マクロ
    405359 */
    406360#define EXC_ENTRY(excno, exchdr)    exchdr
     
    408362
    409363/*
    410  *  プロセッサ依存の初期化
     364 *  プロセッサ依存の初期化
    411365 */
    412366extern void prc_initialize(void);
    413367
    414368/*
    415  *  プロセッサ依存の終了時処理
     369 *  プロセッサ依存の終了時処理
    416370 */
    417371extern void prc_terminate(void) NoReturn;
    418372
    419373/*
    420  * 登録されていない例外が発生すると呼び出される
     374 * 登録されていない例外が発生すると呼び出される
    421375 */
    422376extern void default_exc_handler(void *p_excinf);
    423377
    424378/*
    425  * 未登録の割込みが発生した場合に呼び出される
     379 * 未登録の割込みが発生した場合に呼び出される
    426380 */
    427381extern void default_int_handler(void);
    428382
    429383/*
    430  *  割込み/例外ハンドラテーブル(kernel_cfg.c)
     384 *  割込み/例外ハンドラテーブル(kernel_cfg.c)
    431385 */
    432386extern const INTHDR inh_table[];
     
    434388
    435389/*
    436  *  割込みハンドラの呼び出し
     390 *  割込みハンドラの呼び出し
    437391 */
    438392extern void call_int_handler(uint32_t intno);
    439393
    440394/*
    441  *  CPU例外ハンドラの呼び出し
     395 *  CPU例外ハンドラの呼び出し
    442396 */
    443397extern void call_exc_handler(void *p_excinf, uint32_t excno);
Note: See TracChangeset for help on using the changeset viewer.