summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--i386/i386at/model_dep.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/i386/i386at/model_dep.c b/i386/i386at/model_dep.c
index b25676fd..04660a6d 100644
--- a/i386/i386at/model_dep.c
+++ b/i386/i386at/model_dep.c
@@ -297,7 +297,8 @@ register_boot_data(const struct multiboot_raw_info *mbi)
for (i = 0; i < mbi->mods_count; i++) {
mod = (struct multiboot_raw_module *)tmp + i;
- biosmem_register_boot_data(mod->mod_start, mod->mod_end, TRUE);
+ if (mod->mod_end != mod->mod_start)
+ biosmem_register_boot_data(mod->mod_start, mod->mod_end, TRUE);
if (mod->string != 0) {
biosmem_register_boot_data(mod->string,
@@ -310,7 +311,8 @@ register_boot_data(const struct multiboot_raw_info *mbi)
if (mbi->flags & MULTIBOOT_LOADER_SHDR) {
tmp = mbi->shdr_num * mbi->shdr_size;
- biosmem_register_boot_data(mbi->shdr_addr, mbi->shdr_addr + tmp, FALSE);
+ if (tmp != 0)
+ biosmem_register_boot_data(mbi->shdr_addr, mbi->shdr_addr + tmp, FALSE);
tmp = phystokv(mbi->shdr_addr);
@@ -321,7 +323,8 @@ register_boot_data(const struct multiboot_raw_info *mbi)
&& (shdr->type != ELF_SHT_STRTAB))
continue;
- biosmem_register_boot_data(shdr->addr, shdr->addr + shdr->size, FALSE);
+ if (shdr->size != 0)
+ biosmem_register_boot_data(shdr->addr, shdr->addr + shdr->size, FALSE);
}
}
}