@@ -191,31 +191,7 @@ impl XApic {
191
191
192
192
查询文档可知,SPIV 寄存器的偏移量为 0xF0 。其位描述如下:
193
193
194
- <table class = " inst" >
195
- <tr >
196
- <td class = " inst-numnodel" >31 </ td >
197
- <td class = " inst-numnode" colspan = " 16" ></ td >
198
- <td class = " inst-numnoder" >10 </ td >
199
- <td class = " inst-numnoder" >9 </ td >
200
- <td class = " inst-numnoder" >8 </ td >
201
- <td class = " inst-numnode" colspan = " 3" ></ td >
202
- <td class = " inst-numnoder" >4 </ td >
203
- <td class = " inst-numnoder" >3 </ td >
204
- <td class = " inst-numnoder" >2 </ td >
205
- <td class = " inst-numnoder" >1 </ td >
206
- <td class = " inst-numnoder" >0 </ td >
207
- </ tr >
208
- <tr >
209
- <td colspan = " 18" class = " inst-node-little" ></ td >
210
- <td colspan = " 1" class = " inst-node-little" >FC </ td >
211
- <td colspan = " 1" class = " inst-node-little" >EN </ td >
212
- <td colspan = " 4" class = " inst-node-little" >Vector </ td >
213
- <td colspan = " 1" class = " inst-node-little" >1 </ td >
214
- <td colspan = " 1" class = " inst-node-little" >1 </ td >
215
- <td colspan = " 1" class = " inst-node-little" >1 </ td >
216
- <td colspan = " 1" class = " inst-node-little" >1 </ td >
217
- </ tr >
218
- </ table >
194
+ <table class = " inst" ><tr ><td class = " inst-numnodel" >31 <td class = " inst-numnode" colspan = " 16" ><td class = " inst-numnoder" >10 <td class = " inst-numnoder" >9 <td class = " inst-numnoder" >8 <td class = " inst-numnode" colspan = " 3" ><td class = " inst-numnoder" >4 <td class = " inst-numnoder" >3 <td class = " inst-numnoder" >2 <td class = " inst-numnoder" >1 <td class = " inst-numnoder" >0 <tr ><td class = " inst-node-little" colspan = " 18" ><td class = " inst-node-little" colspan = " 1" >FC <td class = " inst-node-little" colspan = " 1" >EN <td class = " inst-node-little" colspan = " 4" >Vector <td class = "inst - node - little "colspan = "1 ">1 <td class = " inst-node-little" colspan = " 1" >1 <td class = " inst-node-little" colspan = " 1" >1 <td class = " inst-node-little" colspan = " 1" >1 </ table >
219
195
220
196
因此,需要在保持其他位不变的情况下,将 EN bit 设置为 1 ,并将 Vector 设置为 `Irq :: Spurious `,但是请注意实际设置的中断向量号需要加上 `Interrupts :: IrqBase `。同时,此寄存器的 0 - 3 bit 无法被修改,始终为 1 。
221
197
@@ -234,78 +210,7 @@ impl XApic {
234
210
235
211
Local Vector Table 寄存器用于设置中断向量号和触发模式。它们的位描述如下:
236
212
237
- <table class = " inst" >
238
- <tr >
239
- <td class = " inst-numnode" colspan = " 4" ></ td >
240
- <td class = " inst-numnodel" >31 </ td >
241
- <td class = " inst-numnode" colspan = " 8" ></ td >
242
- <td class = " inst-numnoder" >18 </ td >
243
- <td class = " inst-numnoder" >17 </ td >
244
- <td class = " inst-numnoder" >16 </ td >
245
- <td class = " inst-numnoder" >15 </ td >
246
- <td class = " inst-numnoder" >14 </ td >
247
- <td class = " inst-numnoder" >13 </ td >
248
- <td class = " inst-numnoder" >12 </ td >
249
- <td class = " inst-numnoder" >11 </ td >
250
- <td class = " inst-numnode" colspan = " 2" ></ td >
251
- <td class = " inst-numnoder" >8 </ td >
252
- <td class = " inst-numnode" colspan = " 3" ></ td >
253
- <td class = " inst-numnoder" >0 </ td >
254
- </ tr >
255
- <tr >
256
- <td colspan = " 4" >Timer </ td >
257
- <td colspan = " 10" class = " inst-node-little" >- </ td >
258
- <td colspan = " 1" class = " inst-node-little" >TP </ td >
259
- <td colspan = " 1" class = " inst-node-little" >M </ td >
260
- <td colspan = " 3" class = " inst-node-little" >- </ td >
261
- <td colspan = " 1" class = " inst-node-little" >DS </ td >
262
- <td colspan = " 4" class = " inst-node-little" >- </ td >
263
- <td colspan = " 4" class = " inst-node-little" >Vector </ td >
264
- </ tr >
265
- <tr >
266
- <td colspan = " 4" >LINT0 </ td >
267
- <td colspan = " 11" class = " inst-node-little" >- </ td >
268
- <td colspan = " 1" class = " inst-node-little" >M </ td >
269
- <td colspan = " 1" class = " inst-node-little" >TM </ td >
270
- <td colspan = " 1" class = " inst-node-little" >RI </ td >
271
- <td colspan = " 1" class = " inst-node-little" >IP </ td >
272
- <td colspan = " 1" class = " inst-node-little" >DS </ td >
273
- <td colspan = " 1" class = " inst-node-little" >- </ td >
274
- <td colspan = " 3" class = " inst-node-little" >DMode </ td >
275
- <td colspan = " 4" class = " inst-node-little" >Vector </ td >
276
- </ tr >
277
- <tr >
278
- <td colspan = " 4" >LINT1 </ td >
279
- <td colspan = " 11" class = " inst-node-little" >- </ td >
280
- <td colspan = " 1" class = " inst-node-little" >M </ td >
281
- <td colspan = " 1" class = " inst-node-little" >TM </ td >
282
- <td colspan = " 1" class = " inst-node-little" >RI </ td >
283
- <td colspan = " 1" class = " inst-node-little" >IP </ td >
284
- <td colspan = " 1" class = " inst-node-little" >DS </ td >
285
- <td colspan = " 1" class = " inst-node-little" >- </ td >
286
- <td colspan = " 3" class = " inst-node-little" >DMode </ td >
287
- <td colspan = " 4" class = " inst-node-little" >Vector </ td >
288
- </ tr >
289
- <tr >
290
- <td colspan = " 4" >ERROR </ td >
291
- <td colspan = " 11" class = " inst-node-little" >- </ td >
292
- <td colspan = " 1" class = " inst-node-little" >M </ td >
293
- <td colspan = " 3" class = " inst-node-little" >- </ td >
294
- <td colspan = " 1" class = " inst-node-little" >DS </ td >
295
- <td colspan = " 4" class = " inst-node-little" >- </ td >
296
- <td colspan = " 4" class = " inst-node-little" >Vector </ td >
297
- </ tr >
298
- <tr >
299
- <td colspan = " 4" >PCINT </ td >
300
- <td colspan = " 11" class = " inst-node-little" >- </ td >
301
- <td colspan = " 1" class = " inst-node-little" >M </ td >
302
- <td colspan = " 3" class = " inst-node-little" >- </ td >
303
- <td colspan = " 1" class = " inst-node-little" >DS </ td >
304
- <td colspan = " 1" class = " inst-node-little" >- </ td >
305
- <td colspan = " 3" class = " inst-node-little" >DMode </ td >
306
- <td colspan = " 4" class = " inst-node-little" >Vector </ td >
307
- </ tr >
308
- </ table >
213
+ <table class="inst"><tr><td class="inst-numnode"colspan="4"><td class="inst-numnodel">31<td class="inst-numnode"colspan="8"><td class="inst-numnoder">18<td class="inst-numnoder">17<td class="inst-numnoder">16<td class="inst-numnoder">15<td class="inst-numnoder">14<td class="inst-numnoder">13<td class="inst-numnoder">12<td class="inst-numnoder">11<td class="inst-numnode"colspan="2"><td class="inst-numnoder">8<td class="inst-numnode"colspan="3"><td class="inst-numnoder">0<tr><td colspan="4">Timer<td class="inst-node-little"colspan="10">-<td class="inst-node-little"colspan="1">TP<td class="inst-node-little"colspan="1">M<td class="inst-node-little"colspan="3">-<td class="inst-node-little"colspan="1">DS<td class="inst-node-little"colspan="4">-<td class="inst-node-little"colspan="4">Vector<tr><td colspan="4">LINT0<td class="inst-node-little"colspan="11">-<td class="inst-node-little"colspan="1">M<td class="inst-node-little"colspan="1">TM<td class="inst-node-little"colspan="1">RI<td class="inst-node-little"colspan="1">IP<td class="inst-node-little"colspan="1">DS<td class="inst-node-little"colspan="1">-<td class="inst-node-little"colspan="3">DMode<td class="inst-node-little"colspan="4">Vector<tr><td colspan="4">LINT1<td class="inst-node-little"colspan="11">-<td class="inst-node-little"colspan="1">M<td class="inst-node-little"colspan="1">TM<td class="inst-node-little"colspan="1">RI<td class="inst-node-little"colspan="1">IP<td class="inst-node-little"colspan="1">DS<td class="inst-node-little"colspan="1">-<td class="inst-node-little"colspan="3">DMode<td class="inst-node-little"colspan="4">Vector<tr><td colspan="4">ERROR<td class="inst-node-little"colspan="11">-<td class="inst-node-little"colspan="1">M<td class="inst-node-little"colspan="3">-<td class="inst-node-little"colspan="1">DS<td class="inst-node-little"colspan="4">-<td class="inst-node-little"colspan="4">Vector<tr><td colspan="4">PCINT<td class="inst-node-little"colspan="11">-<td class="inst-node-little"colspan="1">M<td class="inst-node-little"colspan="3">-<td class="inst-node-little"colspan="1">DS<td class="inst-node-little"colspan="1">-<td class="inst-node-little"colspan="3">DMode<td class="inst-node-little"colspan="4">Vector</table>
309
214
310
215
- Vector 为中断向量号,当中断发生时,CPU 会跳转到中断向量表中对应处理程序执行。
311
216
- DMode (Delivery Mode )为中断传递模式,本实验中不做理解要求。
@@ -373,53 +278,7 @@ impl XApic {
373
278
374
279
中断命令寄存器的位描述如下:
375
280
376
- <table class = " inst" >
377
- <tr >
378
- <td class = " inst-numnode" colspan = " 3" ></ td >
379
- <td class = " inst-numnodel" >63 </ td >
380
- <td class = " inst-numnode" colspan = " 3" ></ td >
381
- <td class = " inst-numnoder" >56 </ td >
382
- <td class = " inst-numnode" colspan = " 17" ></ td >
383
- <td class = " inst-numnoder" >32 </ td >
384
- </ tr >
385
- <tr >
386
- <td colspan = " 3" >0x310 </ td >
387
- <td colspan = " 5" class = " inst-node-little" >DF </ td >
388
- <td colspan = " 18" class = " inst-node-little" >- </ td >
389
- </ tr >
390
- <tr >
391
- <td class = " inst-numnode" colspan = " 3" ></ td >
392
- <td class = " inst-numnodel" >31 </ td >
393
- <td class = " inst-numnode" colspan = " 4" ></ td >
394
- <td class = " inst-numnoder" >20 </ td >
395
- <td class = " inst-numnode" colspan = " 1" ></ td >
396
- <td class = " inst-numnoder" >18 </ td >
397
- <td class = " inst-numnode" colspan = " 1" ></ td >
398
- <td class = " inst-numnoder" >16 </ td >
399
- <td class = " inst-numnoder" >15 </ td >
400
- <td class = " inst-numnoder" >14 </ td >
401
- <td class = " inst-numnoder" >13 </ td >
402
- <td class = " inst-numnoder" >12 </ td >
403
- <td class = " inst-numnoder" >11 </ td >
404
- <td class = " inst-numnode" colspan = " 2" ></ td >
405
- <td class = " inst-numnoder" >8 </ td >
406
- <td class = " inst-numnode" colspan = " 4" ></ td >
407
- <td class = " inst-numnoder" >0 </ td >
408
- </ tr >
409
- <tr >
410
- <td colspan = " 3" >0x300 </ td >
411
- <td colspan = " 6" class = " inst-node-little" >- </ td >
412
- <td colspan = " 2" class = " inst-node-little" >DSH </ td >
413
- <td colspan = " 2" class = " inst-node-little" >- </ td >
414
- <td colspan = " 1" class = " inst-node-little" >TM </ td >
415
- <td colspan = " 1" class = " inst-node-little" >LV </ td >
416
- <td colspan = " 1" class = " inst-node-little" >- </ td >
417
- <td colspan = " 1" class = " inst-node-little" >DS </ td >
418
- <td colspan = " 1" class = " inst-node-little" >DM </ td >
419
- <td colspan = " 3" class = " inst-node-little" >DMode </ td >
420
- <td colspan = " 5" class = " inst-node-little" >Vector </ td >
421
- </ tr >
422
- </ table >
281
+ <table class="inst"><tr><td class="inst-numnode"colspan="3"><td class="inst-numnodel">63<td class="inst-numnode"colspan="3"><td class="inst-numnoder">56<td class="inst-numnode"colspan="17"><td class="inst-numnoder">32<tr><td colspan="3">0x310<td class="inst-node-little"colspan="5">DF<td class="inst-node-little"colspan="18">-<tr><td class="inst-numnode"colspan="3"><td class="inst-numnodel">31<td class="inst-numnode"colspan="4"><td class="inst-numnoder">20<td class="inst-numnode"colspan="1"><td class="inst-numnoder">18<td class="inst-numnode"colspan="1"><td class="inst-numnoder">16<td class="inst-numnoder">15<td class="inst-numnoder">14<td class="inst-numnoder">13<td class="inst-numnoder">12<td class="inst-numnoder">11<td class="inst-numnode"colspan="2"><td class="inst-numnoder">8<td class="inst-numnode"colspan="4"><td class="inst-numnoder">0<tr><td colspan="3">0x300<td class="inst-node-little"colspan="6">-<td class="inst-node-little"colspan="2">DSH<td class="inst-node-little"colspan="2">-<td class="inst-node-little"colspan="1">TM<td class="inst-node-little"colspan="1">LV<td class="inst-node-little"colspan="1">-<td class="inst-node-little"colspan="1">DS<td class="inst-node-little"colspan="1">DM<td class="inst-node-little"colspan="3">DMode<td class="inst-node-little"colspan="5">Vector</table>
423
282
424
283
具体的配置配置细节这里不做理解要求,只需要按照如下描述进行配置即可:
425
284
0 commit comments