32a33
> #include "dev/x86/i8259.hh"
38c39
< latency(p->pio_latency), pioAddr(p->pio_addr)
---
> latency(p->pio_latency), pioAddr(p->pio_addr), extIntPic(NULL)
148,158d148
< if (DTRACE(I82094AA)) {
< if (DeliveryMode::isReserved(entry.deliveryMode)) {
< fatal("Tried to use reserved delivery mode "
< "for IO APIC entry %d.\n", line);
< } else {
< DPRINTF(I82094AA, "Delivery mode is: %s.\n",
< DeliveryMode::names[entry.deliveryMode]);
< }
< DPRINTF(I82094AA, "Vector is %#x.\n", entry.vector);
< }
<
161c151,156
< message.vector = entry.vector;
---
> if (entry.deliveryMode == DeliveryMode::ExtInt) {
> assert(extIntPic);
> message.vector = extIntPic->getVector();
> } else {
> message.vector = entry.vector;
> }
166a162,170
> if (DeliveryMode::isReserved(entry.deliveryMode)) {
> fatal("Tried to use reserved delivery mode "
> "for IO APIC entry %d.\n", line);
> } else if (DTRACE(I82094AA)) {
> DPRINTF(I82094AA, "Delivery mode is: %s.\n",
> DeliveryMode::names[entry.deliveryMode]);
> DPRINTF(I82094AA, "Vector is %#x.\n", message.vector);
> }
>