Commit 5c6602c5468a1408686abce6cdb2617ee462a333
1 parent
05330448
Use qemu_ram_alloc
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@5630 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
2 changed files
with
31 additions
and
20 deletions
hw/sun4m.c
| @@ -433,7 +433,8 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef, ram_addr_t RAM_size, | @@ -433,7 +433,8 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef, ram_addr_t RAM_size, | ||
| 433 | qemu_irq *esp_reset, *le_reset; | 433 | qemu_irq *esp_reset, *le_reset; |
| 434 | qemu_irq *fdc_tc; | 434 | qemu_irq *fdc_tc; |
| 435 | qemu_irq *cpu_halt; | 435 | qemu_irq *cpu_halt; |
| 436 | - unsigned long prom_offset, kernel_size; | 436 | + ram_addr_t ram_offset, prom_offset, tcx_offset, idreg_offset; |
| 437 | + unsigned long kernel_size; | ||
| 437 | int ret; | 438 | int ret; |
| 438 | char buf[1024]; | 439 | char buf[1024]; |
| 439 | BlockDriverState *fd[MAX_FD]; | 440 | BlockDriverState *fd[MAX_FD]; |
| @@ -474,10 +475,11 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef, ram_addr_t RAM_size, | @@ -474,10 +475,11 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef, ram_addr_t RAM_size, | ||
| 474 | (unsigned int)(hwdef->max_mem / (1024 * 1024))); | 475 | (unsigned int)(hwdef->max_mem / (1024 * 1024))); |
| 475 | exit(1); | 476 | exit(1); |
| 476 | } | 477 | } |
| 477 | - cpu_register_physical_memory(0, RAM_size, 0); | 478 | + ram_offset = qemu_ram_alloc(RAM_size); |
| 479 | + cpu_register_physical_memory(0, RAM_size, ram_offset); | ||
| 478 | 480 | ||
| 479 | /* load boot prom */ | 481 | /* load boot prom */ |
| 480 | - prom_offset = RAM_size + hwdef->vram_size; | 482 | + prom_offset = qemu_ram_alloc(PROM_SIZE_MAX); |
| 481 | cpu_register_physical_memory(hwdef->slavio_base, | 483 | cpu_register_physical_memory(hwdef->slavio_base, |
| 482 | (PROM_SIZE_MAX + TARGET_PAGE_SIZE - 1) & | 484 | (PROM_SIZE_MAX + TARGET_PAGE_SIZE - 1) & |
| 483 | TARGET_PAGE_MASK, | 485 | TARGET_PAGE_MASK, |
| @@ -494,7 +496,6 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef, ram_addr_t RAM_size, | @@ -494,7 +496,6 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef, ram_addr_t RAM_size, | ||
| 494 | buf); | 496 | buf); |
| 495 | exit(1); | 497 | exit(1); |
| 496 | } | 498 | } |
| 497 | - prom_offset += (ret + TARGET_PAGE_SIZE - 1) & TARGET_PAGE_MASK; | ||
| 498 | 499 | ||
| 499 | /* set up devices */ | 500 | /* set up devices */ |
| 500 | slavio_intctl = slavio_intctl_init(hwdef->intctl_base, | 501 | slavio_intctl = slavio_intctl_init(hwdef->intctl_base, |
| @@ -507,8 +508,9 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef, ram_addr_t RAM_size, | @@ -507,8 +508,9 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef, ram_addr_t RAM_size, | ||
| 507 | if (hwdef->idreg_base != (target_phys_addr_t)-1) { | 508 | if (hwdef->idreg_base != (target_phys_addr_t)-1) { |
| 508 | static const uint8_t idreg_data[] = { 0xfe, 0x81, 0x01, 0x03 }; | 509 | static const uint8_t idreg_data[] = { 0xfe, 0x81, 0x01, 0x03 }; |
| 509 | 510 | ||
| 511 | + idreg_offset = qemu_ram_alloc(sizeof(idreg_data)); | ||
| 510 | cpu_register_physical_memory(hwdef->idreg_base, sizeof(idreg_data), | 512 | cpu_register_physical_memory(hwdef->idreg_base, sizeof(idreg_data), |
| 511 | - prom_offset | IO_MEM_ROM); | 513 | + idreg_offset | IO_MEM_ROM); |
| 512 | cpu_physical_memory_write_rom(hwdef->idreg_base, idreg_data, | 514 | cpu_physical_memory_write_rom(hwdef->idreg_base, idreg_data, |
| 513 | sizeof(idreg_data)); | 515 | sizeof(idreg_data)); |
| 514 | } | 516 | } |
| @@ -527,7 +529,8 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef, ram_addr_t RAM_size, | @@ -527,7 +529,8 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef, ram_addr_t RAM_size, | ||
| 527 | fprintf(stderr, "qemu: Unsupported depth: %d\n", graphic_depth); | 529 | fprintf(stderr, "qemu: Unsupported depth: %d\n", graphic_depth); |
| 528 | exit (1); | 530 | exit (1); |
| 529 | } | 531 | } |
| 530 | - tcx_init(ds, hwdef->tcx_base, phys_ram_base + RAM_size, RAM_size, | 532 | + tcx_offset = qemu_ram_alloc(hwdef->vram_size); |
| 533 | + tcx_init(ds, hwdef->tcx_base, phys_ram_base + tcx_offset, tcx_offset, | ||
| 531 | hwdef->vram_size, graphic_width, graphic_height, graphic_depth); | 534 | hwdef->vram_size, graphic_width, graphic_height, graphic_depth); |
| 532 | 535 | ||
| 533 | if (nd_table[0].model == NULL | 536 | if (nd_table[0].model == NULL |
| @@ -1260,7 +1263,8 @@ static void sun4d_hw_init(const struct sun4d_hwdef *hwdef, ram_addr_t RAM_size, | @@ -1260,7 +1263,8 @@ static void sun4d_hw_init(const struct sun4d_hwdef *hwdef, ram_addr_t RAM_size, | ||
| 1260 | qemu_irq *cpu_irqs[MAX_CPUS], *sbi_irq, *sbi_cpu_irq, | 1263 | qemu_irq *cpu_irqs[MAX_CPUS], *sbi_irq, *sbi_cpu_irq, |
| 1261 | *espdma_irq, *ledma_irq; | 1264 | *espdma_irq, *ledma_irq; |
| 1262 | qemu_irq *esp_reset, *le_reset; | 1265 | qemu_irq *esp_reset, *le_reset; |
| 1263 | - unsigned long prom_offset, kernel_size; | 1266 | + ram_addr_t ram_offset, prom_offset, tcx_offset; |
| 1267 | + unsigned long kernel_size; | ||
| 1264 | int ret; | 1268 | int ret; |
| 1265 | char buf[1024]; | 1269 | char buf[1024]; |
| 1266 | int drive_index; | 1270 | int drive_index; |
| @@ -1299,10 +1303,11 @@ static void sun4d_hw_init(const struct sun4d_hwdef *hwdef, ram_addr_t RAM_size, | @@ -1299,10 +1303,11 @@ static void sun4d_hw_init(const struct sun4d_hwdef *hwdef, ram_addr_t RAM_size, | ||
| 1299 | (unsigned int)(hwdef->max_mem / (1024 * 1024))); | 1303 | (unsigned int)(hwdef->max_mem / (1024 * 1024))); |
| 1300 | exit(1); | 1304 | exit(1); |
| 1301 | } | 1305 | } |
| 1302 | - cpu_register_physical_memory(0, RAM_size, 0); | 1306 | + ram_offset = qemu_ram_alloc(RAM_size); |
| 1307 | + cpu_register_physical_memory(0, RAM_size, ram_offset); | ||
| 1303 | 1308 | ||
| 1304 | /* load boot prom */ | 1309 | /* load boot prom */ |
| 1305 | - prom_offset = RAM_size + hwdef->vram_size; | 1310 | + prom_offset = qemu_ram_alloc(PROM_SIZE_MAX); |
| 1306 | cpu_register_physical_memory(hwdef->slavio_base, | 1311 | cpu_register_physical_memory(hwdef->slavio_base, |
| 1307 | (PROM_SIZE_MAX + TARGET_PAGE_SIZE - 1) & | 1312 | (PROM_SIZE_MAX + TARGET_PAGE_SIZE - 1) & |
| 1308 | TARGET_PAGE_MASK, | 1313 | TARGET_PAGE_MASK, |
| @@ -1339,7 +1344,8 @@ static void sun4d_hw_init(const struct sun4d_hwdef *hwdef, ram_addr_t RAM_size, | @@ -1339,7 +1344,8 @@ static void sun4d_hw_init(const struct sun4d_hwdef *hwdef, ram_addr_t RAM_size, | ||
| 1339 | fprintf(stderr, "qemu: Unsupported depth: %d\n", graphic_depth); | 1344 | fprintf(stderr, "qemu: Unsupported depth: %d\n", graphic_depth); |
| 1340 | exit (1); | 1345 | exit (1); |
| 1341 | } | 1346 | } |
| 1342 | - tcx_init(ds, hwdef->tcx_base, phys_ram_base + RAM_size, RAM_size, | 1347 | + tcx_offset = qemu_ram_alloc(hwdef->vram_size); |
| 1348 | + tcx_init(ds, hwdef->tcx_base, phys_ram_base + tcx_offset, tcx_offset, | ||
| 1343 | hwdef->vram_size, graphic_width, graphic_height, graphic_depth); | 1349 | hwdef->vram_size, graphic_width, graphic_height, graphic_depth); |
| 1344 | 1350 | ||
| 1345 | if (nd_table[0].model == NULL | 1351 | if (nd_table[0].model == NULL |
| @@ -1481,7 +1487,8 @@ static void sun4c_hw_init(const struct sun4c_hwdef *hwdef, ram_addr_t RAM_size, | @@ -1481,7 +1487,8 @@ static void sun4c_hw_init(const struct sun4c_hwdef *hwdef, ram_addr_t RAM_size, | ||
| 1481 | qemu_irq *cpu_irqs, *slavio_irq, *espdma_irq, *ledma_irq; | 1487 | qemu_irq *cpu_irqs, *slavio_irq, *espdma_irq, *ledma_irq; |
| 1482 | qemu_irq *esp_reset, *le_reset; | 1488 | qemu_irq *esp_reset, *le_reset; |
| 1483 | qemu_irq *fdc_tc; | 1489 | qemu_irq *fdc_tc; |
| 1484 | - unsigned long prom_offset, kernel_size; | 1490 | + ram_addr_t ram_offset, prom_offset, tcx_offset; |
| 1491 | + unsigned long kernel_size; | ||
| 1485 | int ret; | 1492 | int ret; |
| 1486 | char buf[1024]; | 1493 | char buf[1024]; |
| 1487 | BlockDriverState *fd[MAX_FD]; | 1494 | BlockDriverState *fd[MAX_FD]; |
| @@ -1512,10 +1519,11 @@ static void sun4c_hw_init(const struct sun4c_hwdef *hwdef, ram_addr_t RAM_size, | @@ -1512,10 +1519,11 @@ static void sun4c_hw_init(const struct sun4c_hwdef *hwdef, ram_addr_t RAM_size, | ||
| 1512 | (unsigned int)(hwdef->max_mem / (1024 * 1024))); | 1519 | (unsigned int)(hwdef->max_mem / (1024 * 1024))); |
| 1513 | exit(1); | 1520 | exit(1); |
| 1514 | } | 1521 | } |
| 1515 | - cpu_register_physical_memory(0, RAM_size, 0); | 1522 | + ram_offset = qemu_ram_alloc(RAM_size); |
| 1523 | + cpu_register_physical_memory(0, RAM_size, ram_offset); | ||
| 1516 | 1524 | ||
| 1517 | /* load boot prom */ | 1525 | /* load boot prom */ |
| 1518 | - prom_offset = RAM_size + hwdef->vram_size; | 1526 | + prom_offset = qemu_ram_alloc(PROM_SIZE_MAX); |
| 1519 | cpu_register_physical_memory(hwdef->slavio_base, | 1527 | cpu_register_physical_memory(hwdef->slavio_base, |
| 1520 | (PROM_SIZE_MAX + TARGET_PAGE_SIZE - 1) & | 1528 | (PROM_SIZE_MAX + TARGET_PAGE_SIZE - 1) & |
| 1521 | TARGET_PAGE_MASK, | 1529 | TARGET_PAGE_MASK, |
| @@ -1532,7 +1540,6 @@ static void sun4c_hw_init(const struct sun4c_hwdef *hwdef, ram_addr_t RAM_size, | @@ -1532,7 +1540,6 @@ static void sun4c_hw_init(const struct sun4c_hwdef *hwdef, ram_addr_t RAM_size, | ||
| 1532 | buf); | 1540 | buf); |
| 1533 | exit(1); | 1541 | exit(1); |
| 1534 | } | 1542 | } |
| 1535 | - prom_offset += (ret + TARGET_PAGE_SIZE - 1) & TARGET_PAGE_MASK; | ||
| 1536 | 1543 | ||
| 1537 | /* set up devices */ | 1544 | /* set up devices */ |
| 1538 | slavio_intctl = sun4c_intctl_init(hwdef->intctl_base, | 1545 | slavio_intctl = sun4c_intctl_init(hwdef->intctl_base, |
| @@ -1552,7 +1559,8 @@ static void sun4c_hw_init(const struct sun4c_hwdef *hwdef, ram_addr_t RAM_size, | @@ -1552,7 +1559,8 @@ static void sun4c_hw_init(const struct sun4c_hwdef *hwdef, ram_addr_t RAM_size, | ||
| 1552 | fprintf(stderr, "qemu: Unsupported depth: %d\n", graphic_depth); | 1559 | fprintf(stderr, "qemu: Unsupported depth: %d\n", graphic_depth); |
| 1553 | exit (1); | 1560 | exit (1); |
| 1554 | } | 1561 | } |
| 1555 | - tcx_init(ds, hwdef->tcx_base, phys_ram_base + RAM_size, RAM_size, | 1562 | + tcx_offset = qemu_ram_alloc(hwdef->vram_size); |
| 1563 | + tcx_init(ds, hwdef->tcx_base, phys_ram_base + tcx_offset, tcx_offset, | ||
| 1556 | hwdef->vram_size, graphic_width, graphic_height, graphic_depth); | 1564 | hwdef->vram_size, graphic_width, graphic_height, graphic_depth); |
| 1557 | 1565 | ||
| 1558 | if (nd_table[0].model == NULL | 1566 | if (nd_table[0].model == NULL |
hw/sun4u.c
| @@ -344,7 +344,8 @@ static void sun4uv_init(ram_addr_t RAM_size, int vga_ram_size, | @@ -344,7 +344,8 @@ static void sun4uv_init(ram_addr_t RAM_size, int vga_ram_size, | ||
| 344 | m48t59_t *nvram; | 344 | m48t59_t *nvram; |
| 345 | int ret, linux_boot; | 345 | int ret, linux_boot; |
| 346 | unsigned int i; | 346 | unsigned int i; |
| 347 | - long prom_offset, initrd_size, kernel_size; | 347 | + ram_addr_t ram_offset, prom_offset, vga_ram_offset; |
| 348 | + long initrd_size, kernel_size; | ||
| 348 | PCIBus *pci_bus; | 349 | PCIBus *pci_bus; |
| 349 | QEMUBH *bh; | 350 | QEMUBH *bh; |
| 350 | qemu_irq *irq; | 351 | qemu_irq *irq; |
| @@ -387,9 +388,10 @@ static void sun4uv_init(ram_addr_t RAM_size, int vga_ram_size, | @@ -387,9 +388,10 @@ static void sun4uv_init(ram_addr_t RAM_size, int vga_ram_size, | ||
| 387 | env->npc = env->pc + 4; | 388 | env->npc = env->pc + 4; |
| 388 | 389 | ||
| 389 | /* allocate RAM */ | 390 | /* allocate RAM */ |
| 390 | - cpu_register_physical_memory(0, RAM_size, 0); | 391 | + ram_offset = qemu_ram_alloc(RAM_size); |
| 392 | + cpu_register_physical_memory(0, RAM_size, ram_offset); | ||
| 391 | 393 | ||
| 392 | - prom_offset = RAM_size + vga_ram_size; | 394 | + prom_offset = qemu_ram_alloc(PROM_SIZE_MAX); |
| 393 | cpu_register_physical_memory(hwdef->prom_addr, | 395 | cpu_register_physical_memory(hwdef->prom_addr, |
| 394 | (PROM_SIZE_MAX + TARGET_PAGE_SIZE) & | 396 | (PROM_SIZE_MAX + TARGET_PAGE_SIZE) & |
| 395 | TARGET_PAGE_MASK, | 397 | TARGET_PAGE_MASK, |
| @@ -451,8 +453,9 @@ static void sun4uv_init(ram_addr_t RAM_size, int vga_ram_size, | @@ -451,8 +453,9 @@ static void sun4uv_init(ram_addr_t RAM_size, int vga_ram_size, | ||
| 451 | } | 453 | } |
| 452 | pci_bus = pci_apb_init(APB_SPECIAL_BASE, APB_MEM_BASE, NULL); | 454 | pci_bus = pci_apb_init(APB_SPECIAL_BASE, APB_MEM_BASE, NULL); |
| 453 | isa_mem_base = VGA_BASE; | 455 | isa_mem_base = VGA_BASE; |
| 454 | - pci_cirrus_vga_init(pci_bus, ds, phys_ram_base + RAM_size, RAM_size, | ||
| 455 | - vga_ram_size); | 456 | + vga_ram_offset = qemu_ram_alloc(vga_ram_size); |
| 457 | + pci_cirrus_vga_init(pci_bus, ds, phys_ram_base + vga_ram_offset, | ||
| 458 | + vga_ram_offset, vga_ram_size); | ||
| 456 | 459 | ||
| 457 | i = 0; | 460 | i = 0; |
| 458 | if (hwdef->console_serial_base) { | 461 | if (hwdef->console_serial_base) { |