xref: /kvmtool/x86/interrupt.c (revision 3a60be06942944e25fe39726b1849d7e3bf252b6)
1 #include "kvm/interrupt.h"
2 
3 #include "kvm/util.h"
4 
5 #include <string.h>
6 
interrupt_table__copy(struct interrupt_table * itable,void * dst,unsigned int size)7 void interrupt_table__copy(struct interrupt_table *itable, void *dst, unsigned int size)
8 {
9 	if (size < sizeof(itable->entries))
10 		die("An attempt to overwrite host memory");
11 
12 	memcpy(dst, itable->entries, sizeof(itable->entries));
13 }
14 
interrupt_table__setup(struct interrupt_table * itable,struct real_intr_desc * entry)15 void interrupt_table__setup(struct interrupt_table *itable, struct real_intr_desc *entry)
16 {
17 	unsigned int i;
18 
19 	for (i = 0; i < REAL_INTR_VECTORS; i++)
20 		itable->entries[i] = *entry;
21 }
22 
interrupt_table__set(struct interrupt_table * itable,struct real_intr_desc * entry,unsigned int num)23 void interrupt_table__set(struct interrupt_table *itable,
24 				struct real_intr_desc *entry, unsigned int num)
25 {
26 	if (num < REAL_INTR_VECTORS)
27 		itable->entries[num] = *entry;
28 }
29