On 08/11/2011 01:28 AM, Richard Henderson wrote:
The only non-obvious part is pic_poll_read which used
"addr1>> 7" to detect whether one referred to either
the master or slave PIC. Instead, test this directly.
Crashes mipsel-test from qemu.org immediately:
/* XXX: add generic master/slave system */
static void pic_init1(int io_addr, int elcr_addr, PicState *s)
{
- register_ioport_write(io_addr, 2, 1, pic_ioport_write, s);
- register_ioport_read(io_addr, 2, 1, pic_ioport_read, s);
+ memory_region_init_io(&s->base_io,&pic_base_ioport_ops, s, "pic", 2);
+ memory_region_init_io(&s->elcr_io,&pic_elcr_ioport_ops, s, "elcr", 1);
+
+ isa_register_ioport(NULL,&s->base_io, io_addr);
if (elcr_addr>= 0) {
- register_ioport_write(elcr_addr, 1, 1, elcr_ioport_write, s);
- register_ioport_read(elcr_addr, 1, 1, elcr_ioport_read, s);
+ isa_register_ioport(NULL,&s->elcr_io, elcr_addr);
}
+
vmstate_register(NULL, io_addr,&vmstate_pic, s);
qemu_register_reset(pic_reset, s);
}
#0 0x00000000005979a9 in isa_register_ioport (dev=0x0, io=0x2c19380,
start=32) at /build/home/tlv/akivity/qemu/hw/isa-bus.c:113
#1 0x00000000005ae200 in pic_init1 (io_addr=32, elcr_addr=1232,
s=0x2c19360) at /build/home/tlv/akivity/qemu/hw/i8259.c:508
#2 0x00000000005ae943 in i8259_init (parent_irq=0x2c19280) at
/build/home/tlv/akivity/qemu/hw/i8259.c:557
#3 0x00000000005a6b36 in mips_malta_init (ram_size=<optimized out>,
boot_device=<optimized out>, kernel_filename=<optimized out>,
kernel_cmdline=0x7fff7acf17b5 "console=ttyS0 init=/bin/sh",
initrd_filename=0x7fff7acf17a3 "initrd.gz", cpu_model=<optimized out>)
at /build/home/tlv/akivity/qemu/hw/mips_malta.c:913
#4 0x000000000055d2eb in main (argc=<optimized out>, argv=<optimized
out>, envp=<optimized out>) at /build/home/tlv/akivity/qemu/vl.c:3257
--
error compiling committee.c: too many arguments to function