1 #ifndef KVM__INTERRUPT_H 2 #define KVM__INTERRUPT_H 3 4 #include <linux/types.h> 5 #include "kvm/bios.h" 6 #include "kvm/bios-export.h" 7 8 struct real_intr_desc { 9 u16 offset; 10 u16 segment; 11 } __attribute__((packed)); 12 13 #define REAL_SEGMENT_SHIFT 4 14 #define REAL_SEGMENT(addr) ((addr) >> REAL_SEGMENT_SHIFT) 15 #define REAL_OFFSET(addr) ((addr) & ((1 << REAL_SEGMENT_SHIFT) - 1)) 16 #define REAL_INTR_SIZE (REAL_INTR_VECTORS * sizeof(struct real_intr_desc)) 17 18 struct interrupt_table { 19 struct real_intr_desc entries[REAL_INTR_VECTORS]; 20 }; 21 22 void interrupt_table__copy(struct interrupt_table *itable, void *dst, unsigned int size); 23 void interrupt_table__setup(struct interrupt_table *itable, struct real_intr_desc *entry); 24 void interrupt_table__set(struct interrupt_table *itable, struct real_intr_desc *entry, unsigned int num); 25 26 #endif /* KVM__INTERRUPT_H */ 27