mirror of
https://github.com/qemu/qemu.git
synced 2024-11-25 11:53:39 +08:00
PPC: Add timer handler for newworld mac-io
Mac OS X accesses fancy timer registers inside of the mac-io on bootup. These really should be ticking at the mac-io bus frequency, but I don't see anyone upset when we just make them as fast as we want to. With this patch on top of my previous patch queue and latest OpenBIOS I am able to boot Mac OS X 10.4 with -M mac99. Signed-off-by: Alexander Graf <agraf@suse.de>
This commit is contained in:
parent
80fc95d8bd
commit
a0f9fdfd98
@ -234,11 +234,39 @@ static void macio_oldworld_init(Object *obj)
|
||||
}
|
||||
}
|
||||
|
||||
static void timer_write(void *opaque, hwaddr addr, uint64_t value,
|
||||
unsigned size)
|
||||
{
|
||||
}
|
||||
|
||||
static uint64_t timer_read(void *opaque, hwaddr addr, unsigned size)
|
||||
{
|
||||
uint32_t value = 0;
|
||||
|
||||
switch (addr) {
|
||||
case 0x38:
|
||||
value = qemu_get_clock_ns(vm_clock);
|
||||
break;
|
||||
case 0x3c:
|
||||
value = qemu_get_clock_ns(vm_clock) >> 32;
|
||||
break;
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
|
||||
static const MemoryRegionOps timer_ops = {
|
||||
.read = timer_read,
|
||||
.write = timer_write,
|
||||
.endianness = DEVICE_NATIVE_ENDIAN,
|
||||
};
|
||||
|
||||
static int macio_newworld_initfn(PCIDevice *d)
|
||||
{
|
||||
MacIOState *s = MACIO(d);
|
||||
NewWorldMacIOState *ns = NEWWORLD_MACIO(d);
|
||||
SysBusDevice *sysbus_dev;
|
||||
MemoryRegion *timer_memory = g_new(MemoryRegion, 1);
|
||||
int i;
|
||||
int cur_irq = 0;
|
||||
int ret = macio_common_initfn(d);
|
||||
@ -265,6 +293,11 @@ static int macio_newworld_initfn(PCIDevice *d)
|
||||
}
|
||||
}
|
||||
|
||||
/* Timer */
|
||||
memory_region_init_io(timer_memory, OBJECT(s), &timer_ops, NULL, "timer",
|
||||
0x1000);
|
||||
memory_region_add_subregion(&s->bar, 0x15000, timer_memory);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user