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 | 433 | qemu_irq *esp_reset, *le_reset; |
434 | 434 | qemu_irq *fdc_tc; |
435 | 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 | 438 | int ret; |
438 | 439 | char buf[1024]; |
439 | 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 | 475 | (unsigned int)(hwdef->max_mem / (1024 * 1024))); |
475 | 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 | 481 | /* load boot prom */ |
480 | - prom_offset = RAM_size + hwdef->vram_size; | |
482 | + prom_offset = qemu_ram_alloc(PROM_SIZE_MAX); | |
481 | 483 | cpu_register_physical_memory(hwdef->slavio_base, |
482 | 484 | (PROM_SIZE_MAX + TARGET_PAGE_SIZE - 1) & |
483 | 485 | TARGET_PAGE_MASK, |
... | ... | @@ -494,7 +496,6 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef, ram_addr_t RAM_size, |
494 | 496 | buf); |
495 | 497 | exit(1); |
496 | 498 | } |
497 | - prom_offset += (ret + TARGET_PAGE_SIZE - 1) & TARGET_PAGE_MASK; | |
498 | 499 | |
499 | 500 | /* set up devices */ |
500 | 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 | 508 | if (hwdef->idreg_base != (target_phys_addr_t)-1) { |
508 | 509 | static const uint8_t idreg_data[] = { 0xfe, 0x81, 0x01, 0x03 }; |
509 | 510 | |
511 | + idreg_offset = qemu_ram_alloc(sizeof(idreg_data)); | |
510 | 512 | cpu_register_physical_memory(hwdef->idreg_base, sizeof(idreg_data), |
511 | - prom_offset | IO_MEM_ROM); | |
513 | + idreg_offset | IO_MEM_ROM); | |
512 | 514 | cpu_physical_memory_write_rom(hwdef->idreg_base, idreg_data, |
513 | 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 | 529 | fprintf(stderr, "qemu: Unsupported depth: %d\n", graphic_depth); |
528 | 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 | 534 | hwdef->vram_size, graphic_width, graphic_height, graphic_depth); |
532 | 535 | |
533 | 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 | 1263 | qemu_irq *cpu_irqs[MAX_CPUS], *sbi_irq, *sbi_cpu_irq, |
1261 | 1264 | *espdma_irq, *ledma_irq; |
1262 | 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 | 1268 | int ret; |
1265 | 1269 | char buf[1024]; |
1266 | 1270 | int drive_index; |
... | ... | @@ -1299,10 +1303,11 @@ static void sun4d_hw_init(const struct sun4d_hwdef *hwdef, ram_addr_t RAM_size, |
1299 | 1303 | (unsigned int)(hwdef->max_mem / (1024 * 1024))); |
1300 | 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 | 1309 | /* load boot prom */ |
1305 | - prom_offset = RAM_size + hwdef->vram_size; | |
1310 | + prom_offset = qemu_ram_alloc(PROM_SIZE_MAX); | |
1306 | 1311 | cpu_register_physical_memory(hwdef->slavio_base, |
1307 | 1312 | (PROM_SIZE_MAX + TARGET_PAGE_SIZE - 1) & |
1308 | 1313 | TARGET_PAGE_MASK, |
... | ... | @@ -1339,7 +1344,8 @@ static void sun4d_hw_init(const struct sun4d_hwdef *hwdef, ram_addr_t RAM_size, |
1339 | 1344 | fprintf(stderr, "qemu: Unsupported depth: %d\n", graphic_depth); |
1340 | 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 | 1349 | hwdef->vram_size, graphic_width, graphic_height, graphic_depth); |
1344 | 1350 | |
1345 | 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 | 1487 | qemu_irq *cpu_irqs, *slavio_irq, *espdma_irq, *ledma_irq; |
1482 | 1488 | qemu_irq *esp_reset, *le_reset; |
1483 | 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 | 1492 | int ret; |
1486 | 1493 | char buf[1024]; |
1487 | 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 | 1519 | (unsigned int)(hwdef->max_mem / (1024 * 1024))); |
1513 | 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 | 1525 | /* load boot prom */ |
1518 | - prom_offset = RAM_size + hwdef->vram_size; | |
1526 | + prom_offset = qemu_ram_alloc(PROM_SIZE_MAX); | |
1519 | 1527 | cpu_register_physical_memory(hwdef->slavio_base, |
1520 | 1528 | (PROM_SIZE_MAX + TARGET_PAGE_SIZE - 1) & |
1521 | 1529 | TARGET_PAGE_MASK, |
... | ... | @@ -1532,7 +1540,6 @@ static void sun4c_hw_init(const struct sun4c_hwdef *hwdef, ram_addr_t RAM_size, |
1532 | 1540 | buf); |
1533 | 1541 | exit(1); |
1534 | 1542 | } |
1535 | - prom_offset += (ret + TARGET_PAGE_SIZE - 1) & TARGET_PAGE_MASK; | |
1536 | 1543 | |
1537 | 1544 | /* set up devices */ |
1538 | 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 | 1559 | fprintf(stderr, "qemu: Unsupported depth: %d\n", graphic_depth); |
1553 | 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 | 1564 | hwdef->vram_size, graphic_width, graphic_height, graphic_depth); |
1557 | 1565 | |
1558 | 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 | 344 | m48t59_t *nvram; |
345 | 345 | int ret, linux_boot; |
346 | 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 | 349 | PCIBus *pci_bus; |
349 | 350 | QEMUBH *bh; |
350 | 351 | qemu_irq *irq; |
... | ... | @@ -387,9 +388,10 @@ static void sun4uv_init(ram_addr_t RAM_size, int vga_ram_size, |
387 | 388 | env->npc = env->pc + 4; |
388 | 389 | |
389 | 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 | 395 | cpu_register_physical_memory(hwdef->prom_addr, |
394 | 396 | (PROM_SIZE_MAX + TARGET_PAGE_SIZE) & |
395 | 397 | TARGET_PAGE_MASK, |
... | ... | @@ -451,8 +453,9 @@ static void sun4uv_init(ram_addr_t RAM_size, int vga_ram_size, |
451 | 453 | } |
452 | 454 | pci_bus = pci_apb_init(APB_SPECIAL_BASE, APB_MEM_BASE, NULL); |
453 | 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 | 460 | i = 0; |
458 | 461 | if (hwdef->console_serial_base) { | ... | ... |