[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH 9/9] sun4u: switch m48t59 NVRAM to MMIO access
From: |
Mark Cave-Ayland |
Subject: |
[Qemu-devel] [PATCH 9/9] sun4u: switch m48t59 NVRAM to MMIO access |
Date: |
Mon, 2 Mar 2015 23:01:20 +0000 |
Real sun4u systems memory-map the NVRAM on the (ISA) ebus, so switch over to
MMIO from ioport access whilst setting the base year to 1968 as used by Sun
systems. This allows all SPARC64 OSs included in my tests to correctly detect
the NVRAM IC and read the hardware clock correctly upon boot.
Note that this also requires a corresponding OpenBIOS update to switch the
SPARC64 NVRAM accessors over from ioport to MMIO.
Signed-off-by: Mark Cave-Ayland <address@hidden>
---
hw/sparc64/sun4u.c | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c
index 53aec80..f027caf 100644
--- a/hw/sparc64/sun4u.c
+++ b/hw/sparc64/sun4u.c
@@ -612,7 +612,7 @@ pci_ebus_init1(PCIDevice *pci_dev)
0, 0x1000000);
pci_register_bar(pci_dev, 0, PCI_BASE_ADDRESS_SPACE_MEMORY, &s->bar0);
memory_region_init_alias(&s->bar1, OBJECT(s), "bar1", get_system_io(),
- 0, 0x1000);
+ 0, 0x4000);
pci_register_bar(pci_dev, 1, PCI_BASE_ADDRESS_SPACE_IO, &s->bar1);
return 0;
}
@@ -825,6 +825,7 @@ static void sun4uv_init(MemoryRegion *address_space_mem,
uint64_t initrd_addr, initrd_size, kernel_addr, kernel_size, kernel_entry;
PCIBus *pci_bus, *pci_bus2, *pci_bus3;
ISABus *isa_bus;
+ SysBusDevice *s;
qemu_irq *ivec_irqs, *pbm_irqs;
DriveInfo *hd[MAX_IDE_BUS * MAX_IDE_DEVS];
DriveInfo *fd[MAX_FD];
@@ -868,8 +869,13 @@ static void sun4uv_init(MemoryRegion *address_space_mem,
fd[i] = drive_get(IF_FLOPPY, 0, i);
}
fdctrl_init_isa(isa_bus, fd);
- nvram = m48t59_init_isa(isa_bus, 0x0074, NVRAM_SIZE, 2000, 59);
+ /* Map NVRAM into I/O (ebus) space */
+ nvram = m48t59_init(NULL, 0, 0, NVRAM_SIZE, 1968, 59);
+ s = SYS_BUS_DEVICE(nvram);
+ memory_region_add_subregion(get_system_io(), 0x2000,
+ sysbus_mmio_get_region(s, 0));
+
initrd_size = 0;
initrd_addr = 0;
kernel_size = sun4u_load_kernel(machine->kernel_filename,
--
1.7.10.4
- [Qemu-devel] [PATCH 0/9] qemu-sparc updates, Mark Cave-Ayland, 2015/03/02
- [Qemu-devel] [PATCH 1/9] m48t59: move ISA ports/memory regions registration to QOM constructor, Mark Cave-Ayland, 2015/03/02
- [Qemu-devel] [PATCH 2/9] m48t59: register a QOM type for each nvram type we support, Mark Cave-Ayland, 2015/03/02
- [Qemu-devel] [PATCH 3/9] m48t59: add a Nvram interface, Mark Cave-Ayland, 2015/03/02
- [Qemu-devel] [PATCH 4/9] m48t59: let init functions return a Nvram object, Mark Cave-Ayland, 2015/03/02
- [Qemu-devel] [PATCH 6/9] m48t59: add m48t59 sysbus device, Mark Cave-Ayland, 2015/03/02
- [Qemu-devel] [PATCH 5/9] m48t59: introduce new base-year qdev property, Mark Cave-Ayland, 2015/03/02
- [Qemu-devel] [PATCH 7/9] doc: minor updates to SPARC32 and SPARC64 documentation, Mark Cave-Ayland, 2015/03/02
- [Qemu-devel] [PATCH 8/9] MAINTAINERS: add myself as SPARC maintainer, Mark Cave-Ayland, 2015/03/02
- [Qemu-devel] [PATCH 9/9] sun4u: switch m48t59 NVRAM to MMIO access,
Mark Cave-Ayland <=