From: bellard Date: Sat, 26 Aug 2006 18:00:36 +0000 (+0000) Subject: 16 bit divider X-Git-Tag: TizenStudio_2.0_p2.3~14082 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=508d92d0573319d7dbd827f6216aec44c1421832;p=sdk%2Femulator%2Fqemu.git 16 bit divider git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2138 c046a42c-6fe2-441c-8c8c-71466251a162 --- diff --git a/hw/serial.c b/hw/serial.c index f36beb2..16dbc65 100644 --- a/hw/serial.c +++ b/hw/serial.c @@ -71,7 +71,7 @@ #define UART_LSR_DR 0x01 /* Receiver data ready */ struct SerialState { - uint8_t divider; + uint16_t divider; uint8_t rbr; /* receive register */ uint8_t ier; uint8_t iir; /* read only */ @@ -310,7 +310,7 @@ static void serial_save(QEMUFile *f, void *opaque) { SerialState *s = opaque; - qemu_put_8s(f,&s->divider); + qemu_put_be16s(f,&s->divider); qemu_put_8s(f,&s->rbr); qemu_put_8s(f,&s->ier); qemu_put_8s(f,&s->iir); @@ -325,10 +325,13 @@ static int serial_load(QEMUFile *f, void *opaque, int version_id) { SerialState *s = opaque; - if(version_id != 1) + if(version_id > 2) return -EINVAL; - qemu_get_8s(f,&s->divider); + if (version_id >= 2) + qemu_get_be16s(f, &s->divider); + else + s->divider = qemu_get_byte(f); qemu_get_8s(f,&s->rbr); qemu_get_8s(f,&s->ier); qemu_get_8s(f,&s->iir); @@ -357,7 +360,7 @@ SerialState *serial_init(SetIRQFunc *set_irq, void *opaque, s->iir = UART_IIR_NO_INT; s->msr = UART_MSR_DCD | UART_MSR_DSR | UART_MSR_CTS; - register_savevm("serial", base, 1, serial_save, serial_load, s); + register_savevm("serial", base, 2, serial_save, serial_load, s); register_ioport_write(base, 8, 1, serial_ioport_write, s); register_ioport_read(base, 8, 1, serial_ioport_read, s); @@ -444,7 +447,7 @@ SerialState *serial_mm_init (SetIRQFunc *set_irq, void *opaque, s->base = base; s->it_shift = it_shift; - register_savevm("serial", base, 1, serial_save, serial_load, s); + register_savevm("serial", base, 2, serial_save, serial_load, s); s_io_memory = cpu_register_io_memory(0, serial_mm_read, serial_mm_write, s);