Changeset 356 for ssp_aarch64/trunk/arm64_gcc/prc_user.txt
- Timestamp:
- Jun 8, 2018, 11:24:32 AM (6 years ago)
- 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 1 1 ===================================================================== 2 ARM64 ããã»ããµä¾åé¨2 ARM64プロセッサ依存部 3 3 Last Modified: '18/05/29 4 4 ===================================================================== 5 5 6 6 7 (1) 対å¿ãã¦ããã¿ã¼ã²ããã·ã¹ãã ã®ç¨®é¡ã»æ§æ7 (1) 対応しているターゲットシステムの種類・構成 8 8 9 ARM64 ä¾åé¨ã¯ï¼ARMv8-A ã¢ã¼ããã¯ãã£ãã¿ã¼ã²ããã¨ãã¦ããï¼ARMv8-A ã¯10 64 ãããã¢ã¼ããã¯ãã£ã§ããå½ä»¤ã»ããã¬ãã«ã§ãARMã¨ã¯ç°ãªãããï¼11 ARM ä¾åé¨ã¨åãã¦ããï¼9 ARM64依存部は,ARMv8-A アーキテクチャをターゲットとしている.ARMv8-A は 10 64ビットアーキテクチャであり命令セットレベルでもARMとは異なるため, 11 ARM依存部と分けている. 12 12 13 (2) 使ç¨ããéçºç°å¢ã¨åä½æ¤è¨¼ããæ¡ä»¶ï¼ãã¼ã¸ã§ã³ï¼ãªãã·ã§ã³çï¼13 (2) 使用する開発環境と動作検証した条件(バージョン,オプション等) 14 14 15 ã«ã¼ãã«ã¯GCCãç¨ãã¦ã³ã³ãã¤ã«ããï¼åä½ç¢ºèªãããã¼ã¸ã§ã³ã¯åã¿ã¼ã² 16 ããä¾åé¨ã®ããã¥ã¡ã³ãã«è¨è¼ããï¼ 15 カーネルはGCCを用いてコンパイルする.動作確認したバージョンは各ターゲ 16 ット依存部のドキュメントに記載する. 17 17 18 (3) ã¿ã¼ã²ããå®ç¾©äºé 19 ã®è¦å® 18 (3) ターゲット定義事項の規定 20 19 21 (3-1) ãã¼ã¿åã«é¢ããè¦å®20 (3-1) データ型に関する規定 22 21 23 ãã¼ã¿å㯠arch/gcc/tool_stddef.h ã§å®ç¾©ããã¦ããå 24 容ã§ï¼floatå㨠25 doubleåã¯ï¼ããããIEEE754æºæ ã®å精度浮åå°æ°ç¹æ°ã¨å精度浮åå°æ°ç¹ 26 æ°ã§ããï¼ 22 データ型は arch/gcc/tool_stddef.h で定義されている内容で,float型と 23 double型は,それぞれIEEE754準拠の単精度浮動小数点数と倍精度浮動小数点 24 数である. 27 25 28 (3-2) å²è¾¼ã¿å¦çã«é¢ããè¦å®26 (3-2) 割込み処理に関する規定 29 27 30 âå²è¾¼ã¿ãã³ãã©çªå·ã¨å²è¾¼ã¿çªå·ã®å²å½ã¦ï¼ä¸¡è 31 ã®å¯¾å¿ 28 ○割込みハンドラ番号と割込み番号の割当て,両者の対応 32 29 33 IRQ ããã³ FIQ ãã«ã¼ãã«ç®¡çã®å²è¾¼ã¿ã¨ããï¼34 å²è¾¼ã¿ãã³ãã©çªå·ã¨å²è¾¼ã¿çªå·ã¯ï¼ä¾å¤çºçæã«GICC_IAR ã«ã»ãããããä¾å¤çª 35 å·ãç¨ããï¼Generic Timer ã¯27çªã§ï¼å²è¾¼ã¿ã¯0çªããã®çªå·ãå²ãä»ããã 36 ã¦ããï¼ 30 IRQ および FIQ をカーネル管理の割込みとする. 31 割込みハンドラ番号と割込み番号は,例外発生時にGICC_IAR にセットされる例外番 32 号を用いる.Generic Timer は27番で,割込みは0番からの番号が割り付けられ 33 ている. 37 34 38 âå²è¾¼ã¿åªå 39 度ã®æ®µéæ°ï¼TMIN_INTPRIã®å¤ï¼ï¼ãã®è¨å®æ¹æ³ 35 ○割込み優先度の段階数(TMIN_INTPRIの値),その設定方法 40 36 41 å²è¾¼ã¿åªå 42 度ã®æ®µéæ°ã¯ï¼ã¿ã¼ã²ããä¾åé¨æ¯ã«ç°ãªãï¼ 43 ã«ã¼ãã«ç®¡çå 44 ã®å²è¾¼ã¿ã®æé«åªå 45 度ï¼TMIN_INTPRIï¼ã¯ã¿ã¼ã²ããä¾åé¨ã§è¨å®ããï¼ 37 割込み優先度の段階数は,ターゲット依存部毎に異なる. 38 カーネル管理内の割込みの最高優先度(TMIN_INTPRI)はターゲット依存部で設定する. 46 39 47 åå²è¾¼ã¿ã®å²è¾¼ã¿åªå 48 度ã¯ï¼CFG_INT 㧠TMIN_INTPRI 以ä¸ã®å¤ãæå®ããï¼ 40 各割込みの割込み優先度は,CFG_INT で TMIN_INTPRI 以上の値を指定する. 49 41 50 âdis_intã¨ena_intã®ãµãã¼ãã®æç¡ï¼ãã®å¶éäºé 42 ○dis_intとena_intのサポートの有無,その制限事項 43 44 dis_intとena_intをサポートする.制限事項は特にない. 45 46 ○CFG_INTの制限事項と拡張(ターゲット定義で使用できる割込み属性) 47 48 CFG_INTの制限事項はなく,ターゲット定義で使用可能な割込み属性は特にな 49 い. 50 51 ○カーネル管理外の割込み 52 53 カーネル管理外の割込みはサポートしない. 54 IRQ,FIQ共にカーネル管理の割込みとして扱う. 51 55 52 56 53 dis_intã¨ena_intããµãã¼ãããï¼å¶éäºé 54 ã¯ç¹ã«ãªãï¼ 57 (3-3) CPU例外処理に関する規定 55 58 56 âCFG_INTã®å¶éäºé 57 ã¨æ¡å¼µï¼ã¿ã¼ã²ããå®ç¾©ã§ä½¿ç¨ã§ããå²è¾¼ã¿å±æ§ï¼ 59 ○CPU例外ハンドラ番号 58 60 59 CFG_INTã®å¶éäºé 60 ã¯ãªãï¼ã¿ã¼ã²ããå®ç¾©ã§ä½¿ç¨å¯è½ãªå²è¾¼ã¿å±æ§ã¯ç¹ã«ãª 61 ãï¼ 61 ARMv8では,例外発生時の例外レベル(EL),使用スタック,実行状態(AArch32 or AArch64), 62 発生した例外の種類により,ジャンプ先となる例外ベクタ中のオフセットアドレスが異なる. 63 CPU例外ハンドラはこのジャンプ先のオフセットアドレスで区別することにし, 64 それぞれ異なるCPU例外ハンドラ番号を割り当てる. 62 65 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 例外発生時の状態 例外の種類 例外番号 例外ベクタ先頭からのオフセット 85 67 AArch64, EL1t(EL1, SP_EL0) Synchronous 0 0x0000 86 68 AArch64, EL1t(EL1, SP_EL0) SError 1 0x0180 … … 92 74 AArch32, EL0 (EL0, SP_EL0) SError 7 0x0780 93 75 94 (3-4) CPU ããã¯ã»å²è¾¼ã¿ããã¯76 (3-4) CPUロック・割込みロック 95 77 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 æ»ãã¦ããï¼ 78 CPUロックは,PSTATE.I および PSTATE.F を共に 1 にすることで実現する. 79 カーネル管理外の割込みをサポートしないため,全割込みロックフラグも 80 CPUロックと同様の実装である.ただし CPUロックフラグとは独立したフラグ 81 として全割込みロックフラグをサポートする.具体的にはSIL_LOC_INT呼び出し 82 時にIおよびFフラグの状態を記憶しておき,SIL_UNL_INT で元の状態に 83 戻している. 110 84 111 (3-5) æ§è½è©ä¾¡ç¨ã·ã¹ãã æå»ã®åç 112 §ã«é¢ããè¦å® 85 (3-5) 性能評価用システム時刻の参照に関する規定 113 86 114 get_utm ããµãã¼ãããªãï¼87 get_utmをサポートしない. 115 88 116 89 117 (3-6) ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ã§ã®åæåå 118 容 90 (3-6) スタートアップルーチンでの初期化内容 119 91 120 ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ãåæã¨ããããã»ããµã®ç¶æ 121 ã¯ããã»ããµã«ããç°ãªãããï¼ 122 ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ã¯ã¿ã¼ã²ããä¾åé¨ã«é 123 ç½®ãã¦ããï¼ 92 スタートアップルーチンが前提とするプロセッサの状態はプロセッサにより異なるため, 93 スタートアップルーチンはターゲット依存部に配置している. 124 94 125 ä¾ã¨ãã¦QEMU VIRT ãã¼ãã®å ´åã¯ä»¥ä¸ã®ããã«ãªã£ã¦ããï¼ 126 ã»ä¾å¤ã¬ãã«ã¯æ¢å®ã§EL1127 ã»ä½¿ç¨ã¹ã¿ãã¯ã¯(EL1ã®å ´åï¼) SP_EL1128 ã»èµ·åç´å¾ã¯PSTATEã®Fããã³Iã¯1ï¼IRQ,FIQç¦æ¢ï¼ 95 例としてQEMU VIRT ボードの場合は以下のようになっている. 96 ・例外レベルは既定でEL1 97 ・使用スタックは(EL1の場合,) SP_EL1 98 ・起動直後はPSTATEのFおよびIは1(IRQ,FIQ禁止) 129 99 130 ã¹ã¿ã¼ãã¢ããã«ã¼ãã³ã§ã¯ã¹ã¿ãã¯ãã¤ã³ã¿ã®åæåï¼ãã¯ã¿ãã¼ãã«ã¢ãã¬ã¹ã®è¨å®ï¼ 131 ã¡ã¢ãªã®åæåãªã©ã®å¿ 132 è¦ãªå¦çãè¡ãï¼sta_ker ãå¼ã³åºãï¼ 100 スタートアップルーチンではスタックポインタの初期化,ベクタテーブルアドレスの設定, 101 メモリの初期化などの必要な処理を行い,sta_ker を呼び出す. 133 102 134 103 135 (4) ã¿ã¤ããã©ã¤ãé¢é£ã®æ 136 å ± 104 (4) タイマドライバ関連の情報 137 105 138 ã«ã¼ãã«ã®ã¿ã¤ã ãã£ãã¯ã¨ãã¦ï¼Generic Timer ã使ç¨ããï¼ 139 ãã£ãã¯å¨æã¯1msecã¨ããï¼ 106 カーネルのタイムティックとして,Generic Timer を使用する, 107 ティック周期は1msecとする. 140 108 141 109 142 (5) ã¿ã¼ã²ããä¾åé¨ã§ã®è¨å®é 143 ç® 110 (5) ターゲット依存部での設定項目 144 111 145 ã¿ã¼ã²ããä¾åé¨ã§ã¯ä»¥ä¸ã®ãã¯ããå®ç¾©ããå¿ 146 è¦ãããï¼ 112 ターゲット依存部では以下のマクロを定義する必要がある. 147 113 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単位で指定) 157 121 158 122 159 (6) ãã£ã¬ã¯ããªæ§æã»ãã¡ã¤ã«æ§æ123 (6) ディレクトリ構成・ファイル構成 160 124 ./arch/arm64/ 161 125 ./MANIFEST … … 185 149 ./prc_user.txt 186 150 187 (12) ãã¼ã¸ã§ã³å±¥æ´151 (12) バージョン履歴 188 152 189 153 2018/05/30 190 ã»æåã®ãªãªã¼ã¹154 ・最初のリリース -
Property svn:mime-type
set to
Note:
See TracChangeset
for help on using the changeset viewer.