110,111c110,115
< DPRINTF(I8259, "Subcommand: Specific EIO.");
< DPRINTF(I8259, "Reset In-Service bit %d.\n", bits(val, 2, 0));
---
> {
> int line = bits(val, 2, 0);
> DPRINTF(I8259, "Subcommand: Specific EIO on line %d.\n",
> line);
> handleEOI(line);
> }
208a213,236
> X86ISA::I8259::handleEOI(int line)
> {
> ISR &= ~(1 << line);
> // There may be an interrupt that was waiting which can
> // now be sent.
> if (IRR)
> requestInterrupt(findMsbSet(IRR));
> }
>
> void
> X86ISA::I8259::requestInterrupt(int line)
> {
> if (bits(ISR, 7, line) == 0) {
> if (output) {
> DPRINTF(I8259, "Propogating interrupt.\n");
> output->signalInterrupt();
> } else {
> warn("Received interrupt but didn't have "
> "anyone to tell about it.\n");
> }
> }
> }
>
> void
219,227c247
< if (bits(ISR, 7, line) == 0) {
< if (output) {
< DPRINTF(I8259, "Propogating interrupt.\n");
< output->signalInterrupt();
< } else {
< warn("Received interrupt but didn't have "
< "anyone to tell about it.\n");
< }
< }
---
> requestInterrupt(line);