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
SerialState state;
} ISASerialState;
-static const int isa_serial_io[MAX_SERIAL_PORTS] = {
+static const int isa_serial_io[MAX_ISA_SERIAL_PORTS] = {
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
};
if (isa->index == -1) {
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.",
- MAX_SERIAL_PORTS);
+ MAX_ISA_SERIAL_PORTS);
return;
}
if (isa->iobase == -1) {
int i;
assert(from >= 0);
- assert(to <= MAX_SERIAL_PORTS);
+ assert(to <= MAX_ISA_SERIAL_PORTS);
for (i = from; i < to; ++i) {
if (serial_hd(i)) {
qemu_irq *a20_line;
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);
for (i = 0; i < MAX_FD; i++) {
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);
pnv->isa_bus = pnv_isa_create(pnv->chips[0]);
/* 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 */
mc146818_rtc_init(pnv->isa_bus, 2000, NULL);
0, NULL, 115200, serial_hd(i), DEVICE_BIG_ENDIAN);
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_hds_isa_init(s->isa_bus, MAX_PARALLEL_PORTS);
Chardev *chr, enum device_endian end);
/* serial-isa.c */
+
+#define MAX_ISA_SERIAL_PORTS 4
+
#define TYPE_ISA_SERIAL "isa-serial"
void serial_hds_isa_init(ISABus *bus, int from, int to);