Commit b533415989c55d929804d56ea4bfb93e8d5ce021
1 parent
82790064
Only map BIOS space when it was actually loaded.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3408 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
8 additions
and
9 deletions
hw/mips_mipssim.c
| ... | ... | @@ -82,7 +82,7 @@ mips_mipssim_init (int ram_size, int vga_ram_size, int boot_device, |
| 82 | 82 | char buf[1024]; |
| 83 | 83 | unsigned long bios_offset; |
| 84 | 84 | CPUState *env; |
| 85 | - int ret; | |
| 85 | + int bios_size; | |
| 86 | 86 | mips_def_t *def; |
| 87 | 87 | |
| 88 | 88 | /* Init CPUs. */ |
| ... | ... | @@ -103,25 +103,24 @@ mips_mipssim_init (int ram_size, int vga_ram_size, int boot_device, |
| 103 | 103 | /* Allocate RAM. */ |
| 104 | 104 | cpu_register_physical_memory(0, ram_size, IO_MEM_RAM); |
| 105 | 105 | |
| 106 | - /* Map the BIOS / boot exception handler. */ | |
| 107 | - bios_offset = ram_size + vga_ram_size; | |
| 108 | - | |
| 109 | 106 | /* Load a BIOS / boot exception handler image. */ |
| 107 | + bios_offset = ram_size + vga_ram_size; | |
| 110 | 108 | if (bios_name == NULL) |
| 111 | 109 | bios_name = BIOS_FILENAME; |
| 112 | 110 | snprintf(buf, sizeof(buf), "%s/%s", bios_dir, bios_name); |
| 113 | - ret = load_image(buf, phys_ram_base + bios_offset); | |
| 114 | - if ((ret < 0 || ret > BIOS_SIZE) && !kernel_filename) { | |
| 111 | + bios_size = load_image(buf, phys_ram_base + bios_offset); | |
| 112 | + if ((bios_size < 0 || bios_size > BIOS_SIZE) && !kernel_filename) { | |
| 115 | 113 | /* Bail out if we have neither a kernel image nor boot vector code. */ |
| 116 | 114 | fprintf(stderr, |
| 117 | 115 | "qemu: Could not load MIPS bios '%s', and no -kernel argument was specified\n", |
| 118 | 116 | buf); |
| 119 | 117 | exit(1); |
| 120 | 118 | } else { |
| 121 | - /* We have a boot vector start address. */ | |
| 122 | - env->PC[env->current_tc] = (target_long)0xbfc00000; | |
| 119 | + /* Map the BIOS / boot exception handler. */ | |
| 123 | 120 | cpu_register_physical_memory(0x1fc00000LL, |
| 124 | - ret, bios_offset | IO_MEM_ROM); | |
| 121 | + bios_size, bios_offset | IO_MEM_ROM); | |
| 122 | + /* We have a boot vector start address. */ | |
| 123 | + env->PC[env->current_tc] = (target_long)(int32_t)0xbfc00000; | |
| 125 | 124 | } |
| 126 | 125 | |
| 127 | 126 | if (kernel_filename) { | ... | ... |