mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 15:53:54 -06:00
i8259: Fix poll command
This was probably never used so far: According to the spec, polling means ack'ing the pending IRQ and setting its corresponding bit in isr. Moreover, we have to signal a pending IRQ via bit 7 of the returned value, and we must not return a spurious IRQ if none is pending. This implements the poll command without the help of pic_poll_read which is left untouched as pic_intack_read is still using it. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
b76750c1ab
commit
8d484caa84
1 changed files with 7 additions and 1 deletions
|
@ -393,7 +393,13 @@ static uint64_t pic_ioport_read(void *opaque, target_phys_addr_t addr1,
|
|||
int ret;
|
||||
|
||||
if (s->poll) {
|
||||
ret = pic_poll_read(s);
|
||||
ret = pic_get_irq(s);
|
||||
if (ret >= 0) {
|
||||
pic_intack(s, ret);
|
||||
ret |= 0x80;
|
||||
} else {
|
||||
ret = 0;
|
||||
}
|
||||
s->poll = 0;
|
||||
} else {
|
||||
if (addr == 0) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue