diff --git a/Makefile b/Makefile index 3073c23..ab825c6 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,6 @@ OBJS += main.o OBJS += mmio.o OBJS += util.o OBJS += bios/intfake.o -OBJS += bios/int10.o uname_M := $(shell uname -m | sed -e s/i.86/i386/) ifeq ($(uname_M),i386) @@ -70,13 +69,6 @@ bios/intfake.o: bios/intfake.S bios/intfake-real.S $(Q) objcopy -O binary -j .text bios/intfake-real.o bios/intfake-real.bin $(Q) $(CC) $(CFLAGS) -c bios/intfake.S -o bios/intfake.o -bios/int10.o: bios/int10.S bios/int10-real.S - $(E) " CC " $@ - $(Q) $(CC) $(CFLAGS) -c bios/int10-real.S -o bios/int10-real.o - $(E) " OBJCOPY " $@ - $(Q) objcopy -O binary -j .text bios/int10-real.o bios/int10-real.bin - $(Q) $(CC) $(CFLAGS) -c bios/int10.S -o bios/int10.o - check: $(PROGRAM) $(MAKE) -C tests ./$(PROGRAM) tests/pit/tick.bin diff --git a/include/kvm/bios-export.h b/include/kvm/bios-export.h index aa53899..f76a5de 100644 --- a/include/kvm/bios-export.h +++ b/include/kvm/bios-export.h @@ -4,7 +4,4 @@ extern char intfake[0]; extern char intfake_end[0]; -extern char int10[0]; -extern char int10_end[0]; - #endif /* BIOS_EXPORT_H_ */ diff --git a/include/kvm/bios.h b/include/kvm/bios.h index 9d62fd1..b6bffb2 100644 --- a/include/kvm/bios.h +++ b/include/kvm/bios.h @@ -2,27 +2,14 @@ #define BIOS_H_ /* - * BIOS data area + * Motherboard BIOS */ -#define BDA_START 0xf0000 -#define BDA_END 0xfffff -#define BDA_SIZE (BDA_END - BDA_START) - -#define VIDEO_BASE 0xa0000 -#define VIDEO_BASE_SEG 0xa000 -#define VIDEO_LIMIT 0xbffff -#define VIDEO_SIZE 0x007d0 /* 80x25 */ +#define KVM_BIOS_START 0xf0000 +#define KVM_BIOS_END 0xfffff #define REAL_INTR_BASE 0x0000 #define REAL_INTR_VECTORS 256 -#define BIOS_STACK 0xFFF70 -#define BIOS_STACK_SEG 0xFFF7 -#define BIOS_STACK_SIZE 128 - #define ALIGN(x, a) (((x)+((a)-1))&~((a)-1)) -#define BIOS_INTR_NEXT(prev, size) \ - ((prev) + ALIGN(size, 16)) - #endif /* BIOS_H_ */ diff --git a/kvm.c b/kvm.c index 591f64e..1b2dcd8 100644 --- a/kvm.c +++ b/kvm.c @@ -373,10 +373,8 @@ static bool load_bzimage(struct kvm *self, int fd, const char *kernel_cmdline) /* * Setup a *fake* real mode vector table, it has only * one real hadler which does just iret - * - * This is where the BIOS lives -- BDA area */ - intr_addr = BIOS_INTR_NEXT(BDA_START + 0, 16); + intr_addr = KVM_BIOS_START; p = guest_flat_to_host(self, intr_addr); memcpy(p, intfake, intfake_end - intfake); intr = (struct real_intr_desc) { @@ -385,15 +383,6 @@ static bool load_bzimage(struct kvm *self, int fd, const char *kernel_cmdline) }; interrupt_table__setup(&self->interrupt_table, &intr); - intr_addr = BIOS_INTR_NEXT(BDA_START + (intfake_end - intfake), 16); - p = guest_flat_to_host(self, intr_addr); - memcpy(p, int10, int10_end - int10); - intr = (struct real_intr_desc) { - .segment = REAL_SEGMENT(intr_addr), - .offset = 0, - }; - interrupt_table__set(&self->interrupt_table, &intr, 0x10); - p = guest_flat_to_host(self, 0); interrupt_table__copy(&self->interrupt_table, p, REAL_INTR_SIZE);