|
@@ -216,14 +216,25 @@ static int goldfish_rtc_post_load(void *opaque, int version_id)
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static const MemoryRegionOps goldfish_rtc_ops = {
|
|
|
- .read = goldfish_rtc_read,
|
|
|
- .write = goldfish_rtc_write,
|
|
|
- .endianness = DEVICE_NATIVE_ENDIAN,
|
|
|
- .valid = {
|
|
|
- .min_access_size = 4,
|
|
|
- .max_access_size = 4
|
|
|
- }
|
|
|
+static const MemoryRegionOps goldfish_rtc_ops[2] = {
|
|
|
+ [false] = {
|
|
|
+ .read = goldfish_rtc_read,
|
|
|
+ .write = goldfish_rtc_write,
|
|
|
+ .endianness = DEVICE_LITTLE_ENDIAN,
|
|
|
+ .valid = {
|
|
|
+ .min_access_size = 4,
|
|
|
+ .max_access_size = 4
|
|
|
+ }
|
|
|
+ },
|
|
|
+ [true] = {
|
|
|
+ .read = goldfish_rtc_read,
|
|
|
+ .write = goldfish_rtc_write,
|
|
|
+ .endianness = DEVICE_BIG_ENDIAN,
|
|
|
+ .valid = {
|
|
|
+ .min_access_size = 4,
|
|
|
+ .max_access_size = 4
|
|
|
+ }
|
|
|
+ },
|
|
|
};
|
|
|
|
|
|
static const VMStateDescription goldfish_rtc_vmstate = {
|
|
@@ -265,7 +276,8 @@ static void goldfish_rtc_realize(DeviceState *d, Error **errp)
|
|
|
SysBusDevice *dev = SYS_BUS_DEVICE(d);
|
|
|
GoldfishRTCState *s = GOLDFISH_RTC(d);
|
|
|
|
|
|
- memory_region_init_io(&s->iomem, OBJECT(s), &goldfish_rtc_ops, s,
|
|
|
+ memory_region_init_io(&s->iomem, OBJECT(s),
|
|
|
+ &goldfish_rtc_ops[s->big_endian], s,
|
|
|
"goldfish_rtc", 0x24);
|
|
|
sysbus_init_mmio(dev, &s->iomem);
|
|
|
|
|
@@ -274,10 +286,17 @@ static void goldfish_rtc_realize(DeviceState *d, Error **errp)
|
|
|
s->timer = timer_new_ns(rtc_clock, goldfish_rtc_interrupt, s);
|
|
|
}
|
|
|
|
|
|
+static Property goldfish_rtc_properties[] = {
|
|
|
+ DEFINE_PROP_BOOL("big-endian", GoldfishRTCState, big_endian,
|
|
|
+ false),
|
|
|
+ DEFINE_PROP_END_OF_LIST(),
|
|
|
+};
|
|
|
+
|
|
|
static void goldfish_rtc_class_init(ObjectClass *klass, void *data)
|
|
|
{
|
|
|
DeviceClass *dc = DEVICE_CLASS(klass);
|
|
|
|
|
|
+ device_class_set_props(dc, goldfish_rtc_properties);
|
|
|
dc->realize = goldfish_rtc_realize;
|
|
|
dc->reset = goldfish_rtc_reset;
|
|
|
dc->vmsd = &goldfish_rtc_vmstate;
|