qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [FOR 0.12][PATCH] Multiboot support: Fix rom_copy


From: Kevin Wolf
Subject: [Qemu-devel] [FOR 0.12][PATCH] Multiboot support: Fix rom_copy
Date: Sat, 19 Dec 2009 21:15:20 +0100

ROMs need to be loaded if they are anywhere in the requested area, not
only at the very beginning. This fixes Multiboot with ELF kernels that
have more than one program header.

Signed-off-by: Kevin Wolf <address@hidden>
---
 hw/loader.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/hw/loader.c b/hw/loader.c
index c7d43f6..2ceb8eb 100644
--- a/hw/loader.c
+++ b/hw/loader.c
@@ -698,6 +698,11 @@ static Rom *find_rom(target_phys_addr_t addr)
     return NULL;
 }
 
+/*
+ * Copies memory from registered ROMs to dest. Any memory that is contained in
+ * a ROM between addr and addr + size is copied. Note that this can involve
+ * multiple ROMs, which need not start at addr and need not end at addr + size.
+ */
 int rom_copy(uint8_t *dest, target_phys_addr_t addr, size_t size)
 {
     target_phys_addr_t end = addr + size;
@@ -706,8 +711,6 @@ int rom_copy(uint8_t *dest, target_phys_addr_t addr, size_t 
size)
     Rom *rom;
 
     QTAILQ_FOREACH(rom, &roms, next) {
-        if (rom->addr > addr)
-            continue;
         if (rom->addr + rom->romsize < addr)
             continue;
         if (rom->addr > end)
-- 
1.6.0.2





reply via email to

[Prev in Thread] Current Thread [Next in Thread]