32a33,79
> void
> X86ISA::IntDev::IntPort::sendMessage(TriggerIntMessage message, bool timing)
> {
> if (DeliveryMode::isReserved(message.deliveryMode)) {
> fatal("Tried to use reserved delivery mode %d\n",
> message.deliveryMode);
> } else if (DTRACE(IntDev)) {
> DPRINTF(IntDev, "Delivery mode is: %s.\n",
> DeliveryMode::names[message.deliveryMode]);
> DPRINTF(IntDev, "Vector is %#x.\n", message.vector);
> }
> if (message.destMode == 0) {
> DPRINTF(IntDev,
> "Sending interrupt to APIC ID %d.\n", message.destination);
> PacketPtr pkt = buildIntRequest(message.destination, message);
> if (timing)
> sendMessageTiming(pkt, latency);
> else
> sendMessageAtomic(pkt);
> } else {
> DPRINTF(IntDev, "Sending interrupts to APIC IDs:"
> "%s%s%s%s%s%s%s%s\n",
> bits((int)message.destination, 0) ? " 0": "",
> bits((int)message.destination, 1) ? " 1": "",
> bits((int)message.destination, 2) ? " 2": "",
> bits((int)message.destination, 3) ? " 3": "",
> bits((int)message.destination, 4) ? " 4": "",
> bits((int)message.destination, 5) ? " 5": "",
> bits((int)message.destination, 6) ? " 6": "",
> bits((int)message.destination, 7) ? " 7": ""
> );
> uint8_t dests = message.destination;
> uint8_t id = 0;
> while(dests) {
> if (dests & 0x1) {
> PacketPtr pkt = buildIntRequest(id, message);
> if (timing)
> sendMessageTiming(pkt, latency);
> else
> sendMessageAtomic(pkt);
> }
> dests >>= 1;
> id++;
> }
> }
> }
>