X-Git-Url: https://vcs.maemo.org/git/?a=blobdiff_plain;f=hw%2Fsun4m.c;h=f25fa3eeab9065dbc69210d826b06fc16c3d7200;hb=502a53952d574717bdb626b651b16cadacab46f4;hp=b41ee25828f699990b912d95222a06e5a0dff84e;hpb=a41b2ff2ddd0ba05ac2ca1bb657603b1d09dc9bc;p=qemu diff --git a/hw/sun4m.c b/hw/sun4m.c index b41ee25..f25fa3e 100644 --- a/hw/sun4m.c +++ b/hw/sun4m.c @@ -26,6 +26,7 @@ #define KERNEL_LOAD_ADDR 0x00004000 #define CMDLINE_ADDR 0x007ff000 #define INITRD_LOAD_ADDR 0x00800000 +#define PROM_SIZE_MAX (256 * 1024) #define PROM_ADDR 0xffd00000 #define PROM_FILENAMEB "proll.bin" #define PROM_FILENAMEE "proll.elf" @@ -182,26 +183,14 @@ void pic_set_irq(int irq, int level) slavio_pic_set_irq(slavio_intctl, irq, level); } -void pic_set_irq_cpu(int irq, int level, unsigned int cpu) +void pic_set_irq_new(void *opaque, int irq, int level) { - slavio_pic_set_irq_cpu(slavio_intctl, irq, level, cpu); + pic_set_irq(irq, level); } -static void *tcx; - -void vga_update_display() -{ - tcx_update_display(tcx); -} - -void vga_invalidate_display() -{ - tcx_invalidate_display(tcx); -} - -void vga_screen_dump(const char *filename) +void pic_set_irq_cpu(int irq, int level, unsigned int cpu) { - tcx_screen_dump(tcx, filename); + slavio_pic_set_irq_cpu(slavio_intctl, irq, level, cpu); } static void *iommu; @@ -256,7 +245,7 @@ static void sun4m_init(int ram_size, int vga_ram_size, int boot_device, slavio_intctl_set_cpu(slavio_intctl, i, envs[i]); } - tcx = tcx_init(ds, PHYS_JJ_TCX_FB, phys_ram_base + ram_size, ram_size, vram_size, graphic_width, graphic_height); + tcx_init(ds, PHYS_JJ_TCX_FB, phys_ram_base + ram_size, ram_size, vram_size, graphic_width, graphic_height); if (nd_table[0].vlan) { if (nd_table[0].model == NULL || strcmp(nd_table[0].model, "lance") == 0) { @@ -280,9 +269,12 @@ static void sun4m_init(int ram_size, int vga_ram_size, int boot_device, slavio_misc = slavio_misc_init(PHYS_JJ_SLAVIO, PHYS_JJ_ME_IRQ); prom_offset = ram_size + vram_size; + cpu_register_physical_memory(PROM_ADDR, + (PROM_SIZE_MAX + TARGET_PAGE_SIZE - 1) & TARGET_PAGE_MASK, + prom_offset | IO_MEM_ROM); snprintf(buf, sizeof(buf), "%s/%s", bios_dir, PROM_FILENAMEE); - ret = load_elf(buf, phys_ram_base + prom_offset); + ret = load_elf(buf, 0, NULL); if (ret < 0) { snprintf(buf, sizeof(buf), "%s/%s", bios_dir, PROM_FILENAMEB); ret = load_image(buf, phys_ram_base + prom_offset); @@ -292,12 +284,10 @@ static void sun4m_init(int ram_size, int vga_ram_size, int boot_device, buf); exit(1); } - cpu_register_physical_memory(PROM_ADDR, (ret + TARGET_PAGE_SIZE) & TARGET_PAGE_MASK, - prom_offset | IO_MEM_ROM); kernel_size = 0; if (linux_boot) { - kernel_size = load_elf(kernel_filename, phys_ram_base + KERNEL_LOAD_ADDR); + kernel_size = load_elf(kernel_filename, -0xf0000000, NULL); if (kernel_size < 0) kernel_size = load_aout(kernel_filename, phys_ram_base + KERNEL_LOAD_ADDR); if (kernel_size < 0)