@@ -738,11 +738,8 @@ static void rom_reset(void *unused)
continue;
}
cpu_physical_memory_write_rom(rom->addr, rom->data, rom->romsize);
- if (rom->isrom) {
- /* rom needs to be written only once */
- g_free(rom->data);
- rom->data = NULL;
- }
+ g_free(rom->data);
+ rom->data = NULL;
}
}
@@ -767,8 +764,8 @@ int rom_load_all(void)
addr += rom->romsize;
section = memory_region_find(get_system_memory(), rom->addr, 1);
rom->isrom = section.size && memory_region_is_rom(section.mr);
+ qemu_register_reset(rom_reset, rom);
}
- qemu_register_reset(rom_reset, NULL);
roms_loaded = 1;
return 0;
}
Signed-off-by: Olivia Yin <hong-hua.yin@freescale.com> --- hw/loader.c | 9 +++------ 1 files changed, 3 insertions(+), 6 deletions(-)