serial-isa: Use MAX_ISA_SERIAL_PORTS instead of MAX_SERIAL_PORTS
The ISA serial port handling in serial-isa.c imposes a limit of 4 serial ports. This is because we only know of 4 IO port and IRQ settings for them, and is unrelated to the generic MAX_SERIAL_PORTS limit, though they happen to both be set at 4 currently. Use a new MAX_ISA_SERIAL_PORTS wherever that is the correct limit to be checking against. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Reviewed-by: Thomas Huth <thuth@redhat.com> Tested-by: Philippe Mathieu-Daudé <f4bug@amsat.org> Message-id: 20180420145249.32435-11-peter.maydell@linaro.org
This commit is contained in:
parent
97274d0c05
commit
def337ffda
@ -39,10 +39,10 @@ typedef struct ISASerialState {
|
|||||||
SerialState state;
|
SerialState state;
|
||||||
} ISASerialState;
|
} ISASerialState;
|
||||||
|
|
||||||
static const int isa_serial_io[MAX_SERIAL_PORTS] = {
|
static const int isa_serial_io[MAX_ISA_SERIAL_PORTS] = {
|
||||||
0x3f8, 0x2f8, 0x3e8, 0x2e8
|
0x3f8, 0x2f8, 0x3e8, 0x2e8
|
||||||
};
|
};
|
||||||
static const int isa_serial_irq[MAX_SERIAL_PORTS] = {
|
static const int isa_serial_irq[MAX_ISA_SERIAL_PORTS] = {
|
||||||
4, 3, 4, 3
|
4, 3, 4, 3
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -56,9 +56,9 @@ static void serial_isa_realizefn(DeviceState *dev, Error **errp)
|
|||||||
if (isa->index == -1) {
|
if (isa->index == -1) {
|
||||||
isa->index = index;
|
isa->index = index;
|
||||||
}
|
}
|
||||||
if (isa->index >= MAX_SERIAL_PORTS) {
|
if (isa->index >= MAX_ISA_SERIAL_PORTS) {
|
||||||
error_setg(errp, "Max. supported number of ISA serial ports is %d.",
|
error_setg(errp, "Max. supported number of ISA serial ports is %d.",
|
||||||
MAX_SERIAL_PORTS);
|
MAX_ISA_SERIAL_PORTS);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (isa->iobase == -1) {
|
if (isa->iobase == -1) {
|
||||||
@ -138,7 +138,7 @@ void serial_hds_isa_init(ISABus *bus, int from, int to)
|
|||||||
int i;
|
int i;
|
||||||
|
|
||||||
assert(from >= 0);
|
assert(from >= 0);
|
||||||
assert(to <= MAX_SERIAL_PORTS);
|
assert(to <= MAX_ISA_SERIAL_PORTS);
|
||||||
|
|
||||||
for (i = from; i < to; ++i) {
|
for (i = from; i < to; ++i) {
|
||||||
if (serial_hd(i)) {
|
if (serial_hd(i)) {
|
||||||
|
@ -1524,7 +1524,7 @@ static void pc_superio_init(ISABus *isa_bus, bool create_fdctrl, bool no_vmport)
|
|||||||
qemu_irq *a20_line;
|
qemu_irq *a20_line;
|
||||||
ISADevice *i8042, *port92, *vmmouse;
|
ISADevice *i8042, *port92, *vmmouse;
|
||||||
|
|
||||||
serial_hds_isa_init(isa_bus, 0, MAX_SERIAL_PORTS);
|
serial_hds_isa_init(isa_bus, 0, MAX_ISA_SERIAL_PORTS);
|
||||||
parallel_hds_isa_init(isa_bus, MAX_PARALLEL_PORTS);
|
parallel_hds_isa_init(isa_bus, MAX_PARALLEL_PORTS);
|
||||||
|
|
||||||
for (i = 0; i < MAX_FD; i++) {
|
for (i = 0; i < MAX_FD; i++) {
|
||||||
|
@ -274,7 +274,7 @@ void mips_r4k_init(MachineState *machine)
|
|||||||
|
|
||||||
pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
|
pit = i8254_pit_init(isa_bus, 0x40, 0, NULL);
|
||||||
|
|
||||||
serial_hds_isa_init(isa_bus, 0, MAX_SERIAL_PORTS);
|
serial_hds_isa_init(isa_bus, 0, MAX_ISA_SERIAL_PORTS);
|
||||||
|
|
||||||
isa_vga_init(isa_bus);
|
isa_vga_init(isa_bus);
|
||||||
|
|
||||||
|
@ -648,7 +648,7 @@ static void pnv_init(MachineState *machine)
|
|||||||
pnv->isa_bus = pnv_isa_create(pnv->chips[0]);
|
pnv->isa_bus = pnv_isa_create(pnv->chips[0]);
|
||||||
|
|
||||||
/* Create serial port */
|
/* Create serial port */
|
||||||
serial_hds_isa_init(pnv->isa_bus, 0, MAX_SERIAL_PORTS);
|
serial_hds_isa_init(pnv->isa_bus, 0, MAX_ISA_SERIAL_PORTS);
|
||||||
|
|
||||||
/* Create an RTC ISA device too */
|
/* Create an RTC ISA device too */
|
||||||
mc146818_rtc_init(pnv->isa_bus, 2000, NULL);
|
mc146818_rtc_init(pnv->isa_bus, 2000, NULL);
|
||||||
|
@ -298,7 +298,7 @@ static void ebus_realize(PCIDevice *pci_dev, Error **errp)
|
|||||||
0, NULL, 115200, serial_hd(i), DEVICE_BIG_ENDIAN);
|
0, NULL, 115200, serial_hd(i), DEVICE_BIG_ENDIAN);
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
serial_hds_isa_init(s->isa_bus, i, MAX_SERIAL_PORTS);
|
serial_hds_isa_init(s->isa_bus, i, MAX_ISA_SERIAL_PORTS);
|
||||||
|
|
||||||
/* Parallel ports */
|
/* Parallel ports */
|
||||||
parallel_hds_isa_init(s->isa_bus, MAX_PARALLEL_PORTS);
|
parallel_hds_isa_init(s->isa_bus, MAX_PARALLEL_PORTS);
|
||||||
|
@ -95,6 +95,9 @@ SerialState *serial_mm_init(MemoryRegion *address_space,
|
|||||||
Chardev *chr, enum device_endian end);
|
Chardev *chr, enum device_endian end);
|
||||||
|
|
||||||
/* serial-isa.c */
|
/* serial-isa.c */
|
||||||
|
|
||||||
|
#define MAX_ISA_SERIAL_PORTS 4
|
||||||
|
|
||||||
#define TYPE_ISA_SERIAL "isa-serial"
|
#define TYPE_ISA_SERIAL "isa-serial"
|
||||||
void serial_hds_isa_init(ISABus *bus, int from, int to);
|
void serial_hds_isa_init(ISABus *bus, int from, int to);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user