aboutsummaryrefslogtreecommitdiffstats
path: root/xen/include/asm-x86/hvm/vlapic.h
diff options
context:
space:
mode:
authorTim Deegan <Tim.Deegan@xensource.com>2007-01-20 11:17:40 +0000
committerTim Deegan <Tim.Deegan@xensource.com>2007-01-20 11:17:40 +0000
commit7a04b0ca7e8949cd87343d1d53f11d681cff64d1 (patch)
treef16ed9d1e48f56f496fb4ddeaf65b72a4f3a32d8 /xen/include/asm-x86/hvm/vlapic.h
parent820c0c0735181f2ea3fd80d56a39455a2ae21b66 (diff)
downloadxen-7a04b0ca7e8949cd87343d1d53f11d681cff64d1.tar.gz
xen-7a04b0ca7e8949cd87343d1d53f11d681cff64d1.tar.bz2
xen-7a04b0ca7e8949cd87343d1d53f11d681cff64d1.zip
[HVM] Save/restore cleanups 03: IRQ
IRQ, PIC, IOAPIC and LAPIC Signed-off-by: Tim Deegan <Tim.Deegan@xensource.com>
Diffstat (limited to 'xen/include/asm-x86/hvm/vlapic.h')
-rw-r--r--xen/include/asm-x86/hvm/vlapic.h25
1 files changed, 11 insertions, 14 deletions
diff --git a/xen/include/asm-x86/hvm/vlapic.h b/xen/include/asm-x86/hvm/vlapic.h
index 0137b34515..4700f63fb5 100644
--- a/xen/include/asm-x86/hvm/vlapic.h
+++ b/xen/include/asm-x86/hvm/vlapic.h
@@ -44,31 +44,28 @@
*/
#define VLAPIC_HW_DISABLED 0x1
#define VLAPIC_SW_DISABLED 0x2
-#define vlapic_sw_disabled(vlapic) ((vlapic)->disabled & VLAPIC_SW_DISABLED)
-#define vlapic_hw_disabled(vlapic) ((vlapic)->disabled & VLAPIC_HW_DISABLED)
-#define vlapic_disabled(vlapic) ((vlapic)->disabled)
-#define vlapic_enabled(vlapic) (!vlapic_disabled(vlapic))
+#define vlapic_sw_disabled(vlapic) ((vlapic)->hw.disabled & VLAPIC_SW_DISABLED)
+#define vlapic_hw_disabled(vlapic) ((vlapic)->hw.disabled & VLAPIC_HW_DISABLED)
+#define vlapic_disabled(vlapic) ((vlapic)->hw.disabled)
+#define vlapic_enabled(vlapic) (!vlapic_disabled(vlapic))
struct vlapic {
- uint64_t apic_base_msr;
- uint32_t disabled; /* VLAPIC_xx_DISABLED */
- uint32_t timer_divisor;
- struct periodic_time pt;
- int timer_pending_count;
- s_time_t timer_last_update;
- struct page_info *regs_page;
- void *regs;
+ struct hvm_hw_lapic hw;
+ struct hvm_hw_lapic_regs *regs;
+ struct periodic_time pt;
+ s_time_t timer_last_update;
+ struct page_info *regs_page;
};
static inline uint32_t vlapic_get_reg(struct vlapic *vlapic, uint32_t reg)
{
- return *((uint32_t *)(vlapic->regs + reg));
+ return *((uint32_t *)(&vlapic->regs->data[reg]));
}
static inline void vlapic_set_reg(
struct vlapic *vlapic, uint32_t reg, uint32_t val)
{
- *((uint32_t *)(vlapic->regs + reg)) = val;
+ *((uint32_t *)(&vlapic->regs->data[reg])) = val;
}
int vlapic_set_irq(struct vlapic *vlapic, uint8_t vec, uint8_t trig);