diff --git a/src/arch/x86/vm.c b/src/arch/x86/vm.c index 3608919..f125fe6 100644 --- a/src/arch/x86/vm.c +++ b/src/arch/x86/vm.c @@ -8,6 +8,7 @@ #include #include #include +#include #include "err.h" #include "vm.h" @@ -131,7 +132,9 @@ int vm_arch_load_image(vm_t *v, void *data, size_t datasz) void *kernel = ((uint8_t *) v->mem) + 0x100000; memset(boot, 0, sizeof(struct boot_params)); - memmove(boot, data, sizeof(struct boot_params)); + memmove((void *)boot + offsetof(struct boot_params, hdr), + data + offsetof(struct boot_params, hdr), + sizeof(struct setup_header)); size_t setup_sectors = boot->hdr.setup_sects; size_t setupsz = (setup_sectors + 1) * 512;