source: asp3_wo_tecs/trunk/arch/arm_gcc/doc/gic_memo.txt@ 306

Last change on this file since 306 was 306, checked in by ertl-honda, 7 years ago

3.1.0を反映

File size: 24.1 KB
Line 
1
2 TOPPERSプロジェクト 設計メモ
3 GIC(ARM Generic Interrupt Controller)に関するメモ
4
5 作成者
6: 高田広章(名古屋大学)
7 最終更新: 2016年3月24日
8
9○メモの位置づけ
10
11このメモは,ARM Generic Interrupt Controller(GIC)に関して,TOPPERSカー
12ネルをポーティングするにあたって必
13要となる事項
14をまとめたものである.
15
16○目次
17
18・参考文献
19・GICのアーキテクチャ仕様
20・PrimeCell GIC(Generic Interrupt Controller)PL390
21・ARM11 MPCore Distributed Interrupt Controller
22
23○参考文献
24
25[1] ARM Generic Interrupt Controller - Architecture version 2.0
26Architecture Specification, 2013
27IHI0048B_b_gic_architecture_specification.pdf
28
29[2] PrimeCell Generic Interrupt Controller (PL390) Technical Reference Manual
30Revision: r0p0
31DDI0416B_gic_pl390_r0p0_trm.pdf
32
33[3] ARM11 MPCoreTM Processor Technical Reference Manual
34Revision: r2p0
35DDI0360F_arm11_mpcore_r2p0_trm.pdf
36
37○GICのアーキテクチャ仕様([1])
38
39GICのアーキテクチャにも,GICv1とGICv2の2つのバージョンがある.バージョ
40ンによりレジスタ名も異なる.ここでは,GICv2のアーキテクチャについて記述
41する.仮想化拡張については記述を省略する.
42
43●用語の定義
44
45割込み状æ…
46‹
47 - Inactive:ActiveでもPendingでもない状æ…
48‹
49 - Pending:要求は認識されており,サービスを待
50っている状æ…
51‹
52 - Active:プロセッサによって受け付けられ,サービスされている状æ…
53‹
54 - Active and pending:プロセッサがサービスしているが,同じ割込み源
55 からの要求がさらにある場合
56
57割込みのタイプ
58 - ペリフェラル割込み(Peripheral Interrupt)
59 + プライベートペリフェラル割込み(PPI, Private Peripheral Interrupt)
60 *特定のプロセッサ向けの割込み
61 + å…
62±æœ‰ãƒšãƒªãƒ•ã‚§ãƒ©ãƒ«å‰²è¾¼ã¿ï¼ˆSPI, Shared Peripheral Interrupt)
63 *プロセッサを限定しない割込み
64 - ソフトウェアで生成する割込み(SGI, Software Generated Interrupt)
65 - 仮想割込み(Virtual Interrupt)… 仮想化拡張のみ
66 - メンテナンス割込み(Maintenance Interrupt)… 仮想化拡張のみ
67
68割込みハンドリングのモデル … マルチプロセッサの場合
69 - 1-Nモデル:ターゲットプロセッサの内
70の1つのみが割込みを処理する
71 - N-Nモデル:すべてのターゲットプロセッサが割込みを処理する
72 *GICは,SGIはN-Nモデル,ペリフェラル割込みは1-Nモデルで扱う
73
74●割込みグループ
75
762つの割込みグループ(セキュアモード用のグループ0,ノンセキュアモード用
77のグループ1)をサポート.GICv1では,セキュリティ拡張がある時のみ,割込
78みグループをサポート.
79
80・各割込みをグループ0またはグループ1に設定可能
81・グループ0は,ターゲットプロセッサに,IRQまたはFIQで通知
82・グループ1は,ターゲットプロセッサに,IRQで通知
83・両グループの割込みの優å…
84ˆåº¦ã‚’統一して扱える
85・グループ0の割込みの設定をロックダウンするオプションあり
86
87注意)優å…
88ˆåº¦ã‚°ãƒ«ãƒ¼ãƒ—は,割込みグループとは別の概念なので,混同しないこと!
89   優å…
90ˆåº¦ã‚°ãƒ«ãƒ¼ãƒ—は,セキュリティ拡張とは無関係の機能
91
92●ディストリビュータ
93
94ディストリビュータの機能(ソフトウェアから見えるもの)
95 - 割込み要求をCPUインタフェースに送る
96 - 各割込みの禁止/許可
97 - 各割込みの優å…
98ˆåº¦ãƒ¬ãƒ™ãƒ«ã®è¨­å®š
99 - 各割込みのターゲットプロセッサリストの設定
100 - 各ペリフェラル割込みのレベルトリガ/エッジトリガの設定
101 ※レベルトリガは,level-sensitiveと書かれている
102 - 各割込みのグループ0/グループ1の設定
103 - SGIを1つまたは複数のターゲットプロセッサに送る
104 - 各割込みの状æ…
105‹ã®å‚ç…
106§
107 - ペリフェラル割込みのペンディング状æ…
108‹ã®ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã‹ã‚‰ã®æ“ä½œ
109
110割込みID
111 - 最大で1020の割込みID.バンクを使うとさらに多くの割込みを扱える
112 - 割込みIDの構成
113 0〜15:SGI … CPUインタフェース毎
114 0〜7:ノンセキュア用に使うことを強く推奨
115 8〜15:セキュア用に使うことを強く推奨
116 16〜31:PPI … CPUインタフェース毎
117 32〜1019:SPI
118 1020〜1023:特殊目的に予約
119 1020〜1021:予約
120 1022:割込みグループに伴うスプリアス割込み(詳細省略)
121 1023:スプリアス割込み
122
123●CPUインタフェース
124
125CPUインタフェースの機能(ソフトウェアから見えるもの)
126 - プロセッサへの割込み要求信号の許可
127 - 割込みの受付け(acknowledging)
128 - 割込み処理完了の通知
129 - 割込み優å…
130ˆåº¦ãƒžã‚¹ã‚¯ã®è¨­å®š
131 - プリエンプションポリシーの設定
132 - ペンディングしている最高優å…
133ˆåº¦å‰²è¾¼ã¿ã®å–å¾—
134
135割込みの受付け
136 - プロセッサが割込みアクノーレッジレジスタ(IAR)を読むことで,割込
137 みが受け付けられる
138 - IARからは,割込みIDが返る(スプリアス割込みのIDである場合も)
139 - 割込み状æ…
140‹ã¯ï¼Œpendingからactive(またはactive and pending)に遷移
141
142割込みの完了
143 - プロセッサが割込み完了レジスタ(GICC_EOIR)に書くことで,割込の完
144 了が通知される
145 - GICは次の2つの処理を実行する
146 + 優å…
147ˆåº¦ãƒžã‚¹ã‚¯ã‚’下げる
148 + 割込みをdeactivateする(activeから他の状æ…
149‹ã«é·ç§»ã•ã›ã‚‹ï¼‰
150 - GICv2では,設定により,GICC_EOIRへの書き込みでは1つめのステップの
151 み行い,別のレジスタ(GICC_DIR)への書き込みで2つめのステップを実
152 行させることができる
153
154割込み信号バイパスとバイパス禁止 <詳細省略>
155 - レガシー割込みを扱うために,割込み要求をバイパスする機能がある
156 - GICv2では,バイパスを禁止する機能がある
157
158●割込みのハンドリング(セキュリティ拡張がない場合)
159
160・割込みハンドリング状æ…
161‹ãƒžã‚·ãƒ³ã§ï¼Œ4つの割込み状æ…
162‹ã®é–“の遷移を定義
163
164・GICの割込みハンドリングシーケンス
165 1. 割込みがイネーブルされているかどうかを判定
166 2. ペンディングしている割込みに対して,ターゲットプロセッサを決定
167 3. ディストリビュータは,各プロセッサに対して,ペンディングしている
168 最高優å…
169ˆåº¦å‰²è¾¼ã¿ã‚’決定し,CPUインタフェースに送る
170 4. CPUインタフェースは,ディストリビュータから送られてきた割込みが
171 十分に高い優å…
172ˆåº¦ã‹æ±ºå®šã—,十分に高ければ,プロセッサに送る
173 5. プロセッサが割込みを受け付けると,GICは割込みIDを返し,割込み状æ…
174‹
175 を更新する
176 6. 割込みの処理が終わると,プロセッサは割込み完了をGICに通知する
177
178●割込みの優å…
179ˆåº¦ä»˜ã‘(割込みグループとセキュリティ拡張がない場合)
180
181・GICがサポートする割込み優å…
182ˆåº¦ã®æ•°ã¯ï¼Œ16〜256
183・割込み優å…
184ˆåº¦ã¯ï¼Œ8ビットの符号無し整数で表す
185 値が小さい方が優å…
186ˆåº¦ãŒé«˜ã„
187 優å…
188ˆåº¦ã®æ•°ãŒ256より少ないときは,上位ビットから使用する
189 使わない下位ビットはRAZ/WI
190・各割込みの優å…
191ˆåº¦ã‚’個別に設定できる
192 実装
193によって,特定の割込みの優å…
194ˆåº¦ã‚’固定してもよい
195・同じ優å…
196ˆåº¦ã®å‰²è¾¼ã¿ã®ä¸­ã§ã©ã‚Œã‚’受け付けるかは実装
197依存
198
199・割込みのプリエンプションは次の2つの条件が揃った時に起こる
200 - 割込みの優å…
201ˆåº¦ãŒï¼Œå‰²è¾¼ã¿å„ªå…
202ˆåº¦ãƒžã‚¹ã‚¯ã‚ˆã‚Šã‚‚高い
203 - 割込みのグループ優å…
204ˆåº¦ãŒï¼Œå®Ÿè¡Œä¸­å„ªå…
205ˆåº¦ã®ã‚°ãƒ«ãƒ¼ãƒ—優å…
206ˆåº¦ã‚ˆã‚Šã‚‚高い
207
208・割込み優å…
209ˆåº¦ãƒžã‚¹ã‚¯ï¼ˆGICC_PMR)
210 - CPUインタフェースのGICC_PMRよりも高い割込みのみを受け付ける
211 + この判定に,優å…
212ˆåº¦ã®ã‚°ãƒ«ãƒ¼ãƒ—は影響しない
213 - 割込みに最低優å…
214ˆåº¦ï¼ˆå€¤ã¨ã—ては最大)を割り付けると,その割込みは
215 受け付けられない
216
217・優å…
218ˆåº¦ã‚°ãƒ«ãƒ¼ãƒ”ング
219 - バイナリポイントレジスタ(GICC_BPR)の設定により,割込み優å…
220ˆåº¦ã‚’,
221 グループ優å…
222ˆåº¦ã¨ã‚µãƒ–優å…
223ˆåº¦ã«åˆ†ã‘ることができる
224 - プリエンプションにおいては,同じグループの優å…
225ˆåº¦ã¯ï¼ŒåŒã˜å„ªå…
226ˆåº¦ã¨
227 見なされる(つまり,同じグループ内
228ではプリエンプションは起きない)
229
230 !割込み優å…
231ˆåº¦ãŒ8ビットの時は,すべてでプリエンプションを起こす設定は
232 できない
233
234●割込みグループと割込みのハンドリング(セキュリティ拡張)
235
236●割込みグループと割込みの優å…
237ˆåº¦ä»˜ã‘(セキュリティ拡張)
238
239・次のことを強く推奨する
240 - グループ0には,半分より高い優å…
241ˆåº¦ï¼ˆæœ€ä¸Šä½ãƒ“ットが0)を割り当てる
242 - グループ1には,半分より低い優å…
243ˆåº¦ï¼ˆæœ€ä¸Šä½ãƒ“ットが1)を割り当てる
244
245・ノンセキュアモードから見える割込み優å…
246ˆåº¦
247 - ノンセキュアモードからは,グループ1の割込みのみが扱える
248 - 書き込み時には,1ビット右にシフトされ,最上位ビットが1になる
249 - 読み出し時には,1ビット左にシフトされる(最上位ビットはなくなる)
250
251・各グループの割込みのプリエンプションの制御
252 - GICC_BPRには,セキュアコピーとノンセキュアコピーがある
253 + セキュアモードからアクセスすると,セキュアコピーにアクセス
254 + ノンセキュアモードからアクセスすると,ノンセキュアコピーにアクセス
255 - グループ0は,GICC_BPRのセキュアコピーで制御される
256 - グループ1は,
257 GICC_CTLR.CBPRが0の時,GICC_BPRのノンセキュアコピーで制御される
258 GICC_CTLR.CBPRが1の時,GICC_BPRのセキュアコピーで制御される
259 - GICC_ABPRは,セキュアモードから,GICC_BPRのノンセキュアコピーにア
260 クセスするためのレジスタ
261
262・GICC_BPRのノンセキュアコピーの設定
263 - GICC_CTLR.CBPRが0の時,グループ1のプリエンプションには,GICC_BPRの
264 ノンセキュアコピーから「1引いた値」が使われる
265 - GICC_BPRのノンセキュアコピーに,0は設定できない
266
267●プログラミングモデル(Programmers' Model)
268
269レジスタ名のコンベンション
270 GICD_xxxx … ディストリビュータのレジスタ
271 GICC_xxxx … CPUインタフェースのレジスタ
272 GICH_xxxx … 仮想インタフェース制御レジスタ(ハイパバイザが使う)
273 GICV_xxxx … 仮想CPUインタフェースのレジスタ
274
275レジスタに関する原則
276 ・すべてのレジスタは32ビット幅
277
278 ・予約はすべてRAZ/WI
279
280●ディストリビュータのプログラミングモデル
281
282ディストリビュータ制御レジスタ(GICD_CTLR)0x000
283 [31:2] 予約
284 [1] EnableGrp1 … セキュリティ拡張の場合のみ
285 0:グループ1の割込みをフォワードしない
286 1:グループ1の割込みをフォワードする
287 [0] Enable … セキュリティ拡張なし/EnableGrp0 … セキュリティ拡張
288 0:(グループ0の)割込みをフォワードしない
289 1:(グループ0の)割込みをフォワードする
290
291割込みコントローラタイプレジスタ(GICD_TYPER)0x004,RO
292
293ディストリビュータ実装
294IDレジスタ(GICD_IIDR)0x008,RO
295
296割込みグループレジスタ(GICD_IGROUPRn)0x080 … セキュリティ拡張
297
298割込みイネーブルセットレジスタ(GICD_ISENABLERn)0x100〜0x17c
299割込みイネーブルクリアレジスタ(GICD_ICENABLERn)0x180〜0x1fc
300 - 各割込みをイネーブルするかどうかを制御するレジスタ
301 - セットレジスタの対応するビットに1を書くとイネーブル
302 - クリアレジスタの対応するビットに1を書くとディスエーブル
303 - どちらのレジスタを読んでも,イネーブルされている割込みに対して1が返る
304
305割込みペンディングセットレジスタ(GICD_ISPENDRn)0x200〜0x27c
306割込みペンディングクリアレジスタ(GICD_ICPENDRn)0x280〜0x2fc
307 - 各割込みがペンディング状æ…
308‹ã‹ã©ã†ã‹ã‚’制御するレジスタ
309 - SGIは,このレジスタでセット/クリアできない(別のレジスタを使う)
310 - セットレジスタの対応するビットに1を書くとペンディング状æ…
311‹ã«
312 + アクティブ状æ…
313‹ã®å ´åˆã¯ï¼Œ"active and pending"に
314 - クリアレジスタの対応するビットに1を書くとペンディング状æ…
315‹ã‚’解除
316 + "active and pending"の場合は,アクティブ状æ…
317‹ã«
318 - レベルトリガの場合でも,このレジスタで要求した割込みはエッジトリガの
319 ように振る舞う(このレジスタで要求した割込みを記憶するFFがある)
320 - どちらのレジスタを読んでも,ペンディングされている割込みに対して1が返る
321 マルチプロセッサのSGIとPPIに関しては,自プロセッサに対して
322 ペンディングされているかどうかが返る
323
324割込みアクティブセットレジスタ(GICD_ISACTIVERn)0x300〜0x37c
325 … GICv1では割込みアクティブビットレジスタでRO
326割込みアクティブクリアレジスタ(GICD_ICACTIVERn)0x380〜0x3fc
327
328割込み優å…
329ˆåº¦ãƒ¬ã‚¸ã‚¹ã‚¿ï¼ˆGICD_IPRIORITYRn)0x400〜0x7f8
330 - 各割込みの優å…
331ˆåº¦ã‚’8ビットで設定
332 *バイト単位でアクセス可能
333
334割込みターゲットレジスタ(GICD_ITARGETSRn)0x800〜0xbf8 … マルチコアのみ
335 … 最初の32個(ターゲット固定)はRO
336 - 各割込みのターゲットプロセッサのリストを8ビットのビットマップで設定
337 *バイト単位でアクセス可能
338
339割込みコンフィギュレーションレジスタ(GICD_ICFGRn)0xc00〜0xcfc
340 - 各割込みのコンフィギュレーションを2ビットで設定
341 - レベルトリガかエッジトリガかを設定
342 上位ビットが0:レベルトリガ
343 上位ビットが1:エッジトリガ
344 - GICv1より前の一部の実装
345では,N-Nモデルか1-Nモデルかもここで設定
346 下位ビットが0:N-Nモデル
347 下位ビットが1:1-Nモデル
348 - GICv1以降では,下位ビットをどのように設定すべきか?
349 文献[1]には明記がない
350 文献[2]によると,1にすべきとも読める
351 → GIC_ARM11MPCOREが定義されていれば1,そうでなければ0に初期化する.
352
353割込みノンセキュアアクセス制御レジスタ(GICD_NSCARn)0xe00〜0xefc … オプション
354
355SGIレジスタ(GICD_SGIR)0xf00,WO
356 - SGIを発生させるレジスタ
357
358SGIペンディングクリアレジスタ(GICD_CPENDSGIRn)0xf10〜0xf1c
359SGIペンディングセットレジスタ(GICD_SPENDSGIRn)0xf20〜0xf2c
360 - SIGがペンディング状æ…
361‹ã‹ã©ã†ã‹ã‚’制御するレジスタ
362
363他に,実装
364定義レジスタがある
365
366●CPUインタフェースのプログラミングモデル
367
368CPUインタフェース制御レジスタ(GICC_CTLR)0x000
369
370割込み優å…
371ˆåº¦ãƒžã‚¹ã‚¯ãƒ¬ã‚¸ã‚¹ã‚¿ï¼ˆGICC_PMR)0x004
372
373バイナリポイントレジスタ(GICC_BPR)0x008
374 - 割込み優å…
375ˆåº¦ã‚’,グループ優å…
376ˆåº¦ã¨ã‚µãƒ–優å…
377ˆåº¦ã«åˆ†ã‘る位置を設定
378 [31:3] 予約
379 [2:0] 分割位置(gがグループ優å…
380ˆåº¦ï¼Œsがサブ優å…
381ˆåº¦ï¼‰
382 0:上位7ビットがグループ優å…
383ˆåº¦ ggggggg.s
384 1:上位6ビットがグループ優å…
385ˆåº¦ gggggg.ss
386 6:再上位ビットがグループ優å…
387ˆåº¦ g.sssssss
388 7:プリエンプションしない ssssssss
389 !優å…
390ˆåº¦ãŒ8ビットの時は,å…
391¨ãƒ“ットをグループ優å…
392ˆåº¦ã«ã™ã‚‹ã“とはできない
393
394割込みアクノーレッジレジスタ(GICC_IAR)0x00c,RO
395
396割込み完了レジスタ(GICC_EOIR)0x010,WO
397
398実行中優å…
399ˆåº¦ãƒ¬ã‚¸ã‚¹ã‚¿ï¼ˆGICC_RPR)0x014,RO
400
401最高優å…
402ˆåº¦ãƒšãƒ³ãƒ‡ã‚£ãƒ³ã‚°å‰²è¾¼ã¿ãƒ¬ã‚¸ã‚¹ã‚¿ï¼ˆGICC_HPPIR)0x018,RO
403
404<省略:セキュリティ拡張のためのレジスタ>
405
406CPUインタフェースIDレジスタ(GICC_IIDR)0x00fc,RO
407
408割込みディアクティベートレジスタ(GICC_DIR)0x1000,WO … GICv2のみ
409
410○PrimeCell GIC(Generic Interrupt Controller)PL390([2])
411
412このGICは,「ARM Generic Interrupt Controller Architecture」(明記して
413いないが,GICv1と思われる)に準拠
414
415ここで言う「コンフィギュレーション」とは,ハードウェアIPのコンフィギュ
416レーションのこと
417
418●GICの構成
419
420 - ディストリビュータ … 1つだけ
421 + 外部からの割込みを受け取り,最高優å…
422ˆåº¦ã®ã‚‚のをCPUインタフェースに送る
423 - CPUインタフェース … プロセッサ毎に
424 - その他のブロック
425 + AMBAスレーブインタフェース
426 + クロックとリセット
427 + enableとmatch信号
428 *制御レジスタを操作できるプロセッサを限定する機能
429
430●GICの機能
431
432・3タイプの割込み(SIG,PPI,SPI)をサポート
433 ※その他にレガシー割込み(legacy interrupt)がある
434
435・割込みを次のようにプログラム可能
436 - セキュリティ状æ…
437‹
438 - 割込みレベル
439 - 割込みの禁止/許可
440 - 割込みを受け取るプロセッサ
441
442・セキュリティ拡張に対応可能
443
444●コンフィギュレーションオプション <関係しそうな項
445目のみ>
446
447 - セキュリティ拡張のサポートの有無
448 - CPUインタフェースの数
449 - ロック可能なSPI(要調査)の数
450 - PPI関連
451 + CPUインタフェース毎の数(0〜16)
452 + レベルトリガかエッジトリガか
453 + 素通しか登録か同期か
454 - プロセッサ毎のSGIの数(0〜16)
455 - SPI関連
456 + 数(1〜988)
457 + 素通しか登録か同期か
458 - レガシー割込み関連
459 + サポートの有無(0〜2)
460 + レベルトリガかエッジトリガか
461 + 素通しか登録か同期か
462 - 優å…
463ˆåº¦ãƒ¬ãƒ™ãƒ«ã®æ•°
464 - The number of register slices in the highest pending interrupt logic.
465
466●割込み受付(ディストリビュータの機能)
467
468 - 割込みの登録(registering)と同期(synchronizing)
469 + 素通し・登録・同期の3つから1つを,コンフィギュレーションで決める
470 + 登録 … 割込み要求を次のクロックで受け取る
471 + 同期 … 割込み要求を次の次のクロックで受け取る
472 - エッジ検出
473 + レベルトリガ,エッジトリガの2つから1つを選べる
474 + PPIは,コンフィギュレーション時に決める
475
476●CPUインタフェース
477
478 - 次の両方よりも優å…
479ˆåº¦ãŒé«˜ã„割込みを受け付ける
480 + プログラムできる割込み優å…
481ˆåº¦ãƒžã‚¹ã‚¯
482 + プロセッサがサービス中の割込み
483
484●実装
485定義事項
486 <関係しそうな項
487目のみ>
488
489「ARM Generic Interrupt Controller Architecture」で実装
490定義とされている
491事項
492を,このGICでは次のように定義している.
493
494 - PPIのトリガモードは,コンフィギュレーション時に決定し,レジスタの
495 設定で変えられない
496
497 - アクティブまたはアクティブペンディングの割込みの優å…
498ˆåº¦ãƒ¬ãƒ™ãƒ«ã‚’変更
499 した場合の振舞い:このGICは新しい優å…
500ˆåº¦ãƒ¬ãƒ™ãƒ«ã‚’すぐに使う
501
502 - 同じ優å…
503ˆåº¦ã®å‰²è¾¼ã¿é–“の優å…
504ˆé–¢ä¿‚:略
505
506 - ターゲットプロセッサが複数のSPIの調停:このGICは調停をしない.す
507 べてのターゲットプロセッサに同時に割込み要求を送り,最初に応答し
508 た(IARを読んだプロセッサ)が割込みIDを受け取る.他のプロセッサに
509 は,スプリアス割込みが返る.
510
511○ARM11 MPCore Distributed Interrupt Controller([3]の第10章)
512
513※ARM11 MPCoreのDistributed Interrupt Controllerは,GICの前身と思われる.
514マニュアル中にGICという用語は出てこないが,GICとほぼ互換で使用できる.
515
516Distributed Interrupt Controllerは,次の2つで構成される.
517 - 割込みディストリビュータ
518 - CPU割込みインタフェース
519
520●割込みディストリビュータ
521
522・割込み要求をプロセッサに分é…
523ã™ã‚‹ãƒ¦ãƒ‹ãƒƒãƒˆï¼Žå‰²è¾¼ã¿æ¯Žã«ï¼Œå„ªå…
524ˆåº¦ã¨ï¼Œã‚¿ãƒ¼
525ゲットプロセッサのリストを設定できる.
526
527・割込み源には,以下のものがある.
528 - プロセッサ間割込み(IPI)… GICのSGIに相当
529 + ソフトウェアから要求する割込み.ID0〜ID15
530 - プライベートタイマとウォッチドッグ … GICのPPIに相当
531 + ARM11 MPCore内
532蔵タイマからの割込み.ID29とID30
533 - レガシーなnIRQピン … GICの割込みバイパスに相当
534 + 各プロセッサに直結.ID31
535 - ハードウェア割込み … GICのSPIに相当
536 + 各割込み要求ラインに対応する割込み.ID32〜最大ID255
537
538・nFIQは扱えない.nFIQの要求ラインは,各プロセッサに直結される.
539
540・割込みディストリビュータは,プロセッサ毎にペンディングしている割込み
541 のリストを持ち,その中で最も優å…
542ˆåº¦ã®é«˜ã„ものを選んで,CPU割込みインタ
543 フェースに通知する.
544
545 - 優å…
546ˆåº¦ãŒåŒã˜å‰²è¾¼ã¿ã®é–“では,IDが小さい方が優å…
547ˆ
548
549 - 1-NモデルとN-Nモデルの両方をサポート
550 + 1-Nモデルで,複数のプロセッサが同時にIARにアクセスすると,同
551 じ割込みが通知される
552 !割込み処理のソフトウェアで解決しなければならない!
553 ※複数のターゲットプロセッサへの通知は使わない方が無難
554
555●割込みディストリビュータのレジスタ
556
557・割込みコンフィギュレーションレジスタで,1-NモデルかN-Nモデルかを設定する
558 「GICv1より前の一部の実装
559」に該当
560
561●CPU割込みインタフェースのレジスタ
562
563・レジスタの一覧
564
565レジスタ名 オフセット
566---------------------------------------------------
567Control Register 0x00 R/W
568Priority Mask Register 0x04 R/W
569Binary Pointer Register 0x08 R/W
570Interrupt Acknowledge Register 0x0c RO
571End of Interrupt Register 0x10 WO
572Running Priority Register 0x14 RO
573Highest Pending Interrupt Register 0x18 RO
574
575・制御レジスタ
576 [31:1] 予約
577 [1] Enable
578 0:外部nIRQå…
579¥åŠ›ã®ã¿ãŒæœ‰åŠ¹
580 1:すべての割込みå…
581¥åŠ›ãŒæœ‰åŠ¹
582
583・優å…
584ˆåº¦ãƒžã‚¹ã‚¯ãƒ¬ã‚¸ã‚¹ã‚¿
585 [31:8] SBZ
586 [7:4] 優å…
587ˆåº¦ãƒžã‚¹ã‚¯
588 0x0:すべての割込みをマスク
589 ...
590 0xE:割込み優å…
591ˆåº¦14〜15をマスク
592 0xF:割込み優å…
593ˆåº¦15のみマスク
594 ※割込み優å…
595ˆåº¦15は受け付けられない
596 [3:0] SBZ
597
598 ※カーネルの割込み優å…
599ˆåº¦ãƒžã‚¹ã‚¯ã¨ã®å¯¾å¿œ
600 0x0 -15
601 ...
602 0xE -1
603 0xF 0
604
605・バイナリポイントレジスタ
606 [31:3] 予約
607 [2:0] Binary point 割込み優å…
608ˆåº¦ã®ã©ã®ãƒ“ットをプリエンプションの
609 判断に使うか?
610 0x3:すべてのビットを使う(デフォルト)
611 0x4:上位3ビットを使う
612 0x5:上位2ビットを使う
613 0x6:最上位ビットのみ使う
614 0x7:プリエンプションしない
615 他の値を書くと,0x03を書いたのと同じになる
616
617・割込みアクノーレッジレジスタ
618 [31:13] SBZ/RAZ
619 [12:10] ソースCPU ID プロセッサ間割込みを要求したプロセッサID
620 [9:0] 割込みID
621 1023:スプリアス割込み
622
623・割込み完了レジスタ
624 割込み処理の完了を通知するためのレジスタ
625 割込みアクノーレッジレジスタと同じフォーマット
626
627・実行中優å…
628ˆåº¦ãƒ¬ã‚¸ã‚¹ã‚¿
629 最後にアクノーレッジして,まだ完了していない割込みの優å…
630ˆåº¦
631 [31:8] 予約
632 [7:4] 優å…
633ˆåº¦
634 [3:0] SBZ
635
636・最高優å…
637ˆåº¦ãƒšãƒ³ãƒ‡ã‚£ãƒ³ã‚°å‰²è¾¼ã¿ãƒ¬ã‚¸ã‚¹ã‚¿
638 ペンディングしている割込みの中で最高優å…
639ˆåº¦ã®ã‚‚のを取得するためのレジスタ
640 ペンディングしている割込みがない時は,割込みIDとして1023を返す
641 割込みアクノーレッジレジスタと同じフォーマット
642
643以上
Note: See TracBrowser for help on using the repository browser.