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_user.txt

    • Property svn:mime-type set to text/plain; charset=utf-8
    r353 r356  
    11=====================================================================
    2                          ARM64プロセッサ依存部
     2                         ARM64プロセッサ依存部
    33                                  Last Modified: '18/05/29
    44=====================================================================
    55
    66
    7 (1) 対応しているターゲットシステムの種類・構成
     7(1) 対応しているターゲットシステムの種類・構成
    88
    9 ARM64依存部は,ARMv8-A アーキテクチャをターゲットとしている.ARMv8-A は
    10 64ビットアーキテクチャであり命令セットレベルでもARMとは異なるため,
    11 ARM依存部と分けている.
     9ARM64依存部は,ARMv8-A アーキテクチャをターゲットとしている.ARMv8-A は
     1064ビットアーキテクチャであり命令セットレベルでもARMとは異なるため,
     11ARM依存部と分けている.
    1212
    13 (2) 使用する開発環境と動作検証した条件(バージョン,オプション等)
     13(2) 使用する開発環境と動作検証した条件(バージョン,オプション等)
    1414
    15 ã‚«ãƒ¼ãƒãƒ«ã¯GCCを用いてコンパイルする.動作確認したバージョンは各ターゲ
    16 ãƒƒãƒˆä¾å­˜éƒ¨ã®ãƒ‰ã‚­ãƒ¥ãƒ¡ãƒ³ãƒˆã«è¨˜è¼‰ã™ã‚‹ï¼Ž
     15カーネルはGCCを用いてコンパイルする.動作確認したバージョンは各ターゲ
     16ット依存部のドキュメントに記載する.
    1717
    18 (3) ターゲット定義事é 
    19 ã®è¦å®š
     18(3) ターゲット定義事項の規定
    2019
    21 (3-1) データ型に関する規定
     20(3-1) データ型に関する規定
    2221
    23 ãƒ‡ãƒ¼ã‚¿åž‹ã¯ arch/gcc/tool_stddef.h で定義されているå†
    24 å®¹ã§ï¼Œfloat型と
    25 double型は,それぞれIEEE754準拠の単精度浮動小数点数と倍精度浮動小数点
    26 æ•°ã§ã‚る.
     22データ型は arch/gcc/tool_stddef.h で定義されている内容で,float型と
     23double型は,それぞれIEEE754準拠の単精度浮動小数点数と倍精度浮動小数点
     24数である.
    2725
    28 (3-2) 割込み処理に関する規定
     26(3-2) 割込み処理に関する規定
    2927
    30 â—‹å‰²è¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ç•ªå·ã¨å‰²è¾¼ã¿ç•ªå·ã®å‰²å½“て,両è€
    31 ã®å¯¾å¿œ
     28○割込みハンドラ番号と割込み番号の割当て,両者の対応
    3229
    33 IRQ および FIQ をカーネル管理の割込みとする.
    34 å‰²è¾¼ã¿ãƒãƒ³ãƒ‰ãƒ©ç•ªå·ã¨å‰²è¾¼ã¿ç•ªå·ã¯ï¼Œä¾‹å¤–発生時にGICC_IAR にセットされる例外番
    35 å·ã‚’用いる.Generic Timer は27番で,割込みは0番からの番号が割り付けられ
    36 ã¦ã„る.
     30IRQ および FIQ をカーネル管理の割込みとする.
     31割込みハンドラ番号と割込み番号は,例外発生時にGICC_IAR にセットされる例外番
     32号を用いる.Generic Timer は27番で,割込みは0番からの番号が割り付けられ
     33ている.
    3734
    38 â—‹å‰²è¾¼ã¿å„ªå
    39 ˆåº¦ã®æ®µéšŽæ•°ï¼ˆTMIN_INTPRIの値),その設定方法
     35○割込み優先度の段階数(TMIN_INTPRIの値),その設定方法
    4036
    41 å‰²è¾¼ã¿å„ªå
    42 ˆåº¦ã®æ®µéšŽæ•°ã¯ï¼Œã‚¿ãƒ¼ã‚²ãƒƒãƒˆä¾å­˜éƒ¨æ¯Žã«ç•°ãªã‚‹ï¼Ž
    43 ã‚«ãƒ¼ãƒãƒ«ç®¡ç†å†
    44 ã®å‰²è¾¼ã¿ã®æœ€é«˜å„ªå
    45 ˆåº¦ï¼ˆTMIN_INTPRI)はターゲット依存部で設定する.
     37割込み優先度の段階数は,ターゲット依存部毎に異なる.
     38カーネル管理内の割込みの最高優先度(TMIN_INTPRI)はターゲット依存部で設定する.
    4639
    47 å„割込みの割込み優å
    48 ˆåº¦ã¯ï¼ŒCFG_INT で TMIN_INTPRI 以上の値を指定する.
     40各割込みの割込み優先度は,CFG_INT で TMIN_INTPRI 以上の値を指定する.
    4941
    50 â—‹dis_intとena_intのサポートの有無,その制限事é 
     42○dis_intとena_intのサポートの有無,その制限事項
     43
     44dis_intとena_intをサポートする.制限事項は特にない.
     45
     46○CFG_INTの制限事項と拡張(ターゲット定義で使用できる割込み属性)
     47
     48CFG_INTの制限事項はなく,ターゲット定義で使用可能な割込み属性は特にな
     49い.
     50
     51○カーネル管理外の割込み
     52
     53カーネル管理外の割込みはサポートしない.
     54IRQ,FIQ共にカーネル管理の割込みとして扱う.
    5155
    5256
    53 dis_intとena_intをサポートする.制限事é 
    54 ã¯ç‰¹ã«ãªã„.
     57(3-3) CPU例外処理に関する規定
    5558
    56 â—‹CFG_INTの制限事é 
    57 ã¨æ‹¡å¼µï¼ˆã‚¿ãƒ¼ã‚²ãƒƒãƒˆå®šç¾©ã§ä½¿ç”¨ã§ãã‚‹å‰²è¾¼ã¿å±žæ€§ï¼‰
     59○CPU例外ハンドラ番号
    5860
    59 CFG_INTの制限事é 
    60 ã¯ãªãï¼Œã‚¿ãƒ¼ã‚²ãƒƒãƒˆå®šç¾©ã§ä½¿ç”¨å¯èƒ½ãªå‰²è¾¼ã¿å±žæ€§ã¯ç‰¹ã«ãª
    61 ã„.
     61ARMv8では,例外発生時の例外レベル(EL),使用スタック,実行状態(AArch32 or AArch64),
     62発生した例外の種類により,ジャンプ先となる例外ベクタ中のオフセットアドレスが異なる.
     63CPU例外ハンドラはこのジャンプ先のオフセットアドレスで区別することにし,
     64それぞれ異なるCPU例外ハンドラ番号を割り当てる.
    6265
    63 â—‹ã‚«ãƒ¼ãƒãƒ«ç®¡ç†å¤–の割込み
    64 
    65 ã‚«ãƒ¼ãƒãƒ«ç®¡ç†å¤–の割込みはサポートしない.
    66 IRQ,FIQå
    67 ±ã«ã‚«ãƒ¼ãƒãƒ«ç®¡ç†ã®å‰²è¾¼ã¿ã¨ã—て扱う.
    68 
    69 
    70 (3-3) CPU例外処理に関する規定
    71 
    72 â—‹CPU例外ハンドラ番号
    73 
    74 ARMv8では,例外発生時の例外レベル(EL),使用スタック,実行状æ
    75 ‹(AArch32 or AArch64),
    76 ç™ºç”Ÿã—た例外の種類により,ジャンプå
    77 ˆã¨ãªã‚‹ä¾‹å¤–ベクタ中のオフセットアドレスが異なる.
    78 CPU例外ハンドラはこのジャンプå
    79 ˆã®ã‚ªãƒ•ã‚»ãƒƒãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹ã§åŒºåˆ¥ã™ã‚‹ã“とにし,
    80 ãã‚Œãžã‚Œç•°ãªã‚‹CPU例外ハンドラ番号を割り当てる.
    81 
    82   例外発生時の状æ
    83 ‹             ä¾‹å¤–の種類      例外番号  例外ベクタå
    84 ˆé ­ã‹ã‚‰ã®ã‚ªãƒ•ã‚»ãƒƒãƒˆ
     66  例外発生時の状態             例外の種類      例外番号  例外ベクタ先頭からのオフセット
    8567  AArch64, EL1t(EL1, SP_EL0)  Synchronous         0        0x0000
    8668  AArch64, EL1t(EL1, SP_EL0)  SError              1        0x0180
     
    9274  AArch32, EL0 (EL0, SP_EL0)  SError              7        0x0780
    9375
    94 (3-4) CPUロック・割込みロック
     76(3-4) CPUロック・割込みロック
    9577
    96 CPUロックは,PSTATE.I および PSTATE.F をå
    97 ±ã« 1 にすることで実現する.
    98 ã‚«ãƒ¼ãƒãƒ«ç®¡ç†å¤–の割込みをサポートしないため,å
    99 ¨å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯ãƒ•ãƒ©ã‚°ã‚‚
    100 CPUロックと同様の実è£
    101 ã§ã‚る.ただし CPUロックフラグとは独立したフラグ
    102 ã¨ã—てå
    103 ¨å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯ãƒ•ãƒ©ã‚°ã‚’サポートする.å
    104 ·ä½“的にはSIL_LOC_INT呼び出し
    105 æ™‚にIおよびFフラグの状æ
    106 ‹ã‚’記憶しておき,SIL_UNL_INT でå
    107 ƒã®çŠ¶æ
    108 ‹ã«
    109 æˆ»ã—ている.
     78CPUロックは,PSTATE.I および PSTATE.F を共に 1 にすることで実現する.
     79カーネル管理外の割込みをサポートしないため,全割込みロックフラグも
     80CPUロックと同様の実装である.ただし CPUロックフラグとは独立したフラグ
     81として全割込みロックフラグをサポートする.具体的にはSIL_LOC_INT呼び出し
     82時にIおよびFフラグの状態を記憶しておき,SIL_UNL_INT で元の状態に
     83戻している.
    11084
    111 (3-5) 性能評価用システム時刻の参ç
    112 §ã«é–¢ã™ã‚‹è¦å®š
     85(3-5) 性能評価用システム時刻の参照に関する規定
    11386
    114 get_utmをサポートしない.
     87get_utmをサポートしない.
    11588
    11689
    117 (3-6) スタートアップルーチンでの初期化å†
    118 å®¹
     90(3-6) スタートアップルーチンでの初期化内容
    11991
    120 ã‚¹ã‚¿ãƒ¼ãƒˆã‚¢ãƒƒãƒ—ルーチンが前提とするプロセッサの状æ
    121 ‹ã¯ãƒ—ロセッサにより異なるため,
    122 ã‚¹ã‚¿ãƒ¼ãƒˆã‚¢ãƒƒãƒ—ルーチンはターゲット依存部にé
    123 ç½®ã—ている.
     92スタートアップルーチンが前提とするプロセッサの状態はプロセッサにより異なるため,
     93スタートアップルーチンはターゲット依存部に配置している.
    12494
    125 ä¾‹ã¨ã—てQEMU VIRT ボードの場合は以下のようになっている.
    126 ãƒ»ä¾‹å¤–レベルは既定でEL1
    127 ãƒ»ä½¿ç”¨ã‚¹ã‚¿ãƒƒã‚¯ã¯(EL1の場合,) SP_EL1
    128 ãƒ»èµ·å‹•ç›´å¾Œã¯PSTATEのFおよびIは1(IRQ,FIQ禁止)
     95例としてQEMU VIRT ボードの場合は以下のようになっている.
     96・例外レベルは既定でEL1
     97・使用スタックは(EL1の場合,) SP_EL1
     98・起動直後はPSTATEのFおよびIは1(IRQ,FIQ禁止)
    12999
    130 ã‚¹ã‚¿ãƒ¼ãƒˆã‚¢ãƒƒãƒ—ルーチンではスタックポインタの初期化,ベクタテーブルアドレスの設定,
    131 ãƒ¡ãƒ¢ãƒªã®åˆæœŸåŒ–などのå¿
    132 è¦ãªå‡¦ç†ã‚’行い,sta_ker を呼び出す.
     100スタートアップルーチンではスタックポインタの初期化,ベクタテーブルアドレスの設定,
     101メモリの初期化などの必要な処理を行い,sta_ker を呼び出す.
    133102
    134103
    135 (4) タイマドライバ関連のæƒ
    136 å ±
     104(4) タイマドライバ関連の情報
    137105
    138 ã‚«ãƒ¼ãƒãƒ«ã®ã‚¿ã‚¤ãƒ ãƒ†ã‚£ãƒƒã‚¯ã¨ã—て,Generic Timer を使用する,
    139 ãƒ†ã‚£ãƒƒã‚¯å‘¨æœŸã¯1msecとする.
     106カーネルのタイムティックとして,Generic Timer を使用する,
     107ティック周期は1msecとする.
    140108
    141109
    142 (5) ターゲット依存部での設定é 
    143 ç›®
     110(5) ターゲット依存部での設定項目
    144111
    145 ã‚¿ãƒ¼ã‚²ãƒƒãƒˆä¾å­˜éƒ¨ã§ã¯ä»¥ä¸‹ã®ãƒžã‚¯ãƒ­ã‚’定義するå¿
    146 è¦ãŒã‚る.
     112ターゲット依存部では以下のマクロを定義する必要がある.
    147113
    148    ãƒ»TMAX_INTNO     : 割込み番号の最大値(通常の割込み番号 + 15)
    149    ãƒ»TMIN_INTPRI    : 割込み優å
    150 ˆåº¦ã®æœ€å°å€¤ï¼ˆæœ€é«˜å€¤ï¼‰
    151    ãƒ»TIC_NUME       : タイムティックの周期の分子
    152    ãƒ»TIC_DENO       : タイムティックの周期の分母
    153    ãƒ»INTPRI_TIMER   : タイマ割込み割込み優å
    154 ˆåº¦
    155    ãƒ»INTATR_TIMER   : タイマ割込みの割込み属性
    156    ãƒ»DEFAULT_ISTKSZ : スタックサイズ(16byte単位で指定)
     114   ・TMAX_INTNO     : 割込み番号の最大値(通常の割込み番号 + 15)
     115   ・TMIN_INTPRI    : 割込み優先度の最小値(最高値)
     116   ・TIC_NUME       : タイムティックの周期の分子
     117   ・TIC_DENO       : タイムティックの周期の分母
     118   ・INTPRI_TIMER   : タイマ割込み割込み優先度
     119   ・INTATR_TIMER   : タイマ割込みの割込み属性
     120   ・DEFAULT_ISTKSZ : スタックサイズ(16byte単位で指定)
    157121
    158122
    159 (6) ディレクトリ構成・ファイル構成
     123(6) ディレクトリ構成・ファイル構成
    160124  ./arch/arm64/
    161125    ./MANIFEST
     
    185149    ./prc_user.txt
    186150
    187 (12) バージョン履歴
     151(12) バージョン履歴
    188152
    1891532018/05/30
    190  ãƒ»æœ€åˆã®ãƒªãƒªãƒ¼ã‚¹
     154 ・最初のリリース
Note: See TracChangeset for help on using the changeset viewer.