Commit aa6ad6fee28653943bb2ce2f48d7ed61c4d6d603

Authored by blueswir1
1 parent 12de9a39

Support for loading a real BIOS image (Robert Reif)


git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3336 c046a42c-6fe2-441c-8c8c-71466251a162
Showing 1 changed file with 7 additions and 5 deletions
hw/sun4m.c
@@ -49,7 +49,7 @@ @@ -49,7 +49,7 @@
49 #define KERNEL_LOAD_ADDR 0x00004000 49 #define KERNEL_LOAD_ADDR 0x00004000
50 #define CMDLINE_ADDR 0x007ff000 50 #define CMDLINE_ADDR 0x007ff000
51 #define INITRD_LOAD_ADDR 0x00800000 51 #define INITRD_LOAD_ADDR 0x00800000
52 -#define PROM_SIZE_MAX (256 * 1024) 52 +#define PROM_SIZE_MAX (512 * 1024)
53 #define PROM_PADDR 0xff0000000ULL 53 #define PROM_PADDR 0xff0000000ULL
54 #define PROM_VADDR 0xffd00000 54 #define PROM_VADDR 0xffd00000
55 #define PROM_FILENAME "openbios-sparc32" 55 #define PROM_FILENAME "openbios-sparc32"
@@ -434,10 +434,12 @@ static void sun4m_load_kernel(long vram_size, int RAM_size, int boot_device, @@ -434,10 +434,12 @@ static void sun4m_load_kernel(long vram_size, int RAM_size, int boot_device,
434 bios_name = PROM_FILENAME; 434 bios_name = PROM_FILENAME;
435 snprintf(buf, sizeof(buf), "%s/%s", bios_dir, bios_name); 435 snprintf(buf, sizeof(buf), "%s/%s", bios_dir, bios_name);
436 ret = load_elf(buf, PROM_PADDR - PROM_VADDR, NULL, NULL, NULL); 436 ret = load_elf(buf, PROM_PADDR - PROM_VADDR, NULL, NULL, NULL);
437 - if (ret < 0) {  
438 - fprintf(stderr, "qemu: could not load prom '%s'\n",  
439 - buf);  
440 - exit(1); 437 + if (ret < 0 || ret > PROM_SIZE_MAX)
  438 + ret = load_image(buf, phys_ram_base + prom_offset);
  439 + if (ret < 0 || ret > PROM_SIZE_MAX) {
  440 + fprintf(stderr, "qemu: could not load prom '%s'\n",
  441 + buf);
  442 + exit(1);
441 } 443 }
442 444
443 kernel_size = 0; 445 kernel_size = 0;