From 72cd63f817d5405f7f7339e3d389cee73c189b33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Mon, 2 Mar 2015 22:23:27 +0000 Subject: [PATCH 1/9] m48t59: move ISA ports/memory regions registration to QOM constructor MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit -device m48t59_isa can now be used to create a fully functional nvram. Signed-off-by: Hervé Poussineau CC: Andreas Färber Signed-off-by: Mark Cave-Ayland --- hw/timer/m48t59.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/hw/timer/m48t59.c b/hw/timer/m48t59.c index 31509d5c28..967a31319f 100644 --- a/hw/timer/m48t59.c +++ b/hw/timer/m48t59.c @@ -658,10 +658,9 @@ M48t59State *m48t59_init(qemu_irq IRQ, hwaddr mem_base, d = SYSBUS_M48T59(dev); state = &d->state; sysbus_connect_irq(s, 0, IRQ); - memory_region_init_io(&d->io, OBJECT(d), &m48t59_io_ops, state, - "m48t59", 4); if (io_base != 0) { - memory_region_add_subregion(get_system_io(), io_base, &d->io); + memory_region_add_subregion(get_system_io(), io_base, + sysbus_mmio_get_region(dev, 1)); } if (mem_base != 0) { sysbus_mmio_map(s, 0, mem_base); @@ -687,11 +686,6 @@ M48t59State *m48t59_init_isa(ISABus *bus, uint32_t io_base, uint16_t size, d = ISA_M48T59(isadev); s = &d->state; - memory_region_init_io(&d->io, OBJECT(d), &m48t59_io_ops, s, "m48t59", 4); - if (io_base != 0) { - isa_register_ioport(isadev, &d->io, io_base); - } - return s; } @@ -715,19 +709,28 @@ static void m48t59_isa_realize(DeviceState *dev, Error **errp) isa_init_irq(isadev, &s->IRQ, 8); m48t59_realize_common(s, errp); + memory_region_init_io(&d->io, OBJECT(dev), &m48t59_io_ops, s, "m48t59", 4); + if (s->io_base != 0) { + isa_register_ioport(isadev, &d->io, s->io_base); + } + + return 0; } static int m48t59_init1(SysBusDevice *dev) { M48t59SysBusState *d = SYSBUS_M48T59(dev); + Object *o = OBJECT(dev); M48t59State *s = &d->state; Error *err = NULL; sysbus_init_irq(dev, &s->IRQ); - memory_region_init_io(&s->iomem, OBJECT(d), &nvram_ops, s, - "m48t59.nvram", s->size); + memory_region_init_io(&s->iomem, o, &nvram_ops, s, "m48t59.nvram", + s->size); + memory_region_init_io(&d->io, o, &m48t59_io_ops, s, "m48t59", 4); sysbus_init_mmio(dev, &s->iomem); + sysbus_init_mmio(dev, &d->io); m48t59_realize_common(s, &err); if (err != NULL) { error_free(err); @@ -751,8 +754,6 @@ static void m48t59_isa_class_init(ObjectClass *klass, void *data) dc->realize = m48t59_isa_realize; dc->reset = m48t59_reset_isa; dc->props = m48t59_isa_properties; - /* Reason: needs to be wired up by m48t59_init_isa() */ - dc->cannot_instantiate_with_device_add_yet = true; } static const TypeInfo m48t59_isa_info = { From 051ddccde29924cb200df3bca3db8c1a2aa10974 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Mon, 2 Mar 2015 22:23:27 +0000 Subject: [PATCH 2/9] m48t59: register a QOM type for each nvram type we support MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit As m48t59 devices can only be created with m48t59_init() or m48t59_init_isa(), we know exactly which nvram types are required. Register only those three types. Remove .model and .size properties as they can be infered from nvram name. Rename type to 'isa-*' (and 'sysbus-*') to do like other devices ISA devices (isa-ide, isa-parallel, isa-serial...) Signed-off-by: Hervé Poussineau CC: Andreas Färber Signed-off-by: Mark Cave-Ayland --- hw/timer/m48t59.c | 242 ++++++++++++++++++++++++++++++++-------------- 1 file changed, 167 insertions(+), 75 deletions(-) diff --git a/hw/timer/m48t59.c b/hw/timer/m48t59.c index 967a31319f..c46b63c5a9 100644 --- a/hw/timer/m48t59.c +++ b/hw/timer/m48t59.c @@ -2,6 +2,7 @@ * QEMU M48T59 and M48T08 NVRAM emulation for PPC PREP and Sparc platforms * * Copyright (c) 2003-2005, 2007 Jocelyn Mayer + * Copyright (c) 2013 Hervé Poussineau * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal @@ -37,12 +38,35 @@ #define NVRAM_PRINTF(fmt, ...) do { } while (0) #endif +#define TYPE_M48TXX_SYS_BUS "sysbus-m48txx" +#define M48TXX_SYS_BUS_GET_CLASS(obj) \ + OBJECT_GET_CLASS(M48txxSysBusDeviceClass, (obj), TYPE_M48TXX_SYS_BUS) +#define M48TXX_SYS_BUS_CLASS(klass) \ + OBJECT_CLASS_CHECK(M48txxSysBusDeviceClass, (klass), TYPE_M48TXX_SYS_BUS) +#define M48TXX_SYS_BUS(obj) \ + OBJECT_CHECK(M48txxSysBusState, (obj), TYPE_M48TXX_SYS_BUS) + +#define TYPE_M48TXX_ISA "isa-m48txx" +#define M48TXX_ISA_GET_CLASS(obj) \ + OBJECT_GET_CLASS(M48txxISADeviceClass, (obj), TYPE_M48TXX_ISA) +#define M48TXX_ISA_CLASS(klass) \ + OBJECT_CLASS_CHECK(M48txxISADeviceClass, (klass), TYPE_M48TXX_ISA) +#define M48TXX_ISA(obj) \ + OBJECT_CHECK(M48txxISAState, (obj), TYPE_M48TXX_ISA) + /* * The M48T02, M48T08 and M48T59 chips are very similar. The newer '59 has * alarm and a watchdog timer and related control registers. In the * PPC platform there is also a nvram lock function. */ +typedef struct M48txxInfo { + const char *isa_name; + const char *sysbus_name; + uint32_t model; /* 2 = m48t02, 8 = m48t08, 59 = m48t59 */ + uint32_t size; +} M48txxInfo; + /* * Chipset docs: * http://www.st.com/stonline/products/literature/ds/2410/m48t02.pdf @@ -54,7 +78,6 @@ struct M48t59State { /* Hardware parameters */ qemu_irq IRQ; MemoryRegion iomem; - uint32_t io_base; uint32_t size; /* RTC management */ time_t time_offset; @@ -72,26 +95,45 @@ struct M48t59State { uint8_t lock; }; -#define TYPE_ISA_M48T59 "m48t59_isa" -#define ISA_M48T59(obj) \ - OBJECT_CHECK(M48t59ISAState, (obj), TYPE_ISA_M48T59) - -typedef struct M48t59ISAState { +typedef struct M48txxISAState { ISADevice parent_obj; - M48t59State state; + uint32_t io_base; MemoryRegion io; -} M48t59ISAState; +} M48txxISAState; -#define SYSBUS_M48T59(obj) \ - OBJECT_CHECK(M48t59SysBusState, (obj), TYPE_SYSBUS_M48T59) +typedef struct M48txxISADeviceClass { + ISADeviceClass parent_class; + M48txxInfo info; +} M48txxISADeviceClass; -typedef struct M48t59SysBusState { +typedef struct M48txxSysBusState { SysBusDevice parent_obj; - M48t59State state; MemoryRegion io; -} M48t59SysBusState; +} M48txxSysBusState; + +typedef struct M48txxSysBusDeviceClass { + SysBusDeviceClass parent_class; + M48txxInfo info; +} M48txxSysBusDeviceClass; + +static M48txxInfo m48txx_info[] = { + { + .sysbus_name = "sysbus-m48t02", + .model = 2, + .size = 0x800, + },{ + .sysbus_name = "sysbus-m48t08", + .model = 8, + .size = 0x2000, + },{ + .isa_name = "isa-m48t59", + .model = 59, + .size = 0x2000, + } +}; + /* Fake timer functions */ @@ -616,7 +658,7 @@ static void m48t59_reset_common(M48t59State *NVRAM) static void m48t59_reset_isa(DeviceState *d) { - M48t59ISAState *isa = ISA_M48T59(d); + M48txxISAState *isa = M48TXX_ISA(d); M48t59State *NVRAM = &isa->state; m48t59_reset_common(NVRAM); @@ -624,7 +666,7 @@ static void m48t59_reset_isa(DeviceState *d) static void m48t59_reset_sysbus(DeviceState *d) { - M48t59SysBusState *sys = SYSBUS_M48T59(d); + M48txxSysBusState *sys = M48TXX_SYS_BUS(d); M48t59State *NVRAM = &sys->state; m48t59_reset_common(NVRAM); @@ -646,47 +688,59 @@ M48t59State *m48t59_init(qemu_irq IRQ, hwaddr mem_base, { DeviceState *dev; SysBusDevice *s; - M48t59SysBusState *d; + M48txxSysBusState *d; M48t59State *state; + int i; - dev = qdev_create(NULL, TYPE_SYSBUS_M48T59); - qdev_prop_set_uint32(dev, "model", model); - qdev_prop_set_uint32(dev, "size", size); - qdev_prop_set_uint32(dev, "io_base", io_base); - qdev_init_nofail(dev); - s = SYS_BUS_DEVICE(dev); - d = SYSBUS_M48T59(dev); - state = &d->state; - sysbus_connect_irq(s, 0, IRQ); - if (io_base != 0) { - memory_region_add_subregion(get_system_io(), io_base, - sysbus_mmio_get_region(dev, 1)); - } - if (mem_base != 0) { - sysbus_mmio_map(s, 0, mem_base); + for (i = 0; i < ARRAY_SIZE(m48txx_info); i++) { + if (!m48txx_info[i].sysbus_name || + m48txx_info[i].size != size || + m48txx_info[i].model != model) { + continue; + } + + dev = qdev_create(NULL, m48txx_info[i].sysbus_name); + qdev_init_nofail(dev); + s = SYS_BUS_DEVICE(dev); + d = M48TXX_SYS_BUS(s); + state = &d->state; + sysbus_connect_irq(s, 0, IRQ); + if (io_base != 0) { + memory_region_add_subregion(get_system_io(), io_base, + sysbus_mmio_get_region(s, 1)); + } + if (mem_base != 0) { + sysbus_mmio_map(s, 0, mem_base); + } + + return state; } - return state; + assert(false); + return NULL; } M48t59State *m48t59_init_isa(ISABus *bus, uint32_t io_base, uint16_t size, int model) { - M48t59ISAState *d; - ISADevice *isadev; DeviceState *dev; - M48t59State *s; + int i; - isadev = isa_create(bus, TYPE_ISA_M48T59); - dev = DEVICE(isadev); - qdev_prop_set_uint32(dev, "model", model); - qdev_prop_set_uint32(dev, "size", size); - qdev_prop_set_uint32(dev, "io_base", io_base); - qdev_init_nofail(dev); - d = ISA_M48T59(isadev); - s = &d->state; + for (i = 0; i < ARRAY_SIZE(m48txx_info); i++) { + if (!m48txx_info[i].isa_name || + m48txx_info[i].size != size || + m48txx_info[i].model != model) { + continue; + } - return s; + dev = DEVICE(isa_create(bus, m48txx_info[i].isa_name)); + qdev_prop_set_uint32(dev, "iobase", io_base); + qdev_init_nofail(dev); + return &M48TXX_ISA(dev)->state; + } + + assert(false); + return NULL; } static void m48t59_realize_common(M48t59State *s, Error **errp) @@ -703,27 +757,31 @@ static void m48t59_realize_common(M48t59State *s, Error **errp) static void m48t59_isa_realize(DeviceState *dev, Error **errp) { + M48txxISADeviceClass *u = M48TXX_ISA_GET_CLASS(dev); ISADevice *isadev = ISA_DEVICE(dev); - M48t59ISAState *d = ISA_M48T59(dev); + M48txxISAState *d = M48TXX_ISA(dev); M48t59State *s = &d->state; + s->model = u->info.model; + s->size = u->info.size; isa_init_irq(isadev, &s->IRQ, 8); m48t59_realize_common(s, errp); memory_region_init_io(&d->io, OBJECT(dev), &m48t59_io_ops, s, "m48t59", 4); - if (s->io_base != 0) { - isa_register_ioport(isadev, &d->io, s->io_base); + if (d->io_base != 0) { + isa_register_ioport(isadev, &d->io, d->io_base); } - - return 0; } static int m48t59_init1(SysBusDevice *dev) { - M48t59SysBusState *d = SYSBUS_M48T59(dev); + M48txxSysBusDeviceClass *u = M48TXX_SYS_BUS_GET_CLASS(dev); + M48txxSysBusState *d = M48TXX_SYS_BUS(dev); Object *o = OBJECT(dev); M48t59State *s = &d->state; Error *err = NULL; + s->model = u->info.model; + s->size = u->info.size; sysbus_init_irq(dev, &s->IRQ); memory_region_init_io(&s->iomem, o, &nvram_ops, s, "m48t59.nvram", @@ -741,13 +799,11 @@ static int m48t59_init1(SysBusDevice *dev) } static Property m48t59_isa_properties[] = { - DEFINE_PROP_UINT32("size", M48t59ISAState, state.size, -1), - DEFINE_PROP_UINT32("model", M48t59ISAState, state.model, -1), - DEFINE_PROP_UINT32("io_base", M48t59ISAState, state.io_base, 0), + DEFINE_PROP_UINT32("iobase", M48txxISAState, io_base, 0x74), DEFINE_PROP_END_OF_LIST(), }; -static void m48t59_isa_class_init(ObjectClass *klass, void *data) +static void m48txx_isa_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); @@ -756,41 +812,77 @@ static void m48t59_isa_class_init(ObjectClass *klass, void *data) dc->props = m48t59_isa_properties; } -static const TypeInfo m48t59_isa_info = { - .name = TYPE_ISA_M48T59, - .parent = TYPE_ISA_DEVICE, - .instance_size = sizeof(M48t59ISAState), - .class_init = m48t59_isa_class_init, -}; +static void m48txx_isa_concrete_class_init(ObjectClass *klass, void *data) +{ + M48txxISADeviceClass *u = M48TXX_ISA_CLASS(klass); + M48txxInfo *info = data; -static Property m48t59_properties[] = { - DEFINE_PROP_UINT32("size", M48t59SysBusState, state.size, -1), - DEFINE_PROP_UINT32("model", M48t59SysBusState, state.model, -1), - DEFINE_PROP_UINT32("io_base", M48t59SysBusState, state.io_base, 0), - DEFINE_PROP_END_OF_LIST(), -}; + u->info = *info; +} -static void m48t59_class_init(ObjectClass *klass, void *data) +static void m48txx_sysbus_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); k->init = m48t59_init1; dc->reset = m48t59_reset_sysbus; - dc->props = m48t59_properties; } -static const TypeInfo m48t59_info = { - .name = TYPE_SYSBUS_M48T59, - .parent = TYPE_SYS_BUS_DEVICE, - .instance_size = sizeof(M48t59SysBusState), - .class_init = m48t59_class_init, +static void m48txx_sysbus_concrete_class_init(ObjectClass *klass, void *data) +{ + M48txxSysBusDeviceClass *u = M48TXX_SYS_BUS_CLASS(klass); + M48txxInfo *info = data; + + u->info = *info; +} + +static const TypeInfo m48txx_sysbus_type_info = { + .name = TYPE_M48TXX_SYS_BUS, + .parent = TYPE_SYS_BUS_DEVICE, + .instance_size = sizeof(M48txxSysBusState), + .abstract = true, + .class_init = m48txx_sysbus_class_init, +}; + +static const TypeInfo m48txx_isa_type_info = { + .name = TYPE_M48TXX_ISA, + .parent = TYPE_ISA_DEVICE, + .instance_size = sizeof(M48txxISAState), + .abstract = true, + .class_init = m48txx_isa_class_init, }; static void m48t59_register_types(void) { - type_register_static(&m48t59_info); - type_register_static(&m48t59_isa_info); + TypeInfo sysbus_type_info = { + .parent = TYPE_M48TXX_SYS_BUS, + .class_size = sizeof(M48txxSysBusDeviceClass), + .class_init = m48txx_sysbus_concrete_class_init, + }; + TypeInfo isa_type_info = { + .parent = TYPE_M48TXX_ISA, + .class_size = sizeof(M48txxISADeviceClass), + .class_init = m48txx_isa_concrete_class_init, + }; + int i; + + type_register_static(&m48txx_sysbus_type_info); + type_register_static(&m48txx_isa_type_info); + + for (i = 0; i < ARRAY_SIZE(m48txx_info); i++) { + if (m48txx_info[i].sysbus_name) { + sysbus_type_info.name = m48txx_info[i].sysbus_name; + sysbus_type_info.class_data = &m48txx_info[i]; + type_register(&sysbus_type_info); + } + + if (m48txx_info[i].isa_name) { + isa_type_info.name = m48txx_info[i].isa_name; + isa_type_info.class_data = &m48txx_info[i]; + type_register(&isa_type_info); + } + } } type_init(m48t59_register_types) From 43745328881e839124d3d589644732cb65052819 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Mon, 2 Mar 2015 22:23:27 +0000 Subject: [PATCH 3/9] m48t59: add a Nvram interface MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Hervé Poussineau CC: Andreas Färber Signed-off-by: Mark Cave-Ayland --- hw/timer/m48t59.c | 59 +++++++++++++++++++++++++++++++++++++++ include/hw/timer/m48t59.h | 24 ++++++++++++++++ 2 files changed, 83 insertions(+) diff --git a/hw/timer/m48t59.c b/hw/timer/m48t59.c index c46b63c5a9..c5e74cec2f 100644 --- a/hw/timer/m48t59.c +++ b/hw/timer/m48t59.c @@ -798,6 +798,24 @@ static int m48t59_init1(SysBusDevice *dev) return 0; } +static uint32_t m48txx_isa_read(Nvram *obj, uint32_t addr) +{ + M48txxISAState *d = M48TXX_ISA(obj); + return m48t59_read(&d->state, addr); +} + +static void m48txx_isa_write(Nvram *obj, uint32_t addr, uint32_t val) +{ + M48txxISAState *d = M48TXX_ISA(obj); + m48t59_write(&d->state, addr, val); +} + +static void m48txx_isa_toggle_lock(Nvram *obj, int lock) +{ + M48txxISAState *d = M48TXX_ISA(obj); + m48t59_toggle_lock(&d->state, lock); +} + static Property m48t59_isa_properties[] = { DEFINE_PROP_UINT32("iobase", M48txxISAState, io_base, 0x74), DEFINE_PROP_END_OF_LIST(), @@ -806,10 +824,14 @@ static Property m48t59_isa_properties[] = { static void m48txx_isa_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); + NvramClass *nc = NVRAM_CLASS(klass); dc->realize = m48t59_isa_realize; dc->reset = m48t59_reset_isa; dc->props = m48t59_isa_properties; + nc->read = m48txx_isa_read; + nc->write = m48txx_isa_write; + nc->toggle_lock = m48txx_isa_toggle_lock; } static void m48txx_isa_concrete_class_init(ObjectClass *klass, void *data) @@ -820,13 +842,35 @@ static void m48txx_isa_concrete_class_init(ObjectClass *klass, void *data) u->info = *info; } +static uint32_t m48txx_sysbus_read(Nvram *obj, uint32_t addr) +{ + M48txxSysBusState *d = M48TXX_SYS_BUS(obj); + return m48t59_read(&d->state, addr); +} + +static void m48txx_sysbus_write(Nvram *obj, uint32_t addr, uint32_t val) +{ + M48txxSysBusState *d = M48TXX_SYS_BUS(obj); + m48t59_write(&d->state, addr, val); +} + +static void m48txx_sysbus_toggle_lock(Nvram *obj, int lock) +{ + M48txxSysBusState *d = M48TXX_SYS_BUS(obj); + m48t59_toggle_lock(&d->state, lock); +} + static void m48txx_sysbus_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); SysBusDeviceClass *k = SYS_BUS_DEVICE_CLASS(klass); + NvramClass *nc = NVRAM_CLASS(klass); k->init = m48t59_init1; dc->reset = m48t59_reset_sysbus; + nc->read = m48txx_sysbus_read; + nc->write = m48txx_sysbus_write; + nc->toggle_lock = m48txx_sysbus_toggle_lock; } static void m48txx_sysbus_concrete_class_init(ObjectClass *klass, void *data) @@ -837,12 +881,22 @@ static void m48txx_sysbus_concrete_class_init(ObjectClass *klass, void *data) u->info = *info; } +static const TypeInfo nvram_info = { + .name = TYPE_NVRAM, + .parent = TYPE_INTERFACE, + .class_size = sizeof(NvramClass), +}; + static const TypeInfo m48txx_sysbus_type_info = { .name = TYPE_M48TXX_SYS_BUS, .parent = TYPE_SYS_BUS_DEVICE, .instance_size = sizeof(M48txxSysBusState), .abstract = true, .class_init = m48txx_sysbus_class_init, + .interfaces = (InterfaceInfo[]) { + { TYPE_NVRAM }, + { } + } }; static const TypeInfo m48txx_isa_type_info = { @@ -851,6 +905,10 @@ static const TypeInfo m48txx_isa_type_info = { .instance_size = sizeof(M48txxISAState), .abstract = true, .class_init = m48txx_isa_class_init, + .interfaces = (InterfaceInfo[]) { + { TYPE_NVRAM }, + { } + } }; static void m48t59_register_types(void) @@ -867,6 +925,7 @@ static void m48t59_register_types(void) }; int i; + type_register_static(&nvram_info); type_register_static(&m48txx_sysbus_type_info); type_register_static(&m48txx_isa_type_info); diff --git a/include/hw/timer/m48t59.h b/include/hw/timer/m48t59.h index 8217522291..ddbbda26af 100644 --- a/include/hw/timer/m48t59.h +++ b/include/hw/timer/m48t59.h @@ -1,6 +1,9 @@ #ifndef NVRAM_H #define NVRAM_H +#include "qemu-common.h" +#include "qom/object.h" + /* NVRAM helpers */ typedef uint32_t (*nvram_read_t)(void *private, uint32_t addr); typedef void (*nvram_write_t)(void *private, uint32_t addr, uint32_t val); @@ -34,4 +37,25 @@ M48t59State *m48t59_init_isa(ISABus *bus, uint32_t io_base, uint16_t size, M48t59State *m48t59_init(qemu_irq IRQ, hwaddr mem_base, uint32_t io_base, uint16_t size, int type); +#define TYPE_NVRAM "nvram" + +#define NVRAM_CLASS(klass) \ + OBJECT_CLASS_CHECK(NvramClass, (klass), TYPE_NVRAM) +#define NVRAM_GET_CLASS(obj) \ + OBJECT_GET_CLASS(NvramClass, (obj), TYPE_NVRAM) +#define NVRAM(obj) \ + INTERFACE_CHECK(Nvram, (obj), TYPE_NVRAM) + +typedef struct Nvram { + Object parent; +} Nvram; + +typedef struct NvramClass { + InterfaceClass parent; + + uint32_t (*read)(Nvram *obj, uint32_t addr); + void (*write)(Nvram *obj, uint32_t addr, uint32_t val); + void (*toggle_lock)(Nvram *obj, int lock); +} NvramClass; + #endif /* !NVRAM_H */ From 3168824682058457344faecdbe7014caa0e8dd6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Herv=C3=A9=20Poussineau?= Date: Mon, 2 Mar 2015 22:23:27 +0000 Subject: [PATCH 4/9] m48t59: let init functions return a Nvram object MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove left-overs from header file. Move some functions only used by PReP to hw/ppc/prep.c Signed-off-by: Hervé Poussineau CC: Andreas Färber Signed-off-by: Mark Cave-Ayland --- hw/ppc/ppc.c | 161 -------------------------------------- hw/ppc/prep.c | 161 +++++++++++++++++++++++++++++++++++--- hw/sparc/sun4m.c | 8 +- hw/sparc64/sun4u.c | 10 ++- hw/timer/m48t59.c | 30 +++---- include/hw/timer/m48t59.h | 38 ++------- 6 files changed, 177 insertions(+), 231 deletions(-) diff --git a/hw/ppc/ppc.c b/hw/ppc/ppc.c index 5ce565d5ec..99db56c8d0 100644 --- a/hw/ppc/ppc.c +++ b/hw/ppc/ppc.c @@ -1318,167 +1318,6 @@ void PPC_debug_write (void *opaque, uint32_t addr, uint32_t val) } } -/*****************************************************************************/ -/* NVRAM helpers */ -static inline uint32_t nvram_read (nvram_t *nvram, uint32_t addr) -{ - return (*nvram->read_fn)(nvram->opaque, addr); -} - -static inline void nvram_write (nvram_t *nvram, uint32_t addr, uint32_t val) -{ - (*nvram->write_fn)(nvram->opaque, addr, val); -} - -static void NVRAM_set_byte(nvram_t *nvram, uint32_t addr, uint8_t value) -{ - nvram_write(nvram, addr, value); -} - -static uint8_t NVRAM_get_byte(nvram_t *nvram, uint32_t addr) -{ - return nvram_read(nvram, addr); -} - -static void NVRAM_set_word(nvram_t *nvram, uint32_t addr, uint16_t value) -{ - nvram_write(nvram, addr, value >> 8); - nvram_write(nvram, addr + 1, value & 0xFF); -} - -static uint16_t NVRAM_get_word(nvram_t *nvram, uint32_t addr) -{ - uint16_t tmp; - - tmp = nvram_read(nvram, addr) << 8; - tmp |= nvram_read(nvram, addr + 1); - - return tmp; -} - -static void NVRAM_set_lword(nvram_t *nvram, uint32_t addr, uint32_t value) -{ - nvram_write(nvram, addr, value >> 24); - nvram_write(nvram, addr + 1, (value >> 16) & 0xFF); - nvram_write(nvram, addr + 2, (value >> 8) & 0xFF); - nvram_write(nvram, addr + 3, value & 0xFF); -} - -uint32_t NVRAM_get_lword (nvram_t *nvram, uint32_t addr) -{ - uint32_t tmp; - - tmp = nvram_read(nvram, addr) << 24; - tmp |= nvram_read(nvram, addr + 1) << 16; - tmp |= nvram_read(nvram, addr + 2) << 8; - tmp |= nvram_read(nvram, addr + 3); - - return tmp; -} - -static void NVRAM_set_string(nvram_t *nvram, uint32_t addr, const char *str, - uint32_t max) -{ - int i; - - for (i = 0; i < max && str[i] != '\0'; i++) { - nvram_write(nvram, addr + i, str[i]); - } - nvram_write(nvram, addr + i, str[i]); - nvram_write(nvram, addr + max - 1, '\0'); -} - -int NVRAM_get_string (nvram_t *nvram, uint8_t *dst, uint16_t addr, int max) -{ - int i; - - memset(dst, 0, max); - for (i = 0; i < max; i++) { - dst[i] = NVRAM_get_byte(nvram, addr + i); - if (dst[i] == '\0') - break; - } - - return i; -} - -static uint16_t NVRAM_crc_update (uint16_t prev, uint16_t value) -{ - uint16_t tmp; - uint16_t pd, pd1, pd2; - - tmp = prev >> 8; - pd = prev ^ value; - pd1 = pd & 0x000F; - pd2 = ((pd >> 4) & 0x000F) ^ pd1; - tmp ^= (pd1 << 3) | (pd1 << 8); - tmp ^= pd2 | (pd2 << 7) | (pd2 << 12); - - return tmp; -} - -static uint16_t NVRAM_compute_crc (nvram_t *nvram, uint32_t start, uint32_t count) -{ - uint32_t i; - uint16_t crc = 0xFFFF; - int odd; - - odd = count & 1; - count &= ~1; - for (i = 0; i != count; i++) { - crc = NVRAM_crc_update(crc, NVRAM_get_word(nvram, start + i)); - } - if (odd) { - crc = NVRAM_crc_update(crc, NVRAM_get_byte(nvram, start + i) << 8); - } - - return crc; -} - -#define CMDLINE_ADDR 0x017ff000 - -int PPC_NVRAM_set_params (nvram_t *nvram, uint16_t NVRAM_size, - const char *arch, - uint32_t RAM_size, int boot_device, - uint32_t kernel_image, uint32_t kernel_size, - const char *cmdline, - uint32_t initrd_image, uint32_t initrd_size, - uint32_t NVRAM_image, - int width, int height, int depth) -{ - uint16_t crc; - - /* Set parameters for Open Hack'Ware BIOS */ - NVRAM_set_string(nvram, 0x00, "QEMU_BIOS", 16); - NVRAM_set_lword(nvram, 0x10, 0x00000002); /* structure v2 */ - NVRAM_set_word(nvram, 0x14, NVRAM_size); - NVRAM_set_string(nvram, 0x20, arch, 16); - NVRAM_set_lword(nvram, 0x30, RAM_size); - NVRAM_set_byte(nvram, 0x34, boot_device); - NVRAM_set_lword(nvram, 0x38, kernel_image); - NVRAM_set_lword(nvram, 0x3C, kernel_size); - if (cmdline) { - /* XXX: put the cmdline in NVRAM too ? */ - pstrcpy_targphys("cmdline", CMDLINE_ADDR, RAM_size - CMDLINE_ADDR, cmdline); - NVRAM_set_lword(nvram, 0x40, CMDLINE_ADDR); - NVRAM_set_lword(nvram, 0x44, strlen(cmdline)); - } else { - NVRAM_set_lword(nvram, 0x40, 0); - NVRAM_set_lword(nvram, 0x44, 0); - } - NVRAM_set_lword(nvram, 0x48, initrd_image); - NVRAM_set_lword(nvram, 0x4C, initrd_size); - NVRAM_set_lword(nvram, 0x50, NVRAM_image); - - NVRAM_set_word(nvram, 0x54, width); - NVRAM_set_word(nvram, 0x56, height); - NVRAM_set_word(nvram, 0x58, depth); - crc = NVRAM_compute_crc(nvram, 0x00, 0xF8); - NVRAM_set_word(nvram, 0xFC, crc); - - return 0; -} - /* CPU device-tree ID helpers */ int ppc_get_vcpu_dt_id(PowerPCCPU *cpu) { diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index 15df7f3dae..9290846bd6 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -181,7 +181,7 @@ static const MemoryRegionOps PPC_XCSR_ops = { /* Fake super-io ports for PREP platform (Intel 82378ZB) */ typedef struct sysctrl_t { qemu_irq reset_irq; - M48t59State *nvram; + Nvram *nvram; uint8_t state; uint8_t syscontrol; int contiguous_map; @@ -235,13 +235,17 @@ static void PREP_io_800_writeb (void *opaque, uint32_t addr, uint32_t val) break; case 0x0810: /* Password protect 1 register */ - if (sysctrl->nvram != NULL) - m48t59_toggle_lock(sysctrl->nvram, 1); + if (sysctrl->nvram != NULL) { + NvramClass *k = NVRAM_GET_CLASS(sysctrl->nvram); + (k->toggle_lock)(sysctrl->nvram, 1); + } break; case 0x0812: /* Password protect 2 register */ - if (sysctrl->nvram != NULL) - m48t59_toggle_lock(sysctrl->nvram, 2); + if (sysctrl->nvram != NULL) { + NvramClass *k = NVRAM_GET_CLASS(sysctrl->nvram); + (k->toggle_lock)(sysctrl->nvram, 2); + } break; case 0x0814: /* L2 invalidate register */ @@ -360,6 +364,144 @@ static const MemoryRegionPortio prep_portio_list[] = { static PortioList prep_port_list; +/*****************************************************************************/ +/* NVRAM helpers */ +static inline uint32_t nvram_read(Nvram *nvram, uint32_t addr) +{ + NvramClass *k = NVRAM_GET_CLASS(sysctrl->nvram); + return (k->read)(nvram, addr); +} + +static inline void nvram_write(Nvram *nvram, uint32_t addr, uint32_t val) +{ + NvramClass *k = NVRAM_GET_CLASS(sysctrl->nvram); + (k->write)(nvram, addr, val); +} + +static void NVRAM_set_byte(Nvram *nvram, uint32_t addr, uint8_t value) +{ + nvram_write(nvram, addr, value); +} + +static uint8_t NVRAM_get_byte(Nvram *nvram, uint32_t addr) +{ + return nvram_read(nvram, addr); +} + +static void NVRAM_set_word(Nvram *nvram, uint32_t addr, uint16_t value) +{ + nvram_write(nvram, addr, value >> 8); + nvram_write(nvram, addr + 1, value & 0xFF); +} + +static uint16_t NVRAM_get_word(Nvram *nvram, uint32_t addr) +{ + uint16_t tmp; + + tmp = nvram_read(nvram, addr) << 8; + tmp |= nvram_read(nvram, addr + 1); + + return tmp; +} + +static void NVRAM_set_lword(Nvram *nvram, uint32_t addr, uint32_t value) +{ + nvram_write(nvram, addr, value >> 24); + nvram_write(nvram, addr + 1, (value >> 16) & 0xFF); + nvram_write(nvram, addr + 2, (value >> 8) & 0xFF); + nvram_write(nvram, addr + 3, value & 0xFF); +} + +static void NVRAM_set_string(Nvram *nvram, uint32_t addr, const char *str, + uint32_t max) +{ + int i; + + for (i = 0; i < max && str[i] != '\0'; i++) { + nvram_write(nvram, addr + i, str[i]); + } + nvram_write(nvram, addr + i, str[i]); + nvram_write(nvram, addr + max - 1, '\0'); +} + +static uint16_t NVRAM_crc_update (uint16_t prev, uint16_t value) +{ + uint16_t tmp; + uint16_t pd, pd1, pd2; + + tmp = prev >> 8; + pd = prev ^ value; + pd1 = pd & 0x000F; + pd2 = ((pd >> 4) & 0x000F) ^ pd1; + tmp ^= (pd1 << 3) | (pd1 << 8); + tmp ^= pd2 | (pd2 << 7) | (pd2 << 12); + + return tmp; +} + +static uint16_t NVRAM_compute_crc (Nvram *nvram, uint32_t start, uint32_t count) +{ + uint32_t i; + uint16_t crc = 0xFFFF; + int odd; + + odd = count & 1; + count &= ~1; + for (i = 0; i != count; i++) { + crc = NVRAM_crc_update(crc, NVRAM_get_word(nvram, start + i)); + } + if (odd) { + crc = NVRAM_crc_update(crc, NVRAM_get_byte(nvram, start + i) << 8); + } + + return crc; +} + +#define CMDLINE_ADDR 0x017ff000 + +static int PPC_NVRAM_set_params (Nvram *nvram, uint16_t NVRAM_size, + const char *arch, + uint32_t RAM_size, int boot_device, + uint32_t kernel_image, uint32_t kernel_size, + const char *cmdline, + uint32_t initrd_image, uint32_t initrd_size, + uint32_t NVRAM_image, + int width, int height, int depth) +{ + uint16_t crc; + + /* Set parameters for Open Hack'Ware BIOS */ + NVRAM_set_string(nvram, 0x00, "QEMU_BIOS", 16); + NVRAM_set_lword(nvram, 0x10, 0x00000002); /* structure v2 */ + NVRAM_set_word(nvram, 0x14, NVRAM_size); + NVRAM_set_string(nvram, 0x20, arch, 16); + NVRAM_set_lword(nvram, 0x30, RAM_size); + NVRAM_set_byte(nvram, 0x34, boot_device); + NVRAM_set_lword(nvram, 0x38, kernel_image); + NVRAM_set_lword(nvram, 0x3C, kernel_size); + if (cmdline) { + /* XXX: put the cmdline in NVRAM too ? */ + pstrcpy_targphys("cmdline", CMDLINE_ADDR, RAM_size - CMDLINE_ADDR, + cmdline); + NVRAM_set_lword(nvram, 0x40, CMDLINE_ADDR); + NVRAM_set_lword(nvram, 0x44, strlen(cmdline)); + } else { + NVRAM_set_lword(nvram, 0x40, 0); + NVRAM_set_lword(nvram, 0x44, 0); + } + NVRAM_set_lword(nvram, 0x48, initrd_image); + NVRAM_set_lword(nvram, 0x4C, initrd_size); + NVRAM_set_lword(nvram, 0x50, NVRAM_image); + + NVRAM_set_word(nvram, 0x54, width); + NVRAM_set_word(nvram, 0x56, height); + NVRAM_set_word(nvram, 0x58, depth); + crc = NVRAM_compute_crc(nvram, 0x00, 0xF8); + NVRAM_set_word(nvram, 0xFC, crc); + + return 0; +} + /* PowerPC PREP hardware initialisation */ static void ppc_prep_init(MachineState *machine) { @@ -372,8 +514,7 @@ static void ppc_prep_init(MachineState *machine) MemoryRegion *sysmem = get_system_memory(); PowerPCCPU *cpu = NULL; CPUPPCState *env = NULL; - nvram_t nvram; - M48t59State *m48t59; + Nvram *m48t59; #if 0 MemoryRegion *xcsr = g_new(MemoryRegion, 1); #endif @@ -549,10 +690,8 @@ static void ppc_prep_init(MachineState *machine) sysctrl->nvram = m48t59; /* Initialise NVRAM */ - nvram.opaque = m48t59; - nvram.read_fn = &m48t59_read; - nvram.write_fn = &m48t59_write; - PPC_NVRAM_set_params(&nvram, NVRAM_SIZE, "PREP", ram_size, ppc_boot_device, + PPC_NVRAM_set_params(m48t59, NVRAM_SIZE, "PREP", ram_size, + ppc_boot_device, kernel_base, kernel_size, kernel_cmdline, initrd_base, initrd_size, diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index 09afccf860..d391f8e8a5 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -127,7 +127,7 @@ static void fw_cfg_boot_set(void *opaque, const char *boot_device, fw_cfg_add_i16(opaque, FW_CFG_BOOT_DEVICE, boot_device[0]); } -static void nvram_init(M48t59State *nvram, uint8_t *macaddr, +static void nvram_init(Nvram *nvram, uint8_t *macaddr, const char *cmdline, const char *boot_devices, ram_addr_t RAM_size, uint32_t kernel_size, int width, int height, int depth, @@ -137,6 +137,7 @@ static void nvram_init(M48t59State *nvram, uint8_t *macaddr, uint32_t start, end; uint8_t image[0x1ff0]; struct OpenBIOS_nvpart_v1 *part_header; + NvramClass *k = NVRAM_GET_CLASS(nvram); memset(image, '\0', sizeof(image)); @@ -170,8 +171,9 @@ static void nvram_init(M48t59State *nvram, uint8_t *macaddr, Sun_init_header((struct Sun_nvram *)&image[0x1fd8], macaddr, nvram_machine_id); - for (i = 0; i < sizeof(image); i++) - m48t59_write(nvram, i, image[i]); + for (i = 0; i < sizeof(image); i++) { + (k->write)(nvram, i, image[i]); + } } static DeviceState *slavio_intctl; diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c index b310588ff7..9873e399d2 100644 --- a/hw/sparc64/sun4u.c +++ b/hw/sparc64/sun4u.c @@ -130,7 +130,7 @@ static void fw_cfg_boot_set(void *opaque, const char *boot_device, fw_cfg_add_i16(opaque, FW_CFG_BOOT_DEVICE, boot_device[0]); } -static int sun4u_NVRAM_set_params(M48t59State *nvram, uint16_t NVRAM_size, +static int sun4u_NVRAM_set_params(Nvram *nvram, uint16_t NVRAM_size, const char *arch, ram_addr_t RAM_size, const char *boot_devices, uint32_t kernel_image, uint32_t kernel_size, @@ -144,6 +144,7 @@ static int sun4u_NVRAM_set_params(M48t59State *nvram, uint16_t NVRAM_size, uint32_t start, end; uint8_t image[0x1ff0]; struct OpenBIOS_nvpart_v1 *part_header; + NvramClass *k = NVRAM_GET_CLASS(nvram); memset(image, '\0', sizeof(image)); @@ -176,8 +177,9 @@ static int sun4u_NVRAM_set_params(M48t59State *nvram, uint16_t NVRAM_size, Sun_init_header((struct Sun_nvram *)&image[0x1fd8], macaddr, 0x80); - for (i = 0; i < sizeof(image); i++) - m48t59_write(nvram, i, image[i]); + for (i = 0; i < sizeof(image); i++) { + (k->write)(nvram, i, image[i]); + } return 0; } @@ -818,7 +820,7 @@ static void sun4uv_init(MemoryRegion *address_space_mem, const struct hwdef *hwdef) { SPARCCPU *cpu; - M48t59State *nvram; + Nvram *nvram; unsigned int i; uint64_t initrd_addr, initrd_size, kernel_addr, kernel_size, kernel_entry; PCIBus *pci_bus, *pci_bus2, *pci_bus3; diff --git a/hw/timer/m48t59.c b/hw/timer/m48t59.c index c5e74cec2f..08f0d57d7e 100644 --- a/hw/timer/m48t59.c +++ b/hw/timer/m48t59.c @@ -74,7 +74,7 @@ typedef struct M48txxInfo { * http://www.st.com/stonline/products/literature/od/7001/m48t59y.pdf */ -struct M48t59State { +typedef struct M48t59State { /* Hardware parameters */ qemu_irq IRQ; MemoryRegion iomem; @@ -93,7 +93,7 @@ struct M48t59State { /* NVRAM storage */ uint16_t addr; uint8_t lock; -}; +} M48t59State; typedef struct M48txxISAState { ISADevice parent_obj; @@ -240,9 +240,8 @@ static void set_up_watchdog(M48t59State *NVRAM, uint8_t value) } /* Direct access to NVRAM */ -void m48t59_write (void *opaque, uint32_t addr, uint32_t val) +static void m48t59_write(M48t59State *NVRAM, uint32_t addr, uint32_t val) { - M48t59State *NVRAM = opaque; struct tm tm; int tmp; @@ -410,9 +409,8 @@ void m48t59_write (void *opaque, uint32_t addr, uint32_t val) } } -uint32_t m48t59_read (void *opaque, uint32_t addr) +static uint32_t m48t59_read(M48t59State *NVRAM, uint32_t addr) { - M48t59State *NVRAM = opaque; struct tm tm; uint32_t retval = 0xFF; @@ -519,10 +517,8 @@ uint32_t m48t59_read (void *opaque, uint32_t addr) return retval; } -void m48t59_toggle_lock (void *opaque, int lock) +static void m48t59_toggle_lock(M48t59State *NVRAM, int lock) { - M48t59State *NVRAM = opaque; - NVRAM->lock ^= 1 << lock; } @@ -683,13 +679,11 @@ static const MemoryRegionOps m48t59_io_ops = { }; /* Initialisation routine */ -M48t59State *m48t59_init(qemu_irq IRQ, hwaddr mem_base, - uint32_t io_base, uint16_t size, int model) +Nvram *m48t59_init(qemu_irq IRQ, hwaddr mem_base, + uint32_t io_base, uint16_t size, int model) { DeviceState *dev; SysBusDevice *s; - M48txxSysBusState *d; - M48t59State *state; int i; for (i = 0; i < ARRAY_SIZE(m48txx_info); i++) { @@ -702,8 +696,6 @@ M48t59State *m48t59_init(qemu_irq IRQ, hwaddr mem_base, dev = qdev_create(NULL, m48txx_info[i].sysbus_name); qdev_init_nofail(dev); s = SYS_BUS_DEVICE(dev); - d = M48TXX_SYS_BUS(s); - state = &d->state; sysbus_connect_irq(s, 0, IRQ); if (io_base != 0) { memory_region_add_subregion(get_system_io(), io_base, @@ -713,15 +705,15 @@ M48t59State *m48t59_init(qemu_irq IRQ, hwaddr mem_base, sysbus_mmio_map(s, 0, mem_base); } - return state; + return NVRAM(s); } assert(false); return NULL; } -M48t59State *m48t59_init_isa(ISABus *bus, uint32_t io_base, uint16_t size, - int model) +Nvram *m48t59_init_isa(ISABus *bus, uint32_t io_base, uint16_t size, + int model) { DeviceState *dev; int i; @@ -736,7 +728,7 @@ M48t59State *m48t59_init_isa(ISABus *bus, uint32_t io_base, uint16_t size, dev = DEVICE(isa_create(bus, m48txx_info[i].isa_name)); qdev_prop_set_uint32(dev, "iobase", io_base); qdev_init_nofail(dev); - return &M48TXX_ISA(dev)->state; + return NVRAM(dev); } assert(false); diff --git a/include/hw/timer/m48t59.h b/include/hw/timer/m48t59.h index ddbbda26af..cf80d20282 100644 --- a/include/hw/timer/m48t59.h +++ b/include/hw/timer/m48t59.h @@ -4,39 +4,6 @@ #include "qemu-common.h" #include "qom/object.h" -/* NVRAM helpers */ -typedef uint32_t (*nvram_read_t)(void *private, uint32_t addr); -typedef void (*nvram_write_t)(void *private, uint32_t addr, uint32_t val); -typedef struct nvram_t { - void *opaque; - nvram_read_t read_fn; - nvram_write_t write_fn; -} nvram_t; - -uint32_t NVRAM_get_lword (nvram_t *nvram, uint32_t addr); -int NVRAM_get_string (nvram_t *nvram, uint8_t *dst, uint16_t addr, int max); - -int PPC_NVRAM_set_params (nvram_t *nvram, uint16_t NVRAM_size, - const char *arch, - uint32_t RAM_size, int boot_device, - uint32_t kernel_image, uint32_t kernel_size, - const char *cmdline, - uint32_t initrd_image, uint32_t initrd_size, - uint32_t NVRAM_image, - int width, int height, int depth); - -#define TYPE_SYSBUS_M48T59 "m48t59" - -typedef struct M48t59State M48t59State; - -void m48t59_write (void *private, uint32_t addr, uint32_t val); -uint32_t m48t59_read (void *private, uint32_t addr); -void m48t59_toggle_lock (void *private, int lock); -M48t59State *m48t59_init_isa(ISABus *bus, uint32_t io_base, uint16_t size, - int type); -M48t59State *m48t59_init(qemu_irq IRQ, hwaddr mem_base, - uint32_t io_base, uint16_t size, int type); - #define TYPE_NVRAM "nvram" #define NVRAM_CLASS(klass) \ @@ -58,4 +25,9 @@ typedef struct NvramClass { void (*toggle_lock)(Nvram *obj, int lock); } NvramClass; +Nvram *m48t59_init_isa(ISABus *bus, uint32_t io_base, uint16_t size, + int type); +Nvram *m48t59_init(qemu_irq IRQ, hwaddr mem_base, + uint32_t io_base, uint16_t size, int type); + #endif /* !NVRAM_H */ From 6de0497385cbbbbd5f20ca712389b3691ea5c96d Mon Sep 17 00:00:00 2001 From: Mark Cave-Ayland Date: Mon, 2 Mar 2015 22:23:27 +0000 Subject: [PATCH 5/9] m48t59: introduce new base-year qdev property MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently the m48t59 device uses the hardware model in order to determine whether the year value is offset from the hardware value. As this will soon be required by the x59 model, create a qdev base-year property to represent the base year and update the callers appropriately. Reviewed-by: Hervé Poussineau CC: Andreas Färber Signed-off-by: Mark Cave-Ayland --- hw/ppc/ppc405_boards.c | 2 +- hw/ppc/prep.c | 2 +- hw/sparc/sun4m.c | 2 +- hw/sparc64/sun4u.c | 2 +- hw/timer/m48t59.c | 27 +++++++++++++++------------ include/hw/timer/m48t59.h | 5 +++-- 6 files changed, 22 insertions(+), 18 deletions(-) diff --git a/hw/ppc/ppc405_boards.c b/hw/ppc/ppc405_boards.c index 1dcea7730e..ec6c4cbaf1 100644 --- a/hw/ppc/ppc405_boards.c +++ b/hw/ppc/ppc405_boards.c @@ -283,7 +283,7 @@ static void ref405ep_init(MachineState *machine) #ifdef DEBUG_BOARD_INIT printf("%s: register NVRAM\n", __func__); #endif - m48t59_init(NULL, 0xF0000000, 0, 8192, 8); + m48t59_init(NULL, 0xF0000000, 0, 8192, 1968, 8); /* Load kernel */ linux_boot = (kernel_filename != NULL); if (linux_boot) { diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c index 9290846bd6..7f52662d76 100644 --- a/hw/ppc/prep.c +++ b/hw/ppc/prep.c @@ -684,7 +684,7 @@ static void ppc_prep_init(MachineState *machine) pci_create_simple(pci_bus, -1, "pci-ohci"); } - m48t59 = m48t59_init_isa(isa_bus, 0x0074, NVRAM_SIZE, 59); + m48t59 = m48t59_init_isa(isa_bus, 0x0074, NVRAM_SIZE, 2000, 59); if (m48t59 == NULL) return; sysctrl->nvram = m48t59; diff --git a/hw/sparc/sun4m.c b/hw/sparc/sun4m.c index d391f8e8a5..b879aa91eb 100644 --- a/hw/sparc/sun4m.c +++ b/hw/sparc/sun4m.c @@ -1014,7 +1014,7 @@ static void sun4m_hw_init(const struct sun4m_hwdef *hwdef, lance_init(&nd_table[0], hwdef->le_base, ledma, ledma_irq); - nvram = m48t59_init(slavio_irq[0], hwdef->nvram_base, 0, 0x2000, 8); + nvram = m48t59_init(slavio_irq[0], hwdef->nvram_base, 0, 0x2000, 1968, 8); slavio_timer_init_all(hwdef->counter_base, slavio_irq[19], slavio_cpu_irq, smp_cpus); diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c index 9873e399d2..53aec80102 100644 --- a/hw/sparc64/sun4u.c +++ b/hw/sparc64/sun4u.c @@ -868,7 +868,7 @@ 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, 59); + nvram = m48t59_init_isa(isa_bus, 0x0074, NVRAM_SIZE, 2000, 59); initrd_size = 0; initrd_addr = 0; diff --git a/hw/timer/m48t59.c b/hw/timer/m48t59.c index 08f0d57d7e..d3d80798ef 100644 --- a/hw/timer/m48t59.c +++ b/hw/timer/m48t59.c @@ -79,6 +79,7 @@ typedef struct M48t59State { qemu_irq IRQ; MemoryRegion iomem; uint32_t size; + int32_t base_year; /* RTC management */ time_t time_offset; time_t stop_time; @@ -387,11 +388,7 @@ static void m48t59_write(M48t59State *NVRAM, uint32_t addr, uint32_t val) tmp = from_bcd(val); if (tmp >= 0 && tmp <= 99) { get_time(NVRAM, &tm); - if (NVRAM->model == 8) { - tm.tm_year = from_bcd(val) + 68; // Base year is 1968 - } else { - tm.tm_year = from_bcd(val); - } + tm.tm_year = from_bcd(val) + NVRAM->base_year - 1900; set_time(NVRAM, &tm); } break; @@ -493,11 +490,7 @@ static uint32_t m48t59_read(M48t59State *NVRAM, uint32_t addr) case 0x07FF: /* year */ get_time(NVRAM, &tm); - if (NVRAM->model == 8) { - retval = to_bcd(tm.tm_year - 68); // Base year is 1968 - } else { - retval = to_bcd(tm.tm_year); - } + retval = to_bcd((tm.tm_year + 1900 - NVRAM->base_year) % 100); break; default: /* Check lock registers state */ @@ -680,7 +673,8 @@ static const MemoryRegionOps m48t59_io_ops = { /* Initialisation routine */ Nvram *m48t59_init(qemu_irq IRQ, hwaddr mem_base, - uint32_t io_base, uint16_t size, int model) + uint32_t io_base, uint16_t size, int base_year, + int model) { DeviceState *dev; SysBusDevice *s; @@ -694,6 +688,7 @@ Nvram *m48t59_init(qemu_irq IRQ, hwaddr mem_base, } dev = qdev_create(NULL, m48txx_info[i].sysbus_name); + qdev_prop_set_int32(dev, "base-year", base_year); qdev_init_nofail(dev); s = SYS_BUS_DEVICE(dev); sysbus_connect_irq(s, 0, IRQ); @@ -713,7 +708,7 @@ Nvram *m48t59_init(qemu_irq IRQ, hwaddr mem_base, } Nvram *m48t59_init_isa(ISABus *bus, uint32_t io_base, uint16_t size, - int model) + int base_year, int model) { DeviceState *dev; int i; @@ -727,6 +722,7 @@ Nvram *m48t59_init_isa(ISABus *bus, uint32_t io_base, uint16_t size, dev = DEVICE(isa_create(bus, m48txx_info[i].isa_name)); qdev_prop_set_uint32(dev, "iobase", io_base); + qdev_prop_set_int32(dev, "base-year", base_year); qdev_init_nofail(dev); return NVRAM(dev); } @@ -809,6 +805,7 @@ static void m48txx_isa_toggle_lock(Nvram *obj, int lock) } static Property m48t59_isa_properties[] = { + DEFINE_PROP_INT32("base-year", M48txxISAState, state.base_year, 0), DEFINE_PROP_UINT32("iobase", M48txxISAState, io_base, 0x74), DEFINE_PROP_END_OF_LIST(), }; @@ -852,6 +849,11 @@ static void m48txx_sysbus_toggle_lock(Nvram *obj, int lock) m48t59_toggle_lock(&d->state, lock); } +static Property m48t59_sysbus_properties[] = { + DEFINE_PROP_INT32("base-year", M48txxSysBusState, state.base_year, 0), + DEFINE_PROP_END_OF_LIST(), +}; + static void m48txx_sysbus_class_init(ObjectClass *klass, void *data) { DeviceClass *dc = DEVICE_CLASS(klass); @@ -860,6 +862,7 @@ static void m48txx_sysbus_class_init(ObjectClass *klass, void *data) k->init = m48t59_init1; dc->reset = m48t59_reset_sysbus; + dc->props = m48t59_sysbus_properties; nc->read = m48txx_sysbus_read; nc->write = m48txx_sysbus_write; nc->toggle_lock = m48txx_sysbus_toggle_lock; diff --git a/include/hw/timer/m48t59.h b/include/hw/timer/m48t59.h index cf80d20282..3367923639 100644 --- a/include/hw/timer/m48t59.h +++ b/include/hw/timer/m48t59.h @@ -26,8 +26,9 @@ typedef struct NvramClass { } NvramClass; Nvram *m48t59_init_isa(ISABus *bus, uint32_t io_base, uint16_t size, - int type); + int base_year, int type); Nvram *m48t59_init(qemu_irq IRQ, hwaddr mem_base, - uint32_t io_base, uint16_t size, int type); + uint32_t io_base, uint16_t size, int base_year, + int type); #endif /* !NVRAM_H */ From 0278377dde6a5a845e886567c1e68a77766a89b1 Mon Sep 17 00:00:00 2001 From: Mark Cave-Ayland Date: Mon, 2 Mar 2015 22:23:27 +0000 Subject: [PATCH 6/9] m48t59: add m48t59 sysbus device MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This is for subsequent use by the sun4u machine. Reviewed-by: Hervé Poussineau Signed-off-by: Mark Cave-Ayland --- hw/timer/m48t59.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hw/timer/m48t59.c b/hw/timer/m48t59.c index d3d80798ef..8ab683ddac 100644 --- a/hw/timer/m48t59.c +++ b/hw/timer/m48t59.c @@ -128,6 +128,10 @@ static M48txxInfo m48txx_info[] = { .sysbus_name = "sysbus-m48t08", .model = 8, .size = 0x2000, + },{ + .sysbus_name = "sysbus-m48t59", + .model = 59, + .size = 0x2000, },{ .isa_name = "isa-m48t59", .model = 59, From 9bb9f217f56b678f3ad2bddeb9894880ae0320b7 Mon Sep 17 00:00:00 2001 From: Mark Cave-Ayland Date: Mon, 2 Mar 2015 22:23:27 +0000 Subject: [PATCH 7/9] doc: minor updates to SPARC32 and SPARC64 documentation Signed-off-by: Mark Cave-Ayland --- qemu-doc.texi | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/qemu-doc.texi b/qemu-doc.texi index aabe8df2f3..f5b0dc4588 100644 --- a/qemu-doc.texi +++ b/qemu-doc.texi @@ -2052,7 +2052,7 @@ firmware implementation. The goal is to implement a 100% IEEE A sample Linux 2.6 series kernel and ram disk image are available on the QEMU web site. There are still issues with NetBSD and OpenBSD, but -some kernel versions work. Please note that currently older Solaris kernels +most kernel versions work. Please note that currently older Solaris kernels don't work probably due to interface issues between OpenBIOS and Solaris. @@ -2091,8 +2091,9 @@ Set the emulated machine type. Default is SS-5. Use the executable @file{qemu-system-sparc64} to simulate a Sun4u (UltraSPARC PC-like machine), Sun4v (T1 PC-like machine), or generic -Niagara (T1) machine. The emulator is not usable for anything yet, but -it can launch some kernels. +Niagara (T1) machine. The Sun4u emulator is mostly complete, being +able to run Linux, NetBSD and OpenBSD in headless (-nographic) mode. The +Sun4v and Niagara emulators are still a work in progress. QEMU emulates the following peripherals: From f2416d3ae4d38a078f0ff7662b26bed9b61f8096 Mon Sep 17 00:00:00 2001 From: Mark Cave-Ayland Date: Mon, 2 Mar 2015 22:23:27 +0000 Subject: [PATCH 8/9] MAINTAINERS: add myself as SPARC maintainer Acked-by: Peter Maydell Signed-off-by: Mark Cave-Ayland --- MAINTAINERS | 3 +++ 1 file changed, 3 insertions(+) diff --git a/MAINTAINERS b/MAINTAINERS index 8c06739ff9..7ef487981f 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -159,6 +159,7 @@ F: hw/sh4/ SPARC M: Blue Swirl +M: Mark Cave-Ayland S: Maintained F: target-sparc/ F: hw/sparc/ @@ -518,11 +519,13 @@ SPARC Machines -------------- Sun4m M: Blue Swirl +M: Mark Cave-Ayland S: Maintained F: hw/sparc/sun4m.c Sun4u M: Blue Swirl +M: Mark Cave-Ayland S: Maintained F: hw/sparc64/sun4u.c From f3b18f35a23c60edbda6420cd4bd30b8bb11ea80 Mon Sep 17 00:00:00 2001 From: Mark Cave-Ayland Date: Mon, 2 Mar 2015 22:23:27 +0000 Subject: [PATCH 9/9] sun4u: switch m48t59 NVRAM to MMIO access 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 r1330 in order to switch the SPARC64 NVRAM accessors over from ioport to MMIO. Signed-off-by: Mark Cave-Ayland --- hw/sparc64/sun4u.c | 10 ++++++++-- pc-bios/openbios-ppc | Bin 746588 -> 746588 bytes pc-bios/openbios-sparc32 | Bin 381512 -> 381512 bytes pc-bios/openbios-sparc64 | Bin 1616768 -> 1616768 bytes roms/openbios | 2 +- 5 files changed, 9 insertions(+), 3 deletions(-) diff --git a/hw/sparc64/sun4u.c b/hw/sparc64/sun4u.c index 53aec80102..f027caf909 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, diff --git a/pc-bios/openbios-ppc b/pc-bios/openbios-ppc index 994052f14d60856e34206fb9302ec453f85967b8..91e4193c2d21de3ed177d474ffc5d4446a9379ea 100644 GIT binary patch delta 23727 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 delta 23922 zcmX@HMEt}O@eSz$j3Uh$0^2hL80Q}q?a4_jNi8mEYxsZh>JkP92A2Pq-FvpnTw_#c zXB64)a+h&?B;%Rwf6SPC7zO?E%M=Vv6^slFO%x1`tV}JpM_MqoaxndVvHgJq(|vJ9 zo$UuAn5ME#FN|kOVw9MEC7#JyGlqeIf${&v3nl+AUJUqu$yVV1#Y;E-Uy7IcfANX| z0|SG=|BDx6{$GkunC_6kq#e2dto%}($p1_6Oa5QHAdr@sm!g}JTGqk9(D46K{1*lW z2G;+V>RsS+MX5O;`5v%*f(S&vcm~9}NRj`S5+tS{NMMp@G@1S&fk~QCV)}wQCQ0T? z2^P~O5}EWFGp2haGWjzunLZCYgzy zG13HV^u=oq|1Tw5fSjM3SfHDeU*66Dc6y2pSpHH{%KwWOP5xi}y@G*(feoZ4GmnAc z|E2gJAU$bCsj0eUnMEa~i8&B2r^HO>No6WxivKaaA(cs*amw^LsZ7$YDj?neFW!Fe z|5B>K|4XU<45$DkmJAXqC@s#=El5nxPE1dQn3(DSaY?Gi^gpRg@wyt|D7$zK6jc}g zUrKfPfAQju{}(TF{J)e6lQRH|T}suM-jT*6&shUEVM7{IxF)iyBM@CEy5S~IH%Mnv z)&->t*8i7&^MHJ;QIMLNt=ZP_|5Dl=aO7Whdjk@00Eb%Im+1}ZOwwW;U<)r^Q22lG z(v$y}(!haLK7C?3lbGiR7(WMOR4XVQrMn=h{{xfPD9F!F1zVM#0

+oX#LtrMFBM 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 Zvv{y6mWN$SAix>H_OKMgWY=WljJ9 diff --git a/pc-bios/openbios-sparc64 b/pc-bios/openbios-sparc64 index 61bd46bf440ce9b6e2b4245d967312a08e4563a9..e5d9e5a7b158efa1f34903645feaddb44076a218 100644 GIT binary patch delta 52996 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 B8S?-D delta 51679 zcmZp;p44zXX+l1uz{Y|}_DuS>CSP!oVG(H1zXW5Pf-w%k7`tGMO&|t`K!Z_1lYj!- z}V2DkcDwJGzlok!8j|L1Qg_9oCQq+3JNgJj3xmEMHpv7lYoK}jMLF1pr8!mOm1*# zW(5Vd28hQY&|nA(Y)u#k6xdoY4k)m-VH{9k>%cgmz}AIvK!L3XgWEZ3g3j0^1zM0R^@Ni~|a6OBe?f*j6wO zD6p+z98h4}z&N15wuNy(fo%ulfCAed#sLMk1B?R-Y)2Re6xdEM4k)mlVVs600R5%OjdAUVQCUj2nKOD1R4xL@e=~&=!4=X6vhF? zPZ*2?il1;82NXXMFb*hwB4Hd*{6xVxp!kV~aX|4C1LJ_=Cl-OJ zzZAv+g?|~00}B6g7zY&o6)+Ac{3~G`Q21BDIH2&ahH*gQUjyTS!oL>A0fm1Zi~|b) zdJtz)AUost$sGapjMu^Bb}%^|OqPSma4=~OCdDUrgw%u7hk(_G)H7}ei%bWTny|pTu z1QcP}TdSZ+KoM5gX=OACD8lMGt%N24MOgOMif9s0gk^87fF=P&SoYTPXcAC_Wp6Eq zCILlQ_SUj!5>SL?Z!Lo+0Yz9{r=`&(pa{#}S_(}9imNk9=+*J-|J5>SNIb(#;F1QcO)o#u@u0Yz9{ zr+J}CKoM5gX`W~jP=wWWng^N$6k&Cp=8h%-MOa;@xuHow5mwh}u4ocagw=JLpy+|s zb()~~fz@@Ip!k8+b()~~0oQdL0u7p=_)&rSR1*|GsxS^He$-$bQ2eOFIH34}RgapW z_<>cAnxOcBRgapW_<>cAnxOcBRgapW_<>cAnxOcBRgapW_<>cAnxOcBRgapW_<>cA znxOcBRgapW_<>cAnxOcBRgW5=_<>cA8ld=rRgW5=_<>cA8ld=rRgW5=_<>cA8ld=r zRgW5=_<>cA8ld=rRgW5=_<>cA8ld=rRgW5=_<>cA8ld=rRgW5=_<>cA8ld=rRgW5= z_<>cA8ld=bfd;$=D1KaF98mnY!8oA!affk0@#6vGfa1p!#sS5T7mNdnA8!~36hA&N z4k&(nVH{BW_`x`!`01es5&TqVAZ2K zD1KnoqdF*lVAZ2KD1KnoqdF*lVAZ2KD1KnoqdF*lz||v%K!Z9ceo|oefZ`_=#sS4o z8jJ&qpL7@p6h9d-4k&&yVH{BWWWhL~_{oNGK=A{sKGi|-1FJsOLGc5tKGi|-1FJsO zLGc5tKGi|-1FJsOLGc5tKGi|-1FJsOLGc5tKGi_+1FJsOK=A{sKGi_+1FJsOK=A{s zKGi_+1FJsOK=A{sKGi_+1FJsOK=A{sKGi_+1FJsOK=A{sKGi_+1Fk+f1RB&p@zVee z5H(QzG{QKb_-TT1K=IQIfD1J7; zIH33ewS~dND4=8?)!(>45a{|Tz#m`9?2NXY`aS*T`Q2d;R z$$;YL42%PcpR+IyD1JcQ39uee{G5l$fa2!@j01|Fi!cr-en0~+U_GGtxeSv5#m^Ne zM;R19S797b{DAr|AU(>U__+>~0maV^7zY$TH(?x5{D4M!z1ml3>=P`@}ik~Mi4k&(}!Z@J#c?RQv z;^#Sx1B#y)Fb*hwUcxw__<056fa2#hj01|FH!uz;e%``3p!j(Q=QE50ik~k~juI$-zQQ=5`1uCofa2#nj01|FA21FmetyC@p!oR( zOMoeKT4q9Gpzfg1nND*x<5*w z-ZQNGql7%Vp@clTp@clTp@clTp@clTp@clTp@clTp@clTp#RrRSKT4q9HLUxi1nOPGx<5*w-ZiZIqXg<*!@56;px!mC`=bcz zUBkLRilE*#tox$~>RrRSKZ>BKd4eQG&f&v@X zmr(=-HmonB2nuXiUq%rW*s#8gA}Fw7eHleiV8i+{ilD%T^<@-6feq`+D1rhT)|XKP z1vacNqX-IYSYJi~6xgu7i~=aIVSO0|P+-IQG76x;hV^9>K!FYG%P4>X8`hUm00lOz zFQWhoY*=4L0TkG&qyB0vpzsQ2+%ttS_U0 zoEa35GlK$hW>7%R3<}7ZK>-v$u(1FIQ2fBg0u(^;0~-ra0L2e1Gbn)K2b>uuALvwO z1;q(011Nyv1lE610L2Nc|Dphj6IlO60Td^}pfZ3%pg{o?Cm~RdJSa|J{TF#qoWS}o z@}M|@^%Yi@;sn-zkq5;I ztp6epiW6A>MIICOlYC{AGg7kN;efcq~j0u6GYCJktwLJri10y993HZTL!N(3=v zLA4c_0jeIs3{ZUxW`G(1G8_U8@}Mw>^-ttMVGiq`$b<3(tbZa83V&GtL>?6Wu>OfW zDEwjl6M0bh!}=%kpzw$FPvk-259^=Efx;iwKam54KdgTu2MT{!|3nTH{;>Xu94P!@ z{S!G*_`~`qa-i^s^-ttL;ScMd$brHi)<2O0g+Hu+A_oe8aQ|e|MDXz51n_X(1n_X( zgnGv5lRGBVGnRwNa4=~OCdDUrOaTw?O#!Q)0#-i-tbPhu{gisfaIhM4FbPr5HJM{3 zc(`sRc(`t6J>x2{NEevQ0+U`~QVUFSP3D*jRzDZ4elA%3+Unjf(GO%l}nfYoo3pymgxevKVbEnB&hiTtKTF+%|lrI zCJBlkSp6mmiXT}0CJBlkaQ((1&>#tlAK37oBq)Ah!+VmT_<;@YNrK`BHoPYZiXYhU zo+K!KU{#_dD1Km7q9iDOU{#_dD1Km7q9iDOU{#_dD1Km7q9iDOU{#_dD1Km7q9iDO zU{#_dD1Km7q9iDOU{#_dD1Km7q68>@U{#_7D1Km7q68>@U{#_7D1Km7q68>@U{#_7 zD1Km7q68>@U{#_7D1Km7q68>@U{#_7D1Km7q68>@U{#_7D1Km7q68>@U{#_7D1Km7 zqC`iNfFi6)lmNvKY6;XMgZ{J@6y zBtY@w4Xs-wK=A_`-je{u4{Uf(0u(>6;XMgZ{J@6yBtY>4s~#ml@e>F$4HQ2?Fb*hw zVAZ1pD1Knoqc|vjVAZ2ID1Knoqc|vjVAZ2ID1Knoqc|vjVAZ2ID1Knoqc|vjVAZ2I zD1Knoqc|vjVAZ2ID1Knoqc|vjVAZ2ID1Knoqc|vjVAZ2ID1Knoqc|vjz||v%K!Z3a zeqh6U;-L6}4eyDA;s-XoCk~1q*zle>D1KnWd*Yz@fer78gW?A^yeAHdAK37oI4FK# z)u%Wpeqhz7I4FK#)u%Wpeqhz7I4FK#)u%Wpeqhz7I4FK#)u%Wpeqhz7I4FK#)u$LJ zeqhz77$|;V)u$LJeqhz77$|;V)u$LJeqhz77$|;V)u$LJeqhz77$|;V)u$LJeqhz7 z7$|;V)u$LJe!$fyhd_fED1KnWdt#vYfer78f#L@?ye9^VAK37o7$|;V!+T<&_<;@Y ziGkt=HoPYWiXYhUo){>8V8eT2p!k6e?}>rp2R6JX28tip@SYebeqh6UVxahe4eyD8 z;s-XoCkBci*zlehD1KnWdt#vYfer78f#L@?ye9^VAK37o7$|;V!+WBj_<;@YiGtz> zHoPYaiXYhUo+v1OV8eT&p!fkb+(4rXqM-PJ4eyD9;s-XoCkl!m*zlexD1KnWd!nHD zfer78g5n1@yeA5ZAK37oC@6kFEk&?Bp!k6e?}>uq2R6JX3W^`t@SZ3reqh6UqM-PJ z4eyD9;s-XoCkl!m*zlexD1JaqQ?Nat_<;@YiGtz>HoPYaiXYhUo+v1OV8eT&p!k6e z?}>uq2R6JX3W^`t@SZ3ren4$uusxvofer78g5n1@yeA5ZAK37o2q=DF!+Rp2_<;@Y ziGbnoo2R6JX0*W8l@SX@Leqh6UBB1zz4eyD7 z;s-XoCjyEe*zleRD1KnWdm^Ctfer78fZ_)>ye9&RAK37o2q=DF!+Rp2_yM);EH ziXYhUo(L#@V8eSNp!k6e?}>oo2R6JX0*W8l@SX@Leqh6UBB1zz4eyD7;s?~70NVqK zAK37o2q=DF!+Rp2_<;@YiGbn*3oGuQ z>~qkFN&fEShJ)3N9+UqZlxICQNhtBlWQ9ZGvim2$OJJD$c<%=XhL}|#{Zj-KSSAQ4 zFgP&8cuo#Eq%7(*K}fm4fgz@9f`9_!E&&D(2ZosL$vua(8I30IIHWA7IYCHygFprY z14y?6LrnbSH;2?YCpa*~7)%gQV4w6u#O6XlVub@kjL!rC1rerG3_KuHCNL>5Ixw(> zPqb2C*d)NfF-3quc7lL{r~^X`+av)7Nr4Oot^;}wveOrAVHC?NDwrUom;h48%)r3F zYX56}lRyH)1OWw}W{m;`RR#uzCI$y4koc#9#2Fwp+r%C)fYhkl|5^`Hvt93l0!YoT zg2V;~h8W8oYzJhTL>4eyiC3Hel5b*g5N0~nz<)s_v19Uw!|J{j6POs792i({Ob}9j z!F1k%dy0VKUqJ>224?$j!V`oP7(lL^sAZrqfr)|9fr0hh1R(_ukeW#X3=&hdHn2D_ zl*vOwl5z5!Bl3*vcaUfDB*9 zdVp~Y!vU!Yq7Mul805BU+J6%k23!0~W|B|>gCzq4!$v&=g&pDw43o7A6gIFih)iN~ zV4NVPU@=K3F~NaB?z8grhsI1wlk*R<>neDFBzK7i1r@4z58VUkdy0mJ~i2|@}RCS8!SlWUwLl&CS$?1O|k0|Nud zfcpRc{6T30n?ay70yV67l2D=o#4yDPLJ9{aU69g~OPM5;C{h3apXmev1x{=RKs85A z5=s<+Xy%w8q;LYP*?W>uB1irIe=?vnfk(6BB%wqGkY-ld_Y;H^CjUP#ttV$RNhsk* z{r`W=1Tpoa7`Y2_?J`Wc~WE{{P>X6O9a*@Yv2bNhsj~ zC=sqSw!tK!gaC-EsQAfALJ3bG{!gDEq~rinqFgUCK}abBs$%IRp#%X~p?N880jMls02P{$ z8iUzkf{;=Hv;8kniNLgt?EvEx0R;gEhDeJ^Vhui`1(-siu;H79=#H zaf*O~!bB|tW(S61t4X2{Kh*#KBQya*3rrADKrJD}9-TmnW7A1OiICz&`tbxIr3aHP zNL#8+5=z`5D0?=w{{Qc9_)A9_=}AI~8ypy<&p}E>X$iqeLWwIJ7$Qzg5Kv&A1a2HL zw_k``F!}v8aVP0r6NHprU<)&dH>Lkh5=vZf$md~4!-9llCI<$|h6M?EOb!ex4GR(y zjXW4+COce`=2e^^q^!`eAVE;b|IgjY4Hu-j+9wDp{Qx()COck|np}R#qQ1$Rfq?;J z)h_V_a0>-gNrM^-yVxBVL7@i zC8t(9EdYsiYa|GC8zxB1VooRpiJbzeV@xPNvC?S)sHxYmz=2sP|NkeD+Q!2WyCw)I z{%t%w+3ac#TlnuI1&IZdS6ub8O1i;p{|lTaK(Pt(7AQ7Bq3ytsd)XA!f?;2N-+@8l zoVoq4HIoDs9)g+!4h&)OlMSv}b9yw1EnqkjpVTn9;Cdd@!UK~9ZsarSPHwm%CKlSY zK|q1AVUYrZkOu=BD1aOof(<9Hxglj2S_iThB*o;xzz&fLZ3Br-)KZWDwcIyaDM&al z1S^2#HcV1rVDeyK1+g6%f=^Cnx#z{n#$!SKT$#b5zOM==+3=;$x zWI*Wx6nG8{jHZ)>l0QtgdG?%h0@DcxsSN@Q9FrB^iA{ETuF7dNQ`bGCka`ou2e}bMJ20fKnk1mW0A(+qB)}j8OR94p z?-2myGY5v0EtB4=GiFTIcw5dWIC;TaFQ(Leli$2uEocqW2f~xsmz;NCNafhP;@x~k zM%&FEALN-7<0c6xC~%!(Uo4NdgMC4h(5wlRG}yF{Le=eBzTe zqtIlQ&wfm4&67hudoiWHp1k0*6I060$xlA-XVjm(7;pS8VqA&Bel$Tsb-7zq;s(L*>aEnC-vlfoi?_|KHmt z2q~Y~Jmvo)W~QW)?H0_8?2L>nraQ1OnlUAA*j~ZHD8|mD^kDl0Zbp4pMvdtQ1Q@l% z5_fQ&aA27rz#svNB2Z3nV2C@mO_0%vktuP%hE@H9PLM}je*(PO&6Mn;k88zdNw89k;ykzh=QD3G6?F3G6E=rO%V zl2MH>@xY<@!~=&S92gFjCmxu7K$205De=JcHTni7hF(hytD_D47x`Y&?A2Po{ zict-uZiW;@{ShffEvdu`rWEssFJ*HoQ3k5TJOmC3`hsg^$aA-xyGtOr8 z*#1SHv6zw3V>*u(qtx~$MMf7!xwx)f0t}q>|Noj#5MTh+0Wy;W7-Xk_2RY(Qraw^v znY~>`nURT!Dfa(#1yx2Prr1y0LsS{1nHW8`7pODZGcp!T-=M*0&R8)01%y)2WVB~2 zn4X}?Xw6tKeGY`Wp$U#G9xc$=%=7>)#&kxh={vL-l^Ok~-_c?WVpBZurCjmAbQ5jH zZDNTB>i_@0^CQB6VV3{{NB#fbE*Ihw4@}cxR08?lK#oaex`z&<6)2cnbQmW=^=_BZ zWi(@C3g0z7M2}I8Dg5yC8a+liB~bV!aMb_*6#_~JT!$D~LFwX1gabnpLjxm7Z2KNP z#&=9iiU+2zF=SK%(H9IE`#`2A7%?7WQamwT!y9Ehs@33O*XJqu)E@8u%#V8lpFp0r| z^N{%RhoE?CSdhpe* zP&$B&lT9yhV02>&y0LwS17jB(Q(*gc7k9?p%#6a@ycyjYMeP@eC@}00P+(Z7W1z5r zg@JK_i1LE%F+PmJpaihNkI|2j$?x*E07f=OCclZ(IRY7XGkQ!v5XM-r-6V*yn}yM1 z`++dVZA?r)zou72GEUQy%3)w&VEBJgss>8WfYMu_^aUt=WV%HZ<3FK=28SXV7#j~b zKu6JhwodnmW^`lnSv-A0G-EoW$Mhf3jKQKd8w40+K_v{RE}i>$zk>sV_q*u{F^s1L zd3UfY@LXYE{(X`FgOme<59f57SVko#@9)zSVj1@{YE4&&W2|Phnm#9vv06}ig8+lf z1-FL*Q_T|?92h)aOxK8KoW$gQV*8$W#%?B2e^B*#D1LeSBmoAYD=Y~r4h$aB(_@kt zH!*o_oi32f=*8sKI6Wqr(TK^bWcq|;#%M;n?QfD9gBY3ICr)=rWz=U3n_iI0*u>;{ zY5JE`#v~@so!cYQ82>Rbxjmj9k;(X&(PO$z7ULl%j~Ual8Ba5MOh1#&7{%nWcDhCm zqn(iJ@onOY4Hw)M8z!+Y|L(xxItAo>iR}||7`Z`_IwzM=O31YslpHR&9blMh2J(fg z!}b%ojC_ntuFcbLG#ok4|7JEJn=g6RhBjABAbCyqokFf=S!z#){uz;Y-e>B97gcE(3cNhhY;bTHO2 zDQ%d(r-QMcalv$(PDZ=1q#Ye>4KkgU3Jk|04lpzKS83+;{eNvh@=(UFLZ)((1Pg+-HcX7 zNjuuu4#>7!JYax0?EsTR0)yR=h@=B;Yz;DK;ugmuk~T~~)6FQ)x}r%SX~Fgn-HgnP zj0>hW^f8J}=jvq?WLyDe3%wPcAf(h$|NmbaC^=pzPuc+%pB~lAD8Q6-0L&43%Q!(u z=|uhie?d@1CqUxj(^vO0@-roE0CRNTP7qQ84R6^&)m(rSK3@Vs1qrCv3#pp_sZ0=3 zdNZw$F^);eW_m&&V>lxNh?1UuxsP#iP|}Vj0cC|Y0i_5*1_p&g1r4Ca@PT6m4Ge7p z3LHn`lTLuxN8*z+ckO4HSZEOwFpu+u7+@l@Sb0#p#bBaw7SMG3NuzNUt$^=Fuxkm>;{7C`|Y!ld*f4>&t zz~I2(#5CRL1G58z-P!3+CNKtx+3f%|^+3ijeX{=za;^h|-R9{&6B(7n>^4slP~c+v zWd9CCAJ78L1K6#b-ZGI|j!0+yJf=?fgN_=qXGJjG#v6RHFq94h(k7rhk~k7|!Z(p`d{g z6l)^e6DBjJgYwRaDUAJ$9@`_PGRlKW!it%UUW`mO8>b(c#n{DUeQbKbY(_68o9gLv zW;2#E#!eTR!}y5F`o#1fa~P*FSudJCVJ>4Dll7DBKjwnc8Ej@_y2E_NMMidCrdoZl zpCX`8u?$povoCLVV6YAZHH*KoDX2^kU=ReAP%G^oFif>Iuy8s zryHzgtY(a!zGf|>IU~pRCulI!VKd`CCeu&T1GX^QF`4vDpRk2d zoiTFzjxCIv85y&u=WJt~&*;3JXFI}tMvv(^J3uM-#&n0BjGEK;?qJkpN`i6(cQWci zIYCfbW%`btjCybm&o0JyOiDMV|JlXp1)@E6GX_tOmS*JSssI098I%(1|NmE<{$n4b zT7A-uLlFrEJD3<4>;Hdv3Q9MiQW-RxQ~&?Nvk3zB|3R6o{{Mw;klZu@1`g2t2#8(( z|6?*l-M=r5FBll+KHe`-|NlR;B?kjT{r~^qxu$L4meId|JNOx7ITaWfxCIy(X4@BV zcW^SuHrp3)bWK0In=y)!ce=(NMr}r>?IC*@r!g{_&6)mYFXJIDvusd#Qvd%!#Pl8e z7`3No?`JG#GTb%&!G1<5cEimV%9nrNGTreYqZr#75PK7t&A4>B$pOYRHpA`>0t!si z9S$;zv$cSvp-O8(Y^c(*=^qX-dNU?Zw>iit%@zZafvO4xu_3BN7lGIdjSLh7G8iO5 zK5}3%^qjurAfq*-)$|7k8TT`4PhW6|QH;s(>-HUo822$T8Gf8zag?!%iS7LKKSvq! zm`vtv&pF1J#K@F%WBY~UjCzbri*9T?2}&i#OSXrcV%*Ha=(3&TJmYH?Mw{thE;DK~ z8ctWZ!ssWYbffS^C{pKKfkf_$D~wv8m>0Rq=mw%= zt}<#dJ-RWy<0@ki)1w>P?_6a(&B!P-eZ_S~b;cLdFI;B~XH4F%af8tg?3|37j0Q}g zoG3Y2t3Y9j0E5hQ{RAdxb-QDifC6j%|64z%TRmWye&GzL0=dU1$e1vF!D&X3=?3>0 z#Thdo?3jCu{EP+DbM7%(X(inNnFZ=iO=5CjnkJz9<4Qz=$0VVo3I_&J{TTuZ;E}FF z@kuwPU%1Dp&e$;h$34b0rrV~|6Yew0F)g|=z2QEiw&68UDg&jyNdgK?8`$jsgZTCT zzg^gLj702lfBI=}zDAkWq>0mh1F84;kf{Zplpl^N?{l z>jO}?e0t48Ms>j%P#xZrgpzL5|Nr`U`h!P|=8Ws6OFU+@=bSeUJjissqLKTaHP0Be84ISb zc*bbVSTOw#gc5kp=*?I#J?1%Mv)}@dVUvWCJDP+KFx3CQzG3=@=ZxCZ?>}ec5Osiv zUHdjqzyXw>9qRwzxIW$D1*1Ic0?;u3^bMyN)p-j*Ce;7Gc5jkUa=`QnFBs*RZlq1$ z@Pbi^=|=4ID=!$0*lrk25=yd|-oVbJthjc9kRo_sxc>jOO_PL@J&+o}0rmfHOq?F@ zl2MtHqyGQ3h%KOY5y%q90z@cZn>tA-89IIQO$s!e21;6>BsN7rff3@E8?uvxk|mh! zze#Okb6~9he?xNmlb4K9OuGZNJG^3yW@P-iea>sfVphgE+XX%{`ZGepwEq8<^hrX= z4byWzFXv}5{3b|$sy|35SG zu>PAQl$QFtOTy$vB{sP|?ERz|Nq~ZHfj|PRqb5}U|I(7_E{sg-ss=4g4;YUq zBpZOr8jw4u2rOWjskkl#JVL^g| zk^jHTo7fT zNT!~ezJiI#n04F zh-f)5PWM^ED9Ox`{9$?z3zHOA@`nk03I7j8B>$McfrUv~a4l&4z%KD*fgS7&jECY? z7^XjAVbWq!VVEw!$|TOXcDe>DlOKp%!OAp0axG{qd$)dp0%%6!5P$N=1M0~S8WtqD zaCk7VABs=@ae+Pg%_Pw36D|d2feZ%j2|@}D7x)7qBte%YsS?SkZI?5@P3ngFOGa+C^G=h5k}phSXVRYDKb4VP zNXY?|Q8x(K|F8dl-f)so@(I)od|qXeQ1XH473@sff*?D1ROZ{r?OypJ9?v@`mXg98Bh{A14VVubA$_!DK87&hMaN2O39A;9%_GV2Wbfnl(X4 z$z%E(4yGcutv;YR!RaZSARje}D=1=a%aij+eP$#13~;AE2Hd;9|wFp~rn z*bk^Zelz_ICzBgf3d3|0E~aU6aP^!=7?PhfELd<*$b*4>0{im!hZvGyOnI z!p)@4dU1k~(t_y$+)T4MK^t8d52+_VnEr*EDVcHY^aviNET!ZJYZM&BmZ&m_vonC# z->hpBc)-xE@j(Gpg0u-dkeL32hv_t<#P$umOmR$H7dSzAzW)EY_tPZ=n9NxZ)c-#h zKRrZ%$%yS-5GWsmV+0(a(4zg!rAb1`3#K0sVA4xE-#be{fz_CSfx*)L*V-nr1cnv? z`~T3OkU64|{N#v2@{1!1$!}T&6j%-@BtJN!k^G@WKtX`%+yQ|j8p$6)`JdhXO966O z1>rALI8uk{ZxChzje9dBUqOgo1&cBkOmC0^>s%nkB*OtRs)-@_09YAg z!S*8}Ou?XmN(nJ0chJzJ7!zb%oS}tb@lnvIIjCM2W720Vn0`ZyNnNmD7efNmHnzt{ zeyuyS;9JDPg6RU{O!9&SO@axqbjNZ8!pU=$n*)aOrVDG0$H%p2V_BsqlIDdAxsZSOt+C^5(haE zo=8wVC=Z@C;hCNw4>k*wh#=_^H7sM~!ERdsH3h)~YX=2}$Yg^b+>8a&ITXOo-=hK! zk{AUr^+%dXdis0?aA2Va2p?vE*g!%88Xzr-U=ue$s5^=nVZp&OK}dlgw2}{${HH^M z1rf{U5Jyfwpu!|B_yLqhCkQF9z|~(-g1AwMNgJH=j)F3e1P3UYgHC#zCc^~tTaGf= zC4Vqtma$+uiwaXRl0C98dzfMNG%+L}y|BV*LH+;V+onHI0;fb!C=swzLltJHIoSeQg?1oHoXJfM)U zg4O=lI#8Pz6eFNeI>L~!q+!7V@XTq);2hi-`-J$;QflR4{z`v1q+r@zoA?v*Uc}_IjpfKG* zmr0uSG-yfJ^gB9C`mFmV2_t2NyM#9Rehp*1~0mr0ss(IlaS>F4h- zinARJm>{HNF-?z2itXrR&?>CydvuwU*p7CBR$5J0ux1kBsQ-V|e1eeD4v3;E&}ysc z3VKXpLdVl52q||!#&wRWf_y!>;FgM&N|`!H5Yo zRi|ML7W6P?>f$>tfr!z=`@k_O1zJ*h_!l%rrR)FyyRePzfK>heqc^7;m@uia9Vwq6 zq--!f#)Qcnly4F~Ojo$eD8_cU3m(m&Tn1U-TL1s>3D7#r=`T!}v|0CnmQhZZFlAC^ z-2_@UIo-jONtt&AXlZ2q|9|xp1Qa-?E0{7#vw~I_o|rxX#GE!sDB-~L3wJ;^xPT%P zl91k;GI8r2Zi1|VJemTE1;|2}Z_=QyET{_$>dJyzvGxCta)M$D>`bPksnZ?In9NzP zfxFp=#>X5pP>5|mVa9ZtQ4-cImIs*yGY8bYnZCw?=`|v9?pQKK$vt{7Ny&k!Vc7xB zBkD>oCZ{w=gPNa{tr8dxxhuVx9%9Ah#+3A8`W!1JW5EEBgFs7JA#L$Pp3@&#F-0?G zOt-OSGU8h)3Gzq%|CQpPr6|)KyqQF%Pq1cU^GX7DkdX_D0}4qGP<#A`OCg#M)qs+$ z1A`!VYN26~{eRF(l`R4c9QFTK{GI;5n#q`vW4ee9lRo3!=`J=*^LZBtWH88q20iNk zuh=yGgAJ3BRMLw>zzJF&Bjmuq0TP=oV$WnJm-M1x zVFCl20|O_s{jcr21QsyBx9bLxPG7{2f; zD@^ZkVX9YDIK;24c!XbBsa@lPM6*VLK&!?EjwS&I<`#hl#zXwd%F}gRnfe(OrtfiO zQc_F$vC&R};RwI7;vuM(R*ek;%^C$9EdmY9O#%)~M?hLw+?b|Ig4R{@f#S7c5qPbU z;358Gha>#Sj?=feF;#0SY!gsmL^tUI+oBg3rbW0jg)=Hl-{8&^EyyrMfI(mb8-u`R zy99q)ohtw9m04HCTLkvkjrYCqXSxa&(VQFAo zAfUjoML>aRhkydpBK8!9B_azowr}xZde6wHvwevdlNBRV(u3&_yqTi3l72KS2Robd z3R}{Hi53YAZS0HxPhdCz9x8WW5V$$jT!8^3H$BCNX%Z-l{qSMh#OeuF!E}KLrgBjqkP>96 z2MmcJ)8|AmDKq*^KM=tr&FHiJP6U%PBcsD~g(#4<+dV*(=nQm?ha!>$rnf{hX){_( z-w@5D&S)|HMl@43BggiT7^Y|@MuX`a;+W(GIY7xm$bmtmNx=U9hmu5t=?~(Vl36c< zW*4V>#5375a!l`tXPT`zdxDUHfItSL4=63Q>KG_6+y7d>(_8_(h~j`kg3orB1g3PB z&~+Qc6d0xmC^Ue!VNBL5VBf&Tz&Jrn`Gf-l*Op1_4x9oR47`Wfl&=^lWijP5#!N5B zV)AC>n7${A2~@6r00|~cPsj#4p(dNjnv;X+n8VRSERTLnKakC2#I)$e_Al8?-AtSe z+fxom9s=c{jyxtkF-Q&qib0$WP?GEKkQjAQCo=lIaV6t}w?@L)Bkj$}*Rb!4O z0|UbWjby=Pq6#2d=zvDD@N%6G3I{ZjMGj~riyqKO7CWGkEY58IYwt3a1B`FVmp@-7 z@|a`#g9@hGAWv5^xifNXXQ^UhW8_MDz~#a4be2HUgXtpGOlcq|)KoL=2W3Q?S|)!+ zj_EzMOimytU#Mk@*A;3v*dTFCBUz-~U;}7$Lj0IUvS_=(1`bfPfE;oRV!7Y}jbwr8 zF?CFGpe$Zf$K(ex;!GWrx~sq`j%2|T9LYkv^$RS1a3l+NYZe%EY8q&C2|CFB;z$+& z4aIc`GO(WFNEY3#Um&qVoPp&8N3vMAW`V#iaR-@09LeI-E$W$^m>#{DUQ^FxUC*#f zK!ahL0E5IXbqCHvWs5#Ei6k&IEOU?rwa`IzdJ}_#&@ql=fg>Erf~Po=h1xYfSe)QU z7H-wpV9>2upaCj|k8vc6bZQzXbO|~z9pOk8y}*$y1}fb_P5~9yZ2|{aKvqxGG5{Cb z6NDI;cBdSWoFFjWtbs{KZxOiXw1b^Nwu!+(1XS1_VMuxbN*deP9x#IDd3P~1$O`2D zKlw``>BaO34NRbAayJ^7Y^l)X1d9G`(i}iAE+jrj4!B1)7+Y8T+Q2 zG%=|&W=xN1Vsf_3_!Z#*8r=uayIhEOU;y=#>i_@mp2D7>04*JOL8U|e{|(Hb=KY2E z1cmzl8x^PDXkrQ$#ire0xP?2?$O5N&X_TMLK~A2>jt$;@eb4TZJAua>sFYI z88fCkv@?luZEyuSxBmY$+35-GOvf2LrfYOCnX|qGEs@@y(!mtX%(`WQkV3%pBi&5O ztg9vnDa_dZrkkmmh4Iq%f(cB{9E=yXZ<)bl#lkd4bNh!mOzMn`_qR*TV>-i_3K~Vj zwz9fmfdiM61A`!F#dI5k14jqPga2KO2_>MF(+LsAD4+qB)ZfnNz%iA*e#Qy#s;wJA z6TtL^88^W6jUdSCt_!n#p!^kJ`ob&?FnuFv2bjJviv>*I2!fb%VdfbqAF>+k!psd& zKE&J$GfSZS2VmOx!psOT<3d>24ApBcTpfptc7F6GD5s3J0h=VTNhC28)G$3AwK;&QjfY5h(pfp5X{e`2{3!pS)o!o_c5CbmUPl1Tvp97_#`tL(LeBpr$MEn6HfG#|M ztiQYP034$A|1Ug%YIq1z$MFBcLrBP7co+Z@_ z)jxqc=*bd@flr`O_yp>qCvPC)PkEp;G(?|5qvUA`$bN?Z7oI|c_$f3oK842hGXaRk zXEsne146%TfYMNd-a_Tyf`l3VUw8{m6SoXN0{<^Oho+4;P!HY$34_$FV5kSJg}m?# z8l=ylE`J7%yXR1YpF@N4In+llpds-h24vFz3ooD{_5!N^CDh?Bp$@zSb?_}{8o2{a zGj}SW3g1J0{%*?l8QvUx9QDBv7r^rK#XyJ)Z-7I9;s3=DNF?9L-~hYeMi3N{1(GdqWI)6(CLe&PhuM=1u@7!fGR!|vYmy-$cq0QsUrdICfbjo|1(4ixBOAnpi^%!gZTJj9oWMEH}W9a{bIET$gKZ2@*q)o zvFgC|fG`esK~QnQ@c%|WjCPp5B8)>`6Py)5Is~#A#6dI&BPoL^519TTj6Om|Mg67p4nDaEMDn;`|0U${GIOu!KfkmBe%hkTkeJ1Q`s%|8M9(br%>+F91n{ z!viD*!vAlmg2Vg&jZ%l{3nDng1;IHGBn86%ZzwBFZ;0R!n|?2XgHy5qBnHF(Z^%G` z{6;~?#6}UB|2GQ2i4q|%4K=#p!gPa34l$;J57Rv&Ipi4yCN^qJpAgBxKRrE?Lvy-7 zEC(M`p~b{TjcHLF{EQJG*$0UneAD@&IJBl0L~*z?P5_C4bTIA!u|Tp+g%3c?fM^c) ziH(}m4@7hDGfIF&F2r&0F%^M~n{E&TGY_PUu>vFwQaF8m48&f3#swfTk5~@=>GH80 zn$sI%Irte*fW*Ld6oKvd5X<4t3HH|i8^sb68x^J}#BuO5YJik|NZ{aODs})dFT`>1 zb3$sl8^sCJU&L|fGiHD!9O60n89P9%3xy!nU^_Q}1b0kq6q(MGz#%gILoo;6^nLLh zTGJI0IQSVKAS7Zr+!=p>EIj~{5CE}0fLIzJmO>(jJ);MR)sV=+&zLZMLL!Hl)EsaX z1#&UCoC7gH6~m2^3XsYNAe9q9EP*5re#R9bmO~OpJSQ~O7AH(!k;KtHT|S9JapDAy z=^%Tj>nC$)P6ydLJsrdX+x7tzWhor|)31Ys{!bKSoo<`L!8Lt*1PAZLUYY3yAUXFG z4$bKSsT}Up>p`pqX&n5F0idt|i9y2WKq?16V*^MG6q?h|rE+LZHvp+y0TMHa;oxH` zJpf{YHQxZSz?wgR0?8zuLy4*M2Z))I&Y?U#Je@;g`to!Rh3V{>AZKt)zXKBPPv;Pw zI6-7OI9kgLrdwoi)N_Kf!v7m(5z`N3aM;7S2_UY)^bfThVN7Kipy1h%$-zJUcshsZ z^n%}lywfXNIBc29X24_^H-K0T>5!zOF#SO$hdn3;6{dsqK_br}n}Z*e@D-*fWOLYq z(vHHkY!3eE^Rqb=r-LOOK!zyfaPUw64-yN2vp^cA>*sKYPQQ}Fq0CqS@+wa*hcYBR zgOhtXIK9+>1ZRMP$044BZ~DAk4y|cUC%6B{A+*5`33PQQ@H!9TH4 zaaukk?`}4oS%8um@SCF#P~X44lM3%0V%v0Mamhem;ld^nd~menxOWfHi;v z0<7T#$PloG2Ouj!W`GlMK_M(07JyjbM0^3n0(pO05r@4Xw2G{RRMQ2Zf@Hm8AeKS`2jBF6AXY*NEQ5m+OqIv<6(t<)g5Yu+`yLFye%IqAFtgi&73brkNHH1rcQ&{;+ITRWN-+8HXIxv=!4Y zlyS&Uw=d#gXR2zL{sShM#1Sw(qnsliDl=jFg>nu#rpY1GKa|6jPne!i0THyQz#`ay zCMYwplV|#c3J!ijXz0SiscOOW4^V>yDxn5(Re@^`kXNUbbBKX#j)2KcudC!xV44~+ zeL*EhJR>+uPKX2rUL}Xt^n@x%nS7y&gMa$+Dh|!*3N;-3)9-^=4%Hm|jNsz3Ad16{ zDSrbfHD9UbP==KIAcdf0r!gI@5L{@2jFSXcH6W*e@c$dOkh1FHjF9OMsyW1`U#|h> zbrDc1H<%t#%OTGR>CfD#zA?R_mcyPCT4z@O0C6=yc{`kuW4cEjhn&=ONVE4w?gr3o z2grO7{(qxJ0hE$r`p(j)W>DSz-1y{uXZ#Zj!QZU#Rwcv{LK_e__f=k9)a9{>Bfr{1X2~8a4)8m^s zSSPlsfb1^kgr?Zqj_D4~9O{fbkaTF!z`;HJa5IMu-vh3>qS^R^<|K`y3<(!v8NW1y`(yX6$-! zyAjbUT>>qKG9c))@_@fOl`glm5X$%pU`*js2n1=cV51+@<5tsjuiHQc-(kl}{Nl;Qf#v;HJ+18}*R5<*2hn5fZ zkb*(@5;LR|dx;qw)Bi8ACQNJ;@%ewF9%A4nC5XkBR3Q2Ck_tG5fD8rU|CdytC2Bn+ z|6VeI^o1{3AA!i5rcAGoRtuNb6e`kg)wo$U(! z91imB1?xE43)XSA7p&uIFIdOjUa*d*y zJO$*KW?b0r;VH14hmm7jm_WB0%fpvN6Q=jq2&k|;eAzT%`gRDb=<4?SH3Cz(K+;pT zm$wVpFoKv9wr}qcsLo^6&f(Pe*>3(_U;+zc!uAut1qzr1{qoBc3{4e`3=B;a42`Tz zEw_9A6A%&wX`4DdURdxvlg5SZ1|ow0wHO7q8`ulF@l5ZVAS5t-pSR#d#u?KCd<4s< z$CnAnPk-hkD9E^A`Uh7*@#*}&f*gzz(;J!v<)@qb3TiNROi%C?6la_;y~0;eUJ#tf zLF*qu;qw2XTf_7fzJl_M5z`ZF1;wV{^A!Z`Z1~_SsL$9jUBORKf4Y3CAp7(%KS4vr z3DXtAh2*F6+X(Sb-lPOcw|e+{Pq$Vfq74LGkJLg9Hs2JEjW+3+gcmUD)mr zEXdBp$T0muvVbV_Lt&2T388}W@a`74>iPdruw(j!P(gJ@jp;i=1?3qXraSBt5S#uk zRB$Jw#`G0og6fPjre6pXRG+?oqM*cd{%}EYCb8$Brj|#zptvBo%s_ZYY{vA0aKZVE zGo}kf2+A`am~IduD9$)z`h-paS>}ggGp1)m2M==PnC=iID9^ZIdP0<-I3ojyCqBJDN|1vKlB*vuNaReTN(-jHh!&Ke{ybVxXu4#KATN{jiRl_Kf^tmKFQ$9M2+A{ZOwRyO8q+&K zl*e>|WdiEc&&LSPV9bE9`(p(cFltOUh!a#}lKn6}B2G|U5Y|P9hPmvI=@Y=xKc*+l z77(9)K2DH>QDORlbwXm(-^B@XGAc~}5ho}w2rdf|@hj&seS?vZ*mS#iK~6@G=^pWd zc1&_NrYEEbh)tgtFDS|AF?~n8pgLp4^amhn!E}xUK{Y1%6VnY61ofEYKTJkutWBP#vLC_k<3I3oIm>_7#IAgj(qM#p>!h`7riGu!&2Gb8D3dS=wOjk$} zbYoI{F#Ut7pxE@fByhf1kR&M2m@xf7l3+b!!*qvaL3L2l_XH_O7W4#VoJ1kL>F;=j z*r)$Z7W@PfND)ID!}Nqq zL32ih=?nM-#iy^&6jYc#JyTF(`g0KLJcuQqB`80gElW^xdU%$g1S7-rf-H!cASz+{ zg)BjJ#tGB(1m&jdtrKEreyDL`x_$I;?w)H1=B&CAK8NWj60?mI19>x z6iv$)6q`OTN6?TlWBP?0!F0w0(*^Pc)u+ej3R*B~K$YnjOjjrt6q|l7SI`rpPJa6O z3j*@f!}0_L!GR17L!qEKXhFa~P)aNm zQ~;IPg@Wpg9@8a?1m&l1FBIgTUgs>x&-_qh#`Fn+LSobNiUcJY8>V*@3HC#5xz;Es zz@(`$-Jn?TJVb=8L{N~?VtT@60k!FNC4!M4&shtKO z0S?=HWrC878ry%A3Cc4vT1=Oy5L5>xy$V5d!KX9j8KJXAH9exOniw3lu}nV=YxX~*;r zm4fP^1eYQxHeIg@Y?4ExpxpGZDnSEAi|P7ag7VY#>I4L*+ouTfPk(13Bru&XPJo^H zp@6~k2UUWgS=J8;AfHu(11O+cP{NKVX718XsCbm>y6sD9>mCO8;@7q`#pIl()(RB^WcNgV-SLWrE_2C#D-T z2-bmBG{9=@XAOdqj11En!4YE6C>YMzG2P*pfc*6QCISBG+ZqK8vDmlZnxNQpz9vCU zNQWO$CTh)??$IPD&p2bc!*NhnX%ggQw3yz}Bq%@qf3YC{^lhNDvkXM|l?n1s&-EAN zWU|>X{X>(W8I#qA=>;}I;?wP$1(!29{+PbOS3qp~zh*&BMh2utg;|TB1W0K>i=aB= zis>IV3W`ndYY`M=WSG97MbMvd!t@Uz;MUE#HbFr~gXs_21oIgyK$%lq64K;+AOvZ%KG*atAj^5h3JWF}1yT^_V7y6+WxTk=kJ)v7rUJ%^QM-iUTEhvs&pSo8}-vLq$jye?8FS^0W zm7_;ckIDPQbPF*3WBSKv4&jMCyxTi^1o@d1VUYz|>&5W@p^rmOW?rgtD+APRei74m z^g(KR5Vc_XgFZp=>GJ)8;!J)grd#w2$}#!$s&3Auhjeb53k5U*hRhJHcu>F@gm z1sG>cn;@vpcwpKDLGkJK69oC0{9jBD00{|zDADP?69k1AEv7F32_-;;?t+9mrhfnl zZ2-xLOxKwx$i)miC@9Z3e`2Hj^#2nDIT(+_ zS??z{ii5=1nS%HyHmXCJ_6TPF#zqD9=@(`SiZeD$e=!rB_XK7Msxd`gm~H{4e@su9 zB?wxFIRQikOg}ISTmcBo5tNuVTTq;F#dHvJy1{HgF{Y>+5KaO}f&;>y0AgD}*atxD z3<&$fY;Xh#%n>x3&NoL;YI?#PLGkJCa|9))PnaVp&Ir~bIsM=qK`~HkWR9T3^bd0c z#UWJ(0|NtSQ3k{Rhus&ZOUxCN6N&-P>L8LpTnmi-(aLraOQn9YB(d8Pf|u z9ERx~^91D`!J`xirv!jI5dR-Aft~pOVE|;c!vkh;JNy5`0I1PS5b=kB4AWoC12r(V z3(OacV`PfEFuh=bU^}D1bb8{HJg*?$x2fAK#K6G>to0$ui35KJ0dIA%sb1WB>lfnoAa4G>gZMws9P=Pc( zW4WMyJveD1JQfHpB5^q!J;I?LVSWgS8nNl?RtR!3R!mn|D=21!?%GI5DuQR=KxlCR53LK+ zRtn04#zn?-#X-H*a?qed zV8V2V)q-L|(D-@i51v{0|1jmi^o-TuQ}5Mf(3 zxcT(|0RuST85qFXjp6@8IcSNQ9Wh;Fji5UENR7Y8^n^8n;);;O439o&^ujZLEW`AK zb%NrSFlCU~h9}8X7#|{!As*l`eZqcFlXi`uBB(98R#1HU{1yT6>3(YkB|WK@p{8$G zD=06CRM-DBOro-b4h8o=`4$fD4hH{1v7PY!DP@bO1*@bT;QjcFeA!R5$ zE2A5W(>kd05T0q+h!~WEct#zxuMLzi?rankW}E@)R>?b}RbJ?2H8hXHy@ehZ{uR>$ zHi3(~0uZ%f`h-n_;-GOg5alub0Ek)urWB#IF0_XQtA!sTsn+4Ss!L=)*X$31g z{GlEUZ~!S&WAgtny!=HRFY(*w4EMh3PCc7R5yKrPXP=>gjX)fqdcS8NxY z&)6|tVuzqTW5@Q09fIYIpo(Xwpu8Z&zwj1q)`@Am1mzh6rYr0cRAZ`qFr6`;LwI`h zE5sDlo2?4z?dEuXg}R9>4w2v^T%i^eDn-?r9;Mo+~RD`xY;Pqw&XI8>#EM`SLn1123 zpt&SCSt7DWG&HO$UrbjxBPhpI`C_`m89_S`-EcweI45Y& zC@{U?oM1R(!SoX#p2KvG^Md}2D?nweHms-c0Gf~CMHnpcz!Fuo!1M*@1;Zf&i~k=m zK&|lim|pN)KyA9-1;Ip^9I}=RpwfK0z*X@01Sm&A0tzYaAhqX1e}(BD7X|eh8>UZq zASi15Fb3MWh9*`__d)a_;#y$(fs0_v9Ht0}PuIUB$e{^Ug5fo&IFdUPE(xYXb11Ap zg3CHg|8Yq$9*gG=oCVF>Tow#u6qtVDG9;2eTo#n)1g8aX>qz2?pgy`zzXou4NTRs{ znj1j@(QySH5XwXZ#PknW1jV5%X&(BmfS3+(11xwRFhUv)52FR9J6shMW9mLJy+Bh) zZhF~OK}kl5=@YIB`cLn-6VjMIf0>Zrbct(%=NT7FGZ9kX&VOA{0d)Sj!3{w>rs*H1 z7u*0%L~WmNLr|ZQ(O~<5o1kfhhUpJ(foGisZVReIDnrBw&yESxJ#GuCG0plhz2LUs zaz=*f5_iCp0}git^BEboZ@41}KHvJoT|slkitQTr1kD*4H*8P1FIW$nuz2u5Fr9J7 z^aFxIa@*4$3R;48xh;4E9?`n+NHCsp!gPbjf?-UHK1}a;ET|8f+Qm`Mo(Cwk;gy}C{3WmdK@py0(_y5C1 zKc)w~5=`SlICc7gSAu3p{AsTR?dlQIpz;f(jjnV(JV+HFO`nGfkaojEMaZ1WLq%xA zf>MVnLCsNwn(qPbg4F+is03{s!YojMG`1cJKxxR>{QrkuP<5hEhkAimH&7U2tPKAj zdYzbl;EkYNz1Igw(0fCh!T+GO&_4+Op(wQ2j)TT<0yKmY!2OK>4;i7=wE|=e>!Ca} zu_}N^xBox%hRH)|IT#IYk^QfK$O`Ul|9|ieV(~+9s748JQ2l@C4s{4Dq;S!q5Q885 zBq@aIDGW*m3ia1hY5oG4CNi)O;^UUH8xnI!5IQt;FRaCFq04 z&}N4+$Mg?hz{3#&Uj@xU$GU$N6cdsLkMjS2C=D&gr7NZvd=->egjNeM%Q5Nc8@>vP zYeGwB8EBa&4b9;)P(MjS-69h({liz-a=!l$y`f%R^kcfjH`sLB|A)#@T|zgedwdhz z#|Up%`Krd{x+!1 ziy>tYd{B5BB-9?TLd6-Np}oCg`hp*V>Y$$G55as+xGB>eehSJd?E=RcI7~qMtRC)! z#>Gyk|965G{j>akxKm(aqYKObN0TN@|L_wwRq_AfPKad>cOICo@k>xnXd>9S{||RT z3d~0nZ%mK)CFsxSFnz@@&}{4U3%>;Q87EBpEvT;v4q1fFd%*nv4|hX@a5pq|cTbqu zsKWFAA;hKsAMT8p*l5G@|KaW*(@*>sl;?ydzTGpXfA}rv#Dng07Nx_)^JKqXJQo+Wn2MTr71bxkX1;O>Bx=g0Rn;&(-T;Q)IrAxu?m6u zzy?o1t0h^5I2or;zriXb&sZ`22S~w==?ZK@YC=cBA%z&NI{IRI1e*}XB;nB)(eLI_w!1U*ALK2KKrm+iwR!%Fh3&}AZdobMr#ATSC0HPG8H-IRI=?mC} z)EN_|p8!!E(?75a?PuJueFKM(I3weR=^t!Bv#M4B(_e53y=QEgZZJv6Zn_w^kS1fn zb_Z^ubVf*uLO9WR!}NrD0r~0s8wKR2`(+7mO#jCtl*qVXdIGPIJSVg~Iwmk(Uj(%bD?+owaY!E#w17H4F{On8wqWQ?#`FRKA$dh;GyDvs z)&77%A|U zwg(6a$ulxCOfL`?0xe6O0HOk>ZvasR(=ULi3DZA-s14HvM1A3PSgcbLgI`9(>tVu)FHzq zh|s(xF#P~T_6A56Ev#<|Oc#&_>s62v5}j@C;{A$5eF z=?>8XV$jlzBU zAR1b1Jv=bIKvhT{G-#(Pq&~f0RY-992~{C+(0X=NA$7(D(>c_H)R>;0m~NmZB**mh z!}I_(a55`U6B36^`@ju-_)KE@3^gJ7>FsJleADOp3vf(7t0tr*2=+5VmGg#a>O$KY zH%u3(77*orXaz~>51%zmpKwq}W15DLI3&j)bUXt)9x=9|Y%twILr6~QIk*XcPzN2l zc=)_wdVvNweJ0p~X2LXt8WBrfCWFGai^e zK}$%C>E(&(6PN_Wrti}dTF7XzJwaQ@o)NT2SVzc>>E(%OEuh(b9U%cG!5iBJbcNzU z!-@rZLUK%kH>OX}1LxobeNeidW+LP|J=Z|!7GuP82V)_->1~EW2~6)_Y%>v(XPjPN zBFI18&r48X`nnqeg465k1lX7#zR3Wo+|RgTn~9J)BV)#N1$`m0>3*g{CndqH2ZUc= zKr6lXAEq0a3CS^iy)iw&Oh}wDVY-2jkoolaW$CrrO!Bh=0~VS2$o0g34awnEz(XH3_y6G{gq1v{ZQrf)B%f3On*E%Ftx z2j^J>d!cmDe4x3I-1cquLYj<>Gp0Xq5PHuTG5vz0kQx*3i|GXopcTVTLOVgmn}N3H zI0+d*hR)zFf5bFlx`MONJSL_K(+@Zc$uTkAnEt?7$ewY+b_Exqa7M-%)7}e+P49CR z`pDQYy}?Z=oiSnh0}mmw>Hpk>I6#r};kuCAbTxOOM$nmY)k5;qQ6;VFc%tK&t&bcZYfvF+$|`e!)ygefoSKA$2D12hiP9 zK0=C+!sY)%XiPogelcCZR|qr<3tobJ&qqiRG(YPrB#uSp3|}ENCY~SD4}f$uOn(8Q zR!kT06VhYiy)fOuPYATKz5qlSOkV(^5~g496EbIICGcs|N@fFiK2!h!+wANfiVL z*@5T{0pR-AAq>>=4-i_&$N}1x;Ln&b{Xw9RKBL5RfgmB!ynlkepxkt~AR$9Wj_DOa zLV8ks;Bfo@0Nie3fY0?j;=3^YKoH1nkcRmK=z@qxd^4sylnIJW{}&|0!Nm7tdcYk} znHMa?0dj>#FgPiC1cS2Mh3ViWmuGwhD+(e;+KQ0NRihBBaJ7d|`US zFF}dv0U<(SLc(CX5aA$rV|qa-NE}>{z!%#;;>(!6AVf$U(rQ2wwwQh(R0y=p=|PB) zJfp_6P$BT1mrx-+A(0QDS{l=65lHzDTgMMK8tf8mM&Ae(QfE|{7AEwb@xb;EVM6kZ zXsa$CL0l~^h}C2W&B@IVSN7(?5g>DQrIxAyf}4VZfY>D4~8vv{hYD zd&Gn!!1W-KTQjB`#K1~_Bw@Hc1u;UP#pKWwallAWZu+qpAxTDy=?`Lr`XMtq{~s_y zny`;V45l~43Ylp^JLT}nrKym9!vhA1;?$DVyfWw-@kcTN(;vhN9cPS~z9LRYo^io+ zhx-C@)1So&X>vk3ua7tbrc11epfiYyk|0BL1(-$NNnR7zA?4ZQ@AVJ8TF<`nz zqL3bw!i(t#N45>Ag)XC&q4m*^(v=jJBnrS!lWt&db;ZGJT4)g-3x02vSN4S{TCV9>U1 zmQaFpKQW9~lK>l^mYI{<304hth8nnb!*spcjOiBXLh_*VFTu(o%f26}gPR!0K>(8d z|441d^oDdHF)1}1u2mP9z9C%*w1X)i1D@UCepeTmmLViA2@W_+r>IYuZjd1)$E5ya zI!Lo4$VQ}qQ=gEMnV7DN;WKq`z+xJw!7+VBhLF4_IIqE{J0EF4GYKMcLH7KAq`@)$ z1ITeWVp*eMxB4;nwFKgbjkmjn-RVVb5{FkK)^NKH!<7EJ_Pt64BTAxlUc-lj!MgPI?v zPskFIkAy`W)NxvniU=v6fc*OZk>-c|)Lh-1{PcW#lr*RXZp~x5Rx4vVN4Ah0lhzGz z#6v3yc&gFLm>!TVBrXZ=$Yas{V0uHgkbER~tO60w+Ti9LX2@whC@oIag+`7&BL8WF zhpjM;*N&L}BU?xEp%D-v!kSnCF3Ckrg)4--eONT3g_B-FL2{;UK~a8Es%~y#adscHoYe!@v6zn2 zyD_~YUr1jQ>@`Fx)dzbWGnMMyn0_H&NL~_0tm-FB=O_?Ti_!-d4+!H7!101?5jshWdc!q~oj0QMdtN)@nxhOv;M>i)wIlCKC*cpJE z514^rkTIR3P)IGx0OowC`H*$#n90Z>BPTyGMK>w27`0L}z~Ov@7t=cmk(>`LuMBZG z-{3_~W=Tm-s%~mtN@il7JuEH_aX8;FV>(BXkXn=>%=ysLRRJ7Zm_>qN1}M~Zi<65| zQ}d95#}J3}4PQ*}C=!x~XELbqxT<`^7t=2k35iSMaII0ov|=H-D5DdgjE_hv#?XX~ zUJn{2fXc`8)V$Q9%w(kU(FjMvHo7srq8O?Cf<~n=j`GXs1~@Drr6W>U7=yzOGpQIy zO#e|Vq*iYXb3QaMaD}yT1latpfT#%2u>qpY4|x-& zU#J#Z4jM-F6qK7jtwtykG^$x6bR2S^hbr?U>xAhKYK7t|hx z02)NQ-zsDP-8%Eg4q7tlfGel}k6>Zy{A0R7n-FN*$c)`M=BNCb8NJPu5k=n|5LH!-1s3SCz5$l76hKo@B4VZro_ zZXt8V9n%+dg9ioL@8=?Qs) zD`|xDd~Qtt&;w350=+_cLO$S7W`G@>^T=n#^a;ISV^;JEfexIw&?^MmX7&NZ+b~_C zPe_i*_r`RKJ|Q(G-yhQx`h>vybU{?W^aFiDpjGe>`oP0!7aoF+HRu=81ZCBog6h-P z_X~A^qM=eqmHCn1is=axgyfj~e@t(fAmk_Y9-OlNKZ34Xg00ql6yO0F`Qo1_qygGI z13oqg_o!BY$MhK!h2%i{mBBssYZHYcA=4@KkRjs#51~^e4=-^{KQKv19U=@50npJw z0e*sJOxz2me^@UhKiz+_5NJg{_)sH>=^c~7(_9-S3;8n^Oq&7@NQEgv;fx2SJ5&g& zGCvAFF@3=lAwQ~zaB*7>E6M8TkJdz4gFm1Mw z`SkudLK>h`W|9TureB*Qw2*Pb^nx5g(doT&g}4|!reByVBtCupTp9r_9z~l8U8;?nAoVw^8ZnM#KcCI=`jn0IHuby z5K`s@_r?A{O5m8Du|NoPp2vm-Lh72}Za-oWWBP;u|KJeaoXp}9l-e|5#XzU- z9-%tpf{Ul4I~LX8E;mBmG=b>}3x&|nAb6CpVETlGLgwg!ngA|#C8mD>X@QM`KuZtM zm0OF1%+U8@KT4DUmB~`mn-&R)f`(onfohY41=BYy5(;BVI02f=xmjaB|`d& zur4w)NEvJm0s{jBSRAz0U}B?)$p1&F(1v;{xY73iQL4qnMimy2`iYG$JpUh6f%^&n zA7wt6Ua?e2o)bKX@&8e(!}JA9g~AypOrKyUq&{7KnNS4d4hVbxGVsjTa-sE%2c~aW zE(E&T@dAjNF#W@Fa6Xn;A(YNIV|v31p?pVhJR?^5KZDfa51_d$Sjy8T+A0!EGP8`cWxF*2o{nEqg$P&{M7bcgjq{frFLFRTYwi67Pr zxkDByzze-cX%5ppHVEl4<^Py2ut_M63sxF~%-A3#KK=Z9AqB>SX$eANOa%_p4K@n7 zGwy(>{0PlrAe9@1^g(ARfDHHyO)+UFrdMndl4B~o0Ev?Qn}iA=sTr}yjAz1hhs{Fg z86&0(Y!Q-Y+%Vl>i;$R5F>3kp&?;d117;!7>8@LZ1g6(+5%K~Z?zRm)t7x!INMpLd zRv~^ygXs!eg~HKf4r~?TV=8$7o_Cu*Z;Ox+s7U1He!vKB|Nei-yZU$kcBaQfDf=0ICBdrXScY1gbf~O`reU zg)|sfKu%7u-yx*WRQ_Um!49G4kl7eS1f=eQ{S4_@h`i`AK@}Rjo z&>0NxcM5rc4#uef%{lB6GGnUzF?~a_fcW(JyM*MKGG9zTuuI6Calv#0Q_$H~YlH-+ z|KBFSKb`NW5Z82v-9qA$;IxjgJq416K_OAFTj;qYxVXeFy+L%s!|2BqBedk2I#r>{RCBmvqWpC%{<67U2SdZC~&Zcv!+a8O8%YdW+x zX!tO_;GmEgQ^SktAEto<@t}|f=nz|wdzv7vXz^OyvFgUFkvbgHg9}3e%CLS3soC9TPHS^q6*B zC>&JYfTk?Vjtg}%9+-9lN#q1r?aNIv9|$?$N}6=^HKy z$qRzJKZuk!;l*@^KZ4?r!>_)G}!UB(+TbF@3^i zA?N`v{~t{Tm)QRwO-`7;=PhP`c)h+{Elu-TZ>oyu_rORQMRwRIrusU;y=b8?FiYL&FeMF)a8l zAV2;4H6aPm5iQq+z-QM?5|ZO`g;bsooi|JmxGoeYG!5(txJi!`BBmd>E+j5k0nYL8 znU?7V;Mkx3|GJPm)3h5PH4@VuZV1Uwe|}v^VtV-vAq`O0y&(iTr}M%M&_sH>z)hic zft$kZ0yjn41#XJA3)~djE^t%)OWMQ<7Bc@YOox=N7p6lFn!PX`+~WEFfAgZ=*h#pVYa8+jDA`y@(ed1y&M&UC#f0dBYczbH`x zP6#&|p@+scfHgBPaQ&ayXgU4nN{L>kSexk?t0e3hHKso-=8&F#c$Gv7qX2~MyjsE* E0O0Qr#sB~S diff --git a/roms/openbios b/roms/openbios index 038aa78d3c..b8dea39718 160000 --- a/roms/openbios +++ b/roms/openbios @@ -1 +1 @@ -Subproject commit 038aa78d3c331731733378a73e778ee620a5b9da +Subproject commit b8dea39718916f4d7d391cd1664314d52a45b872