6. LVT寄存器-本地中断源

  • 1. 7个LVT寄存器
  • 2. 寄存器子域
    • 2.1. vector: 向量号
    • 2.2. delivery mode: 交付模式
    • 2.3. delivery status: 交付状态
    • 2.4. interrupt input pin polarity
    • 2.5. remote IRR flag:
    • 2.6. tirgger mode: 触发模式
    • 2.7. mask: 屏蔽位
    • 2.8. timer mode: timer计数模式

1. 7个LVT寄存器

LVT(Local Vector Table)寄存器是local APIC本地中断源产生者,在新的处理器上local APIC支持最多7个LVT寄存器,分别如下。

① LVT CMCI寄存器:地址偏移量在2F0H。

② LVT Timer寄存器:地址偏移量在320H。

③ LVT Thermal Monitor寄存器:地址偏移量在330H。

④ LVT Performance Counter寄存器:地址偏移量在340H。

⑤ LVT LINT0寄存器:地址偏移量在350H。

⑥ LVT LINT1寄存器:地址偏移量在360H。

⑦ LVT Error寄存器:地址偏移量在370H。

2. 寄存器子域

软件对这些寄存器进行编程设置,可以接收和产生local interrupt源。每个寄存器由若干部分组成,并不是每个寄存器的子域都相同

6. LVT寄存器-本地中断源_第1张图片

如上所示,这些子域如下。

2.1. vector: 向量号

vector(bit7~bit0):由软件设置local interrupt的中断vector,和一般的中断处理一样,这个vector值被用于在IDT中查找interrupt描述符

2.2. delivery mode: 交付模式

delivery mode(bit10~bit8):这个3位值提供5个delivery mode(交付模式),即Fixed模式(000B)、SMI模式(010B)、NMI模式(100B)、ExtINT模式(111B),以及INIT模式(101B),其他的组合值是保留的。

2.3. delivery status: 交付状态

delivery status(bit12):这个位指示中断在delivery时的状态

  • 0为idle(空闲)状态当前没有中断在交付中,或者中断已经交付给processor进行处理
  • 1为pending(悬挂)状态,当前的中断已经delivery,但processor未进行处理

只有将delivery status恢复idle(空闲)状态才能允许接受下一次中断(!!!)。

2.4. interrupt input pin polarity

interrupt input pin polarity(bit 13):这个位只用于LVT LINT0和LVT LINT1寄存器(对应于LINT0和LINT1接口),它们分别对应于处理器的INTR和NMI pin

这个位设置这两个pin的level触发模式(水平触发!!!):为0时为high-level,为1时为low-level

2.5. remote IRR flag:

⑤ remote IRR flag(bit14):这个位只用于LVT LINT0和LVT LINT1寄存器,使用在delivery模式为Fixedlevel触发模式中。为1时,local APIC已经接收并处理由INTR和NMI交付的中断;为0时,接收到EOI命令

2.6. tirgger mode: 触发模式

trigger mode(bit15):仅用于LVT LINT0和LVT LINT1寄存器,设置它们的触发模式

  • 0为edge触发
  • 1为level触发

2.7. mask: 屏蔽位

mask(bit16):设置local interrupt的屏蔽位,为1时设置为屏蔽中断的响应。

2.8. timer mode: timer计数模式

timer mode(bit18~bit17):仅使用于LVT Timer寄存器,设置Timer count计数模式

  • 00:one-shot(一次性计数);
  • 01:periodic周期计数;
  • 10:TSC-deadline(指定TSC值计数)。

你可能感兴趣的:(6. LVT寄存器-本地中断源)