Commit a748ab6d9a443e741c52ccd38c4e00e2b32590c4
1 parent
f2fde45a
target-ppc: modify hw/ppc_oldword.c to use qemu_ram_alloc()
This patch uses qemu_ram_alloc() to allocate RAM, VGA RAM and VGA BIOS. Signed-off-by: Blue Swirl <blauwirbel@gmail.com> Signed-off-by: Laurent Vivier <Laurent@lvivier.info> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6114 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
12 additions
and
9 deletions
hw/ppc_oldworld.c
| @@ -34,6 +34,7 @@ | @@ -34,6 +34,7 @@ | ||
| 34 | #include "boards.h" | 34 | #include "boards.h" |
| 35 | 35 | ||
| 36 | #define MAX_IDE_BUS 2 | 36 | #define MAX_IDE_BUS 2 |
| 37 | +#define VGA_BIOS_SIZE 65536 | ||
| 37 | 38 | ||
| 38 | /* temporary frame buffer OSI calls for the video.x driver. The right | 39 | /* temporary frame buffer OSI calls for the video.x driver. The right |
| 39 | solution is to modify the driver to use VGA PCI I/Os */ | 40 | solution is to modify the driver to use VGA PCI I/Os */ |
| @@ -116,7 +117,7 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size, | @@ -116,7 +117,7 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size, | ||
| 116 | nvram_t nvram; | 117 | nvram_t nvram; |
| 117 | m48t59_t *m48t59; | 118 | m48t59_t *m48t59; |
| 118 | int linux_boot, i; | 119 | int linux_boot, i; |
| 119 | - unsigned long bios_offset, vga_bios_offset; | 120 | + ram_addr_t ram_offset, vga_ram_offset, bios_offset, vga_bios_offset; |
| 120 | uint32_t kernel_base, kernel_size, initrd_base, initrd_size; | 121 | uint32_t kernel_base, kernel_size, initrd_base, initrd_size; |
| 121 | PCIBus *pci_bus; | 122 | PCIBus *pci_bus; |
| 122 | MacIONVRAMState *nvr; | 123 | MacIONVRAMState *nvr; |
| @@ -154,10 +155,14 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size, | @@ -154,10 +155,14 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size, | ||
| 154 | } | 155 | } |
| 155 | 156 | ||
| 156 | /* allocate RAM */ | 157 | /* allocate RAM */ |
| 157 | - cpu_register_physical_memory(0, ram_size, IO_MEM_RAM); | 158 | + ram_offset = qemu_ram_alloc(ram_size); |
| 159 | + cpu_register_physical_memory(0, ram_size, ram_offset); | ||
| 160 | + | ||
| 161 | + /* allocate VGA RAM */ | ||
| 162 | + vga_ram_offset = qemu_ram_alloc(vga_ram_size); | ||
| 158 | 163 | ||
| 159 | /* allocate and load BIOS */ | 164 | /* allocate and load BIOS */ |
| 160 | - bios_offset = ram_size + vga_ram_size; | 165 | + bios_offset = qemu_ram_alloc(BIOS_SIZE); |
| 161 | if (bios_name == NULL) | 166 | if (bios_name == NULL) |
| 162 | bios_name = BIOS_FILENAME; | 167 | bios_name = BIOS_FILENAME; |
| 163 | snprintf(buf, sizeof(buf), "%s/%s", bios_dir, bios_name); | 168 | snprintf(buf, sizeof(buf), "%s/%s", bios_dir, bios_name); |
| @@ -166,7 +171,6 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size, | @@ -166,7 +171,6 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size, | ||
| 166 | cpu_abort(env, "qemu: could not load PowerPC bios '%s'\n", buf); | 171 | cpu_abort(env, "qemu: could not load PowerPC bios '%s'\n", buf); |
| 167 | exit(1); | 172 | exit(1); |
| 168 | } | 173 | } |
| 169 | - bios_size = (bios_size + 0xfff) & ~0xfff; | ||
| 170 | if (bios_size > 0x00080000) { | 174 | if (bios_size > 0x00080000) { |
| 171 | /* As the NVRAM is located at 0xFFF04000, we cannot use 1 MB BIOSes */ | 175 | /* As the NVRAM is located at 0xFFF04000, we cannot use 1 MB BIOSes */ |
| 172 | cpu_abort(env, "G3BW Mac hardware can not handle 1 MB BIOS\n"); | 176 | cpu_abort(env, "G3BW Mac hardware can not handle 1 MB BIOS\n"); |
| @@ -175,7 +179,7 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size, | @@ -175,7 +179,7 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size, | ||
| 175 | bios_size, bios_offset | IO_MEM_ROM); | 179 | bios_size, bios_offset | IO_MEM_ROM); |
| 176 | 180 | ||
| 177 | /* allocate and load VGA BIOS */ | 181 | /* allocate and load VGA BIOS */ |
| 178 | - vga_bios_offset = bios_offset + bios_size; | 182 | + vga_bios_offset = qemu_ram_alloc(VGA_BIOS_SIZE); |
| 179 | snprintf(buf, sizeof(buf), "%s/%s", bios_dir, VGABIOS_FILENAME); | 183 | snprintf(buf, sizeof(buf), "%s/%s", bios_dir, VGABIOS_FILENAME); |
| 180 | vga_bios_size = load_image(buf, phys_ram_base + vga_bios_offset + 8); | 184 | vga_bios_size = load_image(buf, phys_ram_base + vga_bios_offset + 8); |
| 181 | if (vga_bios_size < 0) { | 185 | if (vga_bios_size < 0) { |
| @@ -193,7 +197,6 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size, | @@ -193,7 +197,6 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size, | ||
| 193 | vga_bios_size); | 197 | vga_bios_size); |
| 194 | vga_bios_size += 8; | 198 | vga_bios_size += 8; |
| 195 | } | 199 | } |
| 196 | - vga_bios_size = (vga_bios_size + 0xfff) & ~0xfff; | ||
| 197 | 200 | ||
| 198 | if (linux_boot) { | 201 | if (linux_boot) { |
| 199 | kernel_base = KERNEL_LOAD_ADDR; | 202 | kernel_base = KERNEL_LOAD_ADDR; |
| @@ -278,8 +281,8 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size, | @@ -278,8 +281,8 @@ static void ppc_heathrow_init (ram_addr_t ram_size, int vga_ram_size, | ||
| 278 | } | 281 | } |
| 279 | pic = heathrow_pic_init(&pic_mem_index, 1, heathrow_irqs); | 282 | pic = heathrow_pic_init(&pic_mem_index, 1, heathrow_irqs); |
| 280 | pci_bus = pci_grackle_init(0xfec00000, pic); | 283 | pci_bus = pci_grackle_init(0xfec00000, pic); |
| 281 | - pci_vga_init(pci_bus, ds, phys_ram_base + ram_size, | ||
| 282 | - ram_size, vga_ram_size, | 284 | + pci_vga_init(pci_bus, ds, phys_ram_base + vga_ram_offset, |
| 285 | + vga_ram_offset, vga_ram_size, | ||
| 283 | vga_bios_offset, vga_bios_size); | 286 | vga_bios_offset, vga_bios_size); |
| 284 | 287 | ||
| 285 | /* XXX: suppress that */ | 288 | /* XXX: suppress that */ |
| @@ -369,6 +372,6 @@ QEMUMachine heathrow_machine = { | @@ -369,6 +372,6 @@ QEMUMachine heathrow_machine = { | ||
| 369 | .name = "g3bw", | 372 | .name = "g3bw", |
| 370 | .desc = "Heathrow based PowerMAC", | 373 | .desc = "Heathrow based PowerMAC", |
| 371 | .init = ppc_heathrow_init, | 374 | .init = ppc_heathrow_init, |
| 372 | - .ram_require = BIOS_SIZE + VGA_RAM_SIZE, | 375 | + .ram_require = BIOS_SIZE + VGA_BIOS_SIZE + VGA_RAM_SIZE, |
| 373 | .max_cpus = MAX_CPUS, | 376 | .max_cpus = MAX_CPUS, |
| 374 | }; | 377 | }; |