source: ssp_aarch64/trunk/arm64_gcc/prc_user.txt@ 353

Last change on this file since 353 was 353, checked in by nmir-saito, 6 years ago

initial import

File size: 6.1 KB
Line 
1=====================================================================
2 ARM64プロセッサ依存部
3 Last Modified: '18/05/29
4=====================================================================
5
6
7(1) 対応しているターゲットシステムの種類・構成
8
9ARM64依存部は,ARMv8-A アーキテクチャをターゲットとしている.ARMv8-A は
1064ビットアーキテクチャであり命令セットレベルでもARMとは異なるため,
11ARM依存部と分けている.
12
13(2) 使用する開発環境と動作検証した条件(バージョン,オプション等)
14
15カーネルはGCCを用いてコンパイルする.動作確認したバージョンは各ターゲ
16ット依存部のドキュメントに記載する.
17
18(3) ターゲット定義事項
19の規定
20
21(3-1) データ型に関する規定
22
23データ型は arch/gcc/tool_stddef.h で定義されている内
24容で,float型と
25double型は,それぞれIEEE754準拠の単精度浮動小数点数と倍精度浮動小数点
26数である.
27
28(3-2) 割込み処理に関する規定
29
30○割込みハンドラ番号と割込み番号の割当て,両者
31の対応
32
33IRQ および FIQ をカーネル管理の割込みとする.
34割込みハンドラ番号と割込み番号は,例外発生時にGICC_IAR にセットされる例外番
35号を用いる.Generic Timer は27番で,割込みは0番からの番号が割り付けられ
36ている.
37
38○割込み優å…
39ˆåº¦ã®æ®µéšŽæ•°ï¼ˆTMIN_INTPRIの値),その設定方法
40
41割込み優å…
42ˆåº¦ã®æ®µéšŽæ•°ã¯ï¼Œã‚¿ãƒ¼ã‚²ãƒƒãƒˆä¾å­˜éƒ¨æ¯Žã«ç•°ãªã‚‹ï¼Ž
43カーネル管理内
44の割込みの最高優å…
45ˆåº¦ï¼ˆTMIN_INTPRI)はターゲット依存部で設定する.
46
47各割込みの割込み優å…
48ˆåº¦ã¯ï¼ŒCFG_INT で TMIN_INTPRI 以上の値を指定する.
49
50○dis_intとena_intのサポートの有無,その制限事項
51
52
53dis_intとena_intをサポートする.制限事項
54は特にない.
55
56○CFG_INTの制限事項
57と拡張(ターゲット定義で使用できる割込み属性)
58
59CFG_INTの制限事項
60はなく,ターゲット定義で使用可能な割込み属性は特にな
61い.
62
63○カーネル管理外の割込み
64
65カーネル管理外の割込みはサポートしない.
66IRQ,FIQå…
67±ã«ã‚«ãƒ¼ãƒãƒ«ç®¡ç†ã®å‰²è¾¼ã¿ã¨ã—て扱う.
68
69
70(3-3) CPU例外処理に関する規定
71
72○CPU例外ハンドラ番号
73
74ARMv8では,例外発生時の例外レベル(EL),使用スタック,実行状æ…
75‹(AArch32 or AArch64),
76発生した例外の種類により,ジャンプå…
77ˆã¨ãªã‚‹ä¾‹å¤–ベクタ中のオフセットアドレスが異なる.
78CPU例外ハンドラはこのジャンプå…
79ˆã®ã‚ªãƒ•ã‚»ãƒƒãƒˆã‚¢ãƒ‰ãƒ¬ã‚¹ã§åŒºåˆ¥ã™ã‚‹ã“とにし,
80それぞれ異なるCPU例外ハンドラ番号を割り当てる.
81
82 例外発生時の状æ…
83‹ 例外の種類 例外番号  例外ベクタå…
84ˆé ­ã‹ã‚‰ã®ã‚ªãƒ•ã‚»ãƒƒãƒˆ
85 AArch64, EL1t(EL1, SP_EL0) Synchronous 0 0x0000
86 AArch64, EL1t(EL1, SP_EL0) SError 1 0x0180
87 AArch64, EL1h(EL1, SP_EL1) Synchronous 2 0x0200
88 AArch64, EL1h(EL1, SP_EL1) SError 3 0x0380
89 AArch64, EL0 (EL0, SP_EL0) Synchronous 4 0x0400
90 AArch64, EL0 (EL0, SP_EL0) SError 5 0x0580
91 AArch32, EL0 (EL0, SP_EL0) Synchronous 6 0x0600
92 AArch32, EL0 (EL0, SP_EL0) SError 7 0x0780
93
94(3-4) CPUロック・割込みロック
95
96CPUロックは,PSTATE.I および PSTATE.F をå…
97±ã« 1 にすることで実現する.
98カーネル管理外の割込みをサポートしないため,å…
99¨å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯ãƒ•ãƒ©ã‚°ã‚‚
100CPUロックと同様の実装
101である.ただし CPUロックフラグとは独立したフラグ
102としてå…
103¨å‰²è¾¼ã¿ãƒ­ãƒƒã‚¯ãƒ•ãƒ©ã‚°ã‚’サポートする.å…
104·ä½“的にはSIL_LOC_INT呼び出し
105時にIおよびFフラグの状æ…
106‹ã‚’記憶しておき,SIL_UNL_INT でå…
107ƒã®çŠ¶æ…
108‹ã«
109戻している.
110
111(3-5) 性能評価用システム時刻の参ç…
112§ã«é–¢ã™ã‚‹è¦å®š
113
114get_utmをサポートしない.
115
116
117(3-6) スタートアップルーチンでの初期化内
118容
119
120スタートアップルーチンが前提とするプロセッサの状æ…
121‹ã¯ãƒ—ロセッサにより異なるため,
122スタートアップルーチンはターゲット依存部にé…
123ç½®ã—ている.
124
125例としてQEMU VIRT ボードの場合は以下のようになっている.
126・例外レベルは既定でEL1
127・使用スタックは(EL1の場合,) SP_EL1
128・起動直後はPSTATEのFおよびIは1(IRQ,FIQ禁止)
129
130スタートアップルーチンではスタックポインタの初期化,ベクタテーブルアドレスの設定,
131メモリの初期化などの必
132要な処理を行い,sta_ker を呼び出す.
133
134
135(4) タイマドライバ関連の情
136å ±
137
138カーネルのタイムティックとして,Generic Timer を使用する,
139ティック周期は1msecとする.
140
141
142(5) ターゲット依存部での設定項
143目
144
145ターゲット依存部では以下のマクロを定義する必
146要がある.
147
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単位で指定)
157
158
159(6) ディレクトリ構成・ファイル構成
160 ./arch/arm64/
161 ./MANIFEST
162 ./Makefile.prc
163 ./arm64.h
164 ./gic_config.c
165 ./gic_config.h
166 ./gic_support.S
167 ./prc_cfg1_out.h
168 ./prc_check.trb
169 ./prc_config.c
170 ./prc_config.h
171 ./prc_design.txt
172 ./prc_kernel.h
173 ./prc_kernel.trb
174 ./prc_rename.def
175 ./prc_rename.h
176 ./prc_sil.h
177 ./prc_stddef.h
178 ./prc_support.S
179 ./prc_sym.def
180 ./prc_test.h
181 ./prc_timer.c
182 ./prc_timer.cfg
183 ./prc_timer.h
184 ./prc_unrename.h
185 ./prc_user.txt
186
187(12) バージョン履歴
188
1892018/05/30
190 ・最初のリリース
Note: See TracBrowser for help on using the repository browser.