#include "kvm/interrupt.h"

#include "kvm/util.h"

#include <string.h>

void interrupt_table__copy(struct interrupt_table *itable, void *dst, unsigned int size)
{
	if (size < sizeof(itable->entries))
		die("An attempt to overwrite host memory");

	memcpy(dst, itable->entries, sizeof(itable->entries));
}

void interrupt_table__setup(struct interrupt_table *itable, struct real_intr_desc *entry)
{
	unsigned int i;

	for (i = 0; i < REAL_INTR_VECTORS; i++)
		itable->entries[i] = *entry;
}

void interrupt_table__set(struct interrupt_table *itable, struct real_intr_desc *entry, unsigned int num)
{
	if (num < REAL_INTR_VECTORS)
		itable->entries[num] = *entry;
}
