Deleted Added
sdiff udiff text old ( 10474:799c8ee4ecba ) new ( 10542:7be879ff600c )
full compact
1/*
2 * Copyright (c) 2012-2013 ARM Limited
3 * All rights reserved
4 *
5 * The license below extends only to copyright in the software and shall
6 * not be construed as granting a license to any other intellectual
7 * property including but not limited to intellectual property relating
8 * to a hardware implementation of the functionality of the software

--- 477 unchanged lines hidden (view full) ---

486 InterruptCommandRegLow low = regs[APIC_INTERRUPT_COMMAND_LOW];
487 // Check if we're already sending an IPI.
488 if (low.deliveryStatus) {
489 newVal = low;
490 break;
491 }
492 low = val;
493 InterruptCommandRegHigh high = regs[APIC_INTERRUPT_COMMAND_HIGH];
494 // Record that an IPI is being sent.
495 low.deliveryStatus = 1;
496 TriggerIntMessage message = 0;
497 message.destination = high.destination;
498 message.vector = low.vector;
499 message.deliveryMode = low.deliveryMode;
500 message.destMode = low.destMode;
501 message.level = low.level;
502 message.trigger = low.trigger;
503 bool timing(sys->isTimingMode());
504 // Be careful no updates of the delivery status bit get lost.
505 regs[APIC_INTERRUPT_COMMAND_LOW] = low;
506 ApicList apics;
507 int numContexts = sys->numContexts();
508 switch (low.destShorthand) {
509 case 0:
510 if (message.deliveryMode == DeliveryMode::LowestPriority) {
511 panic("Lowest priority delivery mode "
512 "IPIs aren't implemented.\n");
513 }

--- 39 unchanged lines hidden (view full) ---

553 for (int i = 0; i < numContexts; i++) {
554 if (i != initialApicId) {
555 apics.push_back(i);
556 }
557 }
558 }
559 break;
560 }
561 pendingIPIs += apics.size();
562 intMasterPort.sendMessage(apics, message, timing);
563 newVal = regs[APIC_INTERRUPT_COMMAND_LOW];
564 }
565 break;
566 case APIC_LVT_TIMER:
567 case APIC_LVT_THERMAL_SENSOR:
568 case APIC_LVT_PERFORMANCE_MONITORING_COUNTERS:
569 case APIC_LVT_LINT0:
570 case APIC_LVT_LINT1:

--- 222 unchanged lines hidden ---