Commit f19e918d70482789e5b47743e7d849ecaaee9920
1 parent
a0a8793e
Sparc64 update
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3062 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
11 additions
and
3 deletions
hw/sun4u.c
| ... | ... | @@ -29,6 +29,7 @@ |
| 29 | 29 | #define INITRD_LOAD_ADDR 0x00300000 |
| 30 | 30 | #define PROM_SIZE_MAX (512 * 1024) |
| 31 | 31 | #define PROM_ADDR 0x1fff0000000ULL |
| 32 | +#define PROM_VADDR 0x000ffd00000ULL | |
| 32 | 33 | #define APB_SPECIAL_BASE 0x1fe00000000ULL |
| 33 | 34 | #define APB_MEM_BASE 0x1ff00000000ULL |
| 34 | 35 | #define VGA_BASE (APB_MEM_BASE + 0x400000ULL) |
| ... | ... | @@ -244,7 +245,7 @@ int sun4u_NVRAM_set_params (m48t59_t *nvram, uint16_t NVRAM_size, |
| 244 | 245 | |
| 245 | 246 | // OpenBIOS nvram variables |
| 246 | 247 | // Variable partition |
| 247 | - start = 252; | |
| 248 | + start = 256; | |
| 248 | 249 | m48t59_write(nvram, start, 0x70); |
| 249 | 250 | NVRAM_set_string(nvram, start + 4, "system", 12); |
| 250 | 251 | |
| ... | ... | @@ -313,6 +314,10 @@ void hstick_irq(void *opaque) |
| 313 | 314 | cpu_interrupt(env, CPU_INTERRUPT_TIMER); |
| 314 | 315 | } |
| 315 | 316 | |
| 317 | +static void dummy_cpu_set_irq(void *opaque, int irq, int level) | |
| 318 | +{ | |
| 319 | +} | |
| 320 | + | |
| 316 | 321 | static const int ide_iobase[2] = { 0x1f0, 0x170 }; |
| 317 | 322 | static const int ide_iobase2[2] = { 0x3f6, 0x376 }; |
| 318 | 323 | static const int ide_irq[2] = { 14, 15 }; |
| ... | ... | @@ -340,6 +345,7 @@ static void sun4u_init(int ram_size, int vga_ram_size, int boot_device, |
| 340 | 345 | PCIBus *pci_bus; |
| 341 | 346 | const sparc_def_t *def; |
| 342 | 347 | QEMUBH *bh; |
| 348 | + qemu_irq *irq; | |
| 343 | 349 | |
| 344 | 350 | linux_boot = (kernel_filename != NULL); |
| 345 | 351 | |
| ... | ... | @@ -377,7 +383,7 @@ static void sun4u_init(int ram_size, int vga_ram_size, int boot_device, |
| 377 | 383 | prom_offset | IO_MEM_ROM); |
| 378 | 384 | |
| 379 | 385 | snprintf(buf, sizeof(buf), "%s/%s", bios_dir, PROM_FILENAME); |
| 380 | - ret = load_elf(buf, 0, NULL, NULL, NULL); | |
| 386 | + ret = load_elf(buf, PROM_ADDR - PROM_VADDR, NULL, NULL, NULL); | |
| 381 | 387 | if (ret < 0) { |
| 382 | 388 | fprintf(stderr, "qemu: could not load prom '%s'\n", |
| 383 | 389 | buf); |
| ... | ... | @@ -441,7 +447,9 @@ static void sun4u_init(int ram_size, int vga_ram_size, int boot_device, |
| 441 | 447 | pci_nic_init(pci_bus, &nd_table[i], -1); |
| 442 | 448 | } |
| 443 | 449 | |
| 444 | - pci_cmd646_ide_init(pci_bus, bs_table, 1); | |
| 450 | + irq = qemu_allocate_irqs(dummy_cpu_set_irq, NULL, 32); | |
| 451 | + // XXX pci_cmd646_ide_init(pci_bus, bs_table, 1); | |
| 452 | + pci_piix3_ide_init(pci_bus, bs_table, -1, irq); | |
| 445 | 453 | /* FIXME: wire up interrupts. */ |
| 446 | 454 | i8042_init(NULL/*1*/, NULL/*12*/, 0x60); |
| 447 | 455 | floppy_controller = fdctrl_init(NULL/*6*/, 2, 0, 0x3f0, fd_table); | ... | ... |