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

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

TECSレスのASP3の開発のため以下のtrunkからコピー
http://dev.toppers.jp/svn/asp3/branches/WO_TECS-3.C.0

File size: 23.7 KB
RevLine 
[302]1
2 TOPPERSプロジェクト 設計メモ
3 GIC(ARM Generic Interrupt Controller)に関するメモ
4
5 作成者
6: 高田広章(名古屋大学)
7 最終更新: 2015年7月25日
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 - GICv1より前の一部の実装
343では,N-Nモデルか1-Nモデルかもここで設定
344 0:N-Nモデル
345 1:1-Nモデル
346
347割込みノンセキュアアクセス制御レジスタ(GICD_NSCARn)0xe00〜0xefc … オプション
348
349SGIレジスタ(GICD_SGIR)0xf00,WO
350 - SGIを発生させるレジスタ
351
352SGIペンディングクリアレジスタ(GICD_CPENDSGIRn)0xf10〜0xf1c
353SGIペンディングセットレジスタ(GICD_SPENDSGIRn)0xf20〜0xf2c
354 - SIGがペンディング状æ…
355‹ã‹ã©ã†ã‹ã‚’制御するレジスタ
356
357他に,実装
358定義レジスタがある
359
360●CPUインタフェースのプログラミングモデル
361
362CPUインタフェース制御レジスタ(GICC_CTLR)0x000
363
364割込み優å…
365ˆåº¦ãƒžã‚¹ã‚¯ãƒ¬ã‚¸ã‚¹ã‚¿ï¼ˆGICC_PMR)0x004
366
367バイナリポイントレジスタ(GICC_BPR)0x008
368 - 割込み優å…
369ˆåº¦ã‚’,グループ優å…
370ˆåº¦ã¨ã‚µãƒ–優å…
371ˆåº¦ã«åˆ†ã‘る位置を設定
372 [31:3] 予約
373 [2:0] 分割位置(gがグループ優å…
374ˆåº¦ï¼Œsがサブ優å…
375ˆåº¦ï¼‰
376 0:上位7ビットがグループ優å…
377ˆåº¦ ggggggg.s
378 1:上位6ビットがグループ優å…
379ˆåº¦ gggggg.ss
380 6:再上位ビットがグループ優å…
381ˆåº¦ g.sssssss
382 7:プリエンプションしない ssssssss
383 !優å…
384ˆåº¦ãŒ8ビットの時は,å…
385¨ãƒ“ットをグループ優å…
386ˆåº¦ã«ã™ã‚‹ã“とはできない
387
388割込みアクノーレッジレジスタ(GICC_IAR)0x00c,RO
389
390割込み完了レジスタ(GICC_EOIR)0x010,WO
391
392実行中優å…
393ˆåº¦ãƒ¬ã‚¸ã‚¹ã‚¿ï¼ˆGICC_RPR)0x014,RO
394
395最高優å…
396ˆåº¦ãƒšãƒ³ãƒ‡ã‚£ãƒ³ã‚°å‰²è¾¼ã¿ãƒ¬ã‚¸ã‚¹ã‚¿ï¼ˆGICC_HPPIR)0x018,RO
397
398<省略:セキュリティ拡張のためのレジスタ>
399
400CPUインタフェースIDレジスタ(GICC_IIDR)0x00fc,RO
401
402割込みディアクティベートレジスタ(GICC_DIR)0x1000,WO … GICv2のみ
403
404○PrimeCell GIC(Generic Interrupt Controller)PL390([2])
405
406このGICは,「ARM Generic Interrupt Controller Architecture」(明記して
407いないが,GICv1と思われる)に準拠
408
409ここで言う「コンフィギュレーション」とは,ハードウェアIPのコンフィギュ
410レーションのこと
411
412●GICの構成
413
414 - ディストリビュータ … 1つだけ
415 + 外部からの割込みを受け取り,最高優å…
416ˆåº¦ã®ã‚‚のをCPUインタフェースに送る
417 - CPUインタフェース … プロセッサ毎に
418 - その他のブロック
419 + AMBAスレーブインタフェース
420 + クロックとリセット
421 + enableとmatch信号
422 *制御レジスタを操作できるプロセッサを限定する機能
423
424●GICの機能
425
426・3タイプの割込み(SIG,PPI,SPI)をサポート
427 ※その他にレガシー割込み(legacy interrupt)がある
428
429・割込みを次のようにプログラム可能
430 - セキュリティ状æ…
431‹
432 - 割込みレベル
433 - 割込みの禁止/許可
434 - 割込みを受け取るプロセッサ
435
436・セキュリティ拡張に対応可能
437
438●コンフィギュレーションオプション <関係しそうな項
439目のみ>
440
441 - セキュリティ拡張のサポートの有無
442 - CPUインタフェースの数
443 - ロック可能なSPI(要調査)の数
444 - PPI関連
445 + CPUインタフェース毎の数(0〜16)
446 + レベルトリガかエッジトリガか
447 + 素通しか登録か同期か
448 - プロセッサ毎のSGIの数(0〜16)
449 - SPI関連
450 + 数(1〜988)
451 + 素通しか登録か同期か
452 - レガシー割込み関連
453 + サポートの有無(0〜2)
454 + レベルトリガかエッジトリガか
455 + 素通しか登録か同期か
456 - 優å…
457ˆåº¦ãƒ¬ãƒ™ãƒ«ã®æ•°
458 - The number of register slices in the highest pending interrupt logic.
459
460●割込み受付(ディストリビュータの機能)
461
462 - 割込みの登録(registering)と同期(synchronizing)
463 + 素通し・登録・同期の3つから1つを,コンフィギュレーションで決める
464 + 登録 … 割込み要求を次のクロックで受け取る
465 + 同期 … 割込み要求を次の次のクロックで受け取る
466 - エッジ検出
467 + レベルトリガ,エッジトリガの2つから1つを選べる
468 + PPIは,コンフィギュレーション時に決める
469
470●CPUインタフェース
471
472 - 次の両方よりも優å…
473ˆåº¦ãŒé«˜ã„割込みを受け付ける
474 + プログラムできる割込み優å…
475ˆåº¦ãƒžã‚¹ã‚¯
476 + プロセッサがサービス中の割込み
477
478●実装
479定義事項
480 <関係しそうな項
481目のみ>
482
483「ARM Generic Interrupt Controller Architecture」で実装
484定義とされている
485事項
486を,このGICでは次のように定義している.
487
488 - PPIのトリガモードは,コンフィギュレーション時に決定し,レジスタの
489 設定で変えられない
490
491 - アクティブまたはアクティブペンディングの割込みの優å…
492ˆåº¦ãƒ¬ãƒ™ãƒ«ã‚’変更
493 した場合の振舞い:このGICは新しい優å…
494ˆåº¦ãƒ¬ãƒ™ãƒ«ã‚’すぐに使う
495
496 - 同じ優å…
497ˆåº¦ã®å‰²è¾¼ã¿é–“の優å…
498ˆé–¢ä¿‚:略
499
500 - ターゲットプロセッサが複数のSPIの調停:このGICは調停をしない.す
501 べてのターゲットプロセッサに同時に割込み要求を送り,最初に応答し
502 た(IARを読んだプロセッサ)が割込みIDを受け取る.他のプロセッサに
503 は,スプリアス割込みが返る.
504
505○ARM11 MPCore Distributed Interrupt Controller([3]の第10章)
506
507※ARM11 MPCoreのDistributed Interrupt Controllerは,GICの前身と思われる.
508マニュアル中にGICという用語は出てこないが,GICとほぼ互換で使用できる.
509
510Distributed Interrupt Controllerは,次の2つで構成される.
511 - 割込みディストリビュータ
512 - CPU割込みインタフェース
513
514●割込みディストリビュータ
515
516・割込み要求をプロセッサに分é…
517ã™ã‚‹ãƒ¦ãƒ‹ãƒƒãƒˆï¼Žå‰²è¾¼ã¿æ¯Žã«ï¼Œå„ªå…
518ˆåº¦ã¨ï¼Œã‚¿ãƒ¼
519ゲットプロセッサのリストを設定できる.
520
521・割込み源には,以下のものがある.
522 - プロセッサ間割込み(IPI)… GICのSGIに相当
523 + ソフトウェアから要求する割込み.ID0〜ID15
524 - プライベートタイマとウォッチドッグ … GICのPPIに相当
525 + ARM11 MPCore内
526蔵タイマからの割込み.ID29とID30
527 - レガシーなnIRQピン … GICの割込みバイパスに相当
528 + 各プロセッサに直結.ID31
529 - ハードウェア割込み … GICのSPIに相当
530 + 各割込み要求ラインに対応する割込み.ID32〜最大ID255
531
532・nFIQは扱えない.nFIQの要求ラインは,各プロセッサに直結される.
533
534・割込みディストリビュータは,プロセッサ毎にペンディングしている割込み
535 のリストを持ち,その中で最も優å…
536ˆåº¦ã®é«˜ã„ものを選んで,CPU割込みインタ
537 フェースに通知する.
538
539 - 優å…
540ˆåº¦ãŒåŒã˜å‰²è¾¼ã¿ã®é–“では,IDが小さい方が優å…
541ˆ
542
543 - 1-NモデルとN-Nモデルの両方をサポート
544 + 1-Nモデルで,複数のプロセッサが同時にIARにアクセスすると,同
545 じ割込みが通知される
546 !割込み処理のソフトウェアで解決しなければならない!
547 ※複数のターゲットプロセッサへの通知は使わない方が無難
548
549●割込みディストリビュータのレジスタ
550
551・割込みコンフィギュレーションレジスタで,1-NモデルかN-Nモデルかを設定する
552 「GICv1より前の一部の実装
553」に該当
554
555●CPU割込みインタフェースのレジスタ
556
557・レジスタの一覧
558
559レジスタ名 オフセット
560---------------------------------------------------
561Control Register 0x00 R/W
562Priority Mask Register 0x04 R/W
563Binary Pointer Register 0x08 R/W
564Interrupt Acknowledge Register 0x0c RO
565End of Interrupt Register 0x10 WO
566Running Priority Register 0x14 RO
567Highest Pending Interrupt Register 0x18 RO
568
569・制御レジスタ
570 [31:1] 予約
571 [1] Enable
572 0:外部nIRQå…
573¥åŠ›ã®ã¿ãŒæœ‰åŠ¹
574 1:すべての割込みå…
575¥åŠ›ãŒæœ‰åŠ¹
576
577・優å…
578ˆåº¦ãƒžã‚¹ã‚¯ãƒ¬ã‚¸ã‚¹ã‚¿
579 [31:8] SBZ
580 [7:4] 優å…
581ˆåº¦ãƒžã‚¹ã‚¯
582 0x0:すべての割込みをマスク
583 ...
584 0xE:割込み優å…
585ˆåº¦14〜15をマスク
586 0xF:割込み優å…
587ˆåº¦15のみマスク
588 ※割込み優å…
589ˆåº¦15は受け付けられない
590 [3:0] SBZ
591
592 ※カーネルの割込み優å…
593ˆåº¦ãƒžã‚¹ã‚¯ã¨ã®å¯¾å¿œ
594 0x0 -15
595 ...
596 0xE -1
597 0xF 0
598
599・バイナリポイントレジスタ
600 [31:3] 予約
601 [2:0] Binary point 割込み優å…
602ˆåº¦ã®ã©ã®ãƒ“ットをプリエンプションの
603 判断に使うか?
604 0x3:すべてのビットを使う(デフォルト)
605 0x4:上位3ビットを使う
606 0x5:上位2ビットを使う
607 0x6:最上位ビットのみ使う
608 0x7:プリエンプションしない
609 他の値を書くと,0x03を書いたのと同じになる
610
611・割込みアクノーレッジレジスタ
612 [31:13] SBZ/RAZ
613 [12:10] ソースCPU ID プロセッサ間割込みを要求したプロセッサID
614 [9:0] 割込みID
615 1023:スプリアス割込み
616
617・割込み完了レジスタ
618 割込み処理の完了を通知するためのレジスタ
619 割込みアクノーレッジレジスタと同じフォーマット
620
621・実行中優å…
622ˆåº¦ãƒ¬ã‚¸ã‚¹ã‚¿
623 最後にアクノーレッジして,まだ完了していない割込みの優å…
624ˆåº¦
625 [31:8] 予約
626 [7:4] 優å…
627ˆåº¦
628 [3:0] SBZ
629
630・最高優å…
631ˆåº¦ãƒšãƒ³ãƒ‡ã‚£ãƒ³ã‚°å‰²è¾¼ã¿ãƒ¬ã‚¸ã‚¹ã‚¿
632 ペンディングしている割込みの中で最高優å…
633ˆåº¦ã®ã‚‚のを取得するためのレジスタ
634 ペンディングしている割込みがない時は,割込みIDとして1023を返す
635 割込みアクノーレッジレジスタと同じフォーマット
636
637以上
Note: See TracBrowser for help on using the repository browser.