On 2015-05-27 14:19, Hervé Poussineau wrote: > Signed-off-by: Laurent Vivier <laur...@vivier.eu> > Signed-off-by: Hervé Poussineau <hpous...@reactos.org> > --- > hw/mips/mips_jazz.c | 1 + > hw/net/dp8393x.c | 18 ++++++++++++++++++ > 2 files changed, 19 insertions(+) > > diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c > index 648654e..9d60633 100644 > --- a/hw/mips/mips_jazz.c > +++ b/hw/mips/mips_jazz.c > @@ -282,6 +282,7 @@ static void mips_jazz_init(MachineState *machine, > qdev_init_nofail(dev); > sysbus = SYS_BUS_DEVICE(dev); > sysbus_mmio_map(sysbus, 0, 0x80001000); > + sysbus_mmio_map(sysbus, 1, 0x8000b000); > sysbus_connect_irq(sysbus, 0, qdev_get_gpio_in(rc4030, 4)); > break; > } else if (is_help_option(nd->model)) { > diff --git a/hw/net/dp8393x.c b/hw/net/dp8393x.c > index 51e728b..ef1fb0e 100644 > --- a/hw/net/dp8393x.c > +++ b/hw/net/dp8393x.c > @@ -25,6 +25,7 @@ > > //#define DEBUG_SONIC > > +#define SONIC_PROM_SIZE 0x1000 > > #ifdef DEBUG_SONIC > #define DPRINTF(fmt, ...) \ > @@ -156,6 +157,7 @@ typedef struct dp8393xState { > NICConf conf; > NICState *nic; > MemoryRegion mmio; > + MemoryRegion prom; > > /* Registers */ > uint8_t cam[16][6]; > @@ -816,12 +818,15 @@ static void dp8393x_instance_init(Object *obj) > dp8393xState *s = DP8393X(obj); > > sysbus_init_mmio(sbd, &s->mmio); > + sysbus_init_mmio(sbd, &s->prom); > sysbus_init_irq(sbd, &s->irq); > } > > static void dp8393x_realize(DeviceState *dev, Error **errp) > { > dp8393xState *s = DP8393X(dev); > + int i, checksum; > + uint8_t *prom; > > address_space_init(&s->as, s->dma_mr, "dp8393x"); > memory_region_init_io(&s->mmio, OBJECT(dev), &dp8393x_ops, s, > @@ -833,6 +838,19 @@ static void dp8393x_realize(DeviceState *dev, Error > **errp) > > s->watchdog = timer_new_ns(QEMU_CLOCK_VIRTUAL, dp8393x_watchdog, s); > s->regs[SONIC_SR] = 0x0004; /* only revision recognized by Linux */ > + > + memory_region_init_rom_device(&s->prom, OBJECT(dev), NULL, NULL, > + "dp8393x-prom", SONIC_PROM_SIZE, NULL); > + prom = memory_region_get_ram_ptr(&s->prom); > + checksum = 0; > + for (i = 0; i < 6; i++) { > + prom[i] = s->conf.macaddr.a[i]; > + checksum += prom[i]; > + if (checksum > 0xff) { > + checksum = (checksum + 1) & 0xff; > + } > + } > + prom[7] = 0xff - checksum; > } > > static Property dp8393x_properties[] = {
Reviewed-by: Aurelien Jarno <aurel...@aurel32.net> -- Aurelien Jarno GPG: 4096R/1DDD8C9B aurel...@aurel32.net http://www.aurel32.net