interrupts.cc (6065:0ad264b74ac2) interrupts.cc (6066:a9fe0813039f)
1/*
2 * Copyright (c) 2008 The Hewlett-Packard Development Company
3 * All rights reserved.
4 *
5 * Redistribution and use of this software in source and binary forms,
6 * with or without modification, are permitted provided that the
7 * following conditions are met:
8 *

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

277 pendingUnmaskableInt = pendingNmi = true;
278 nmiVector = vector;
279 } else if (deliveryMode == DeliveryMode::ExtInt && !pendingExtInt) {
280 pendingExtInt = true;
281 extIntVector = vector;
282 } else if (deliveryMode == DeliveryMode::INIT && !pendingInit) {
283 pendingUnmaskableInt = pendingInit = true;
284 initVector = vector;
1/*
2 * Copyright (c) 2008 The Hewlett-Packard Development Company
3 * All rights reserved.
4 *
5 * Redistribution and use of this software in source and binary forms,
6 * with or without modification, are permitted provided that the
7 * following conditions are met:
8 *

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

277 pendingUnmaskableInt = pendingNmi = true;
278 nmiVector = vector;
279 } else if (deliveryMode == DeliveryMode::ExtInt && !pendingExtInt) {
280 pendingExtInt = true;
281 extIntVector = vector;
282 } else if (deliveryMode == DeliveryMode::INIT && !pendingInit) {
283 pendingUnmaskableInt = pendingInit = true;
284 initVector = vector;
285 } else if (deliveryMode == DeliveryMode::SIPI && !pendingStartup) {
285 } else if (deliveryMode == DeliveryMode::SIPI &&
286 !pendingStartup && !startedUp) {
286 pendingUnmaskableInt = pendingStartup = true;
287 startupVector = vector;
288 }
289 }
290 cpu->wakeup();
291}
292
293

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

557X86ISA::Interrupts::Interrupts(Params * p) :
558 BasicPioDevice(p), IntDev(this), latency(p->pio_latency), clock(0),
559 apicTimerEvent(this),
560 pendingSmi(false), smiVector(0),
561 pendingNmi(false), nmiVector(0),
562 pendingExtInt(false), extIntVector(0),
563 pendingInit(false), initVector(0),
564 pendingStartup(false), startupVector(0),
287 pendingUnmaskableInt = pendingStartup = true;
288 startupVector = vector;
289 }
290 }
291 cpu->wakeup();
292}
293
294

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

558X86ISA::Interrupts::Interrupts(Params * p) :
559 BasicPioDevice(p), IntDev(this), latency(p->pio_latency), clock(0),
560 apicTimerEvent(this),
561 pendingSmi(false), smiVector(0),
562 pendingNmi(false), nmiVector(0),
563 pendingExtInt(false), extIntVector(0),
564 pendingInit(false), initVector(0),
565 pendingStartup(false), startupVector(0),
565 pendingUnmaskableInt(false)
566 startedUp(false), pendingUnmaskableInt(false)
566{
567 pioSize = PageBytes;
568 memset(regs, 0, sizeof(regs));
569 //Set the local apic DFR to the flat model.
570 regs[APIC_DESTINATION_FORMAT] = (uint32_t)(-1);
571 ISRV = 0;
572 IRRV = 0;
573}

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

638 DPRINTF(LocalApic, "SMI sent to core.\n");
639 pendingSmi = false;
640 } else if (pendingNmi) {
641 DPRINTF(LocalApic, "NMI sent to core.\n");
642 pendingNmi = false;
643 } else if (pendingInit) {
644 DPRINTF(LocalApic, "Init sent to core.\n");
645 pendingInit = false;
567{
568 pioSize = PageBytes;
569 memset(regs, 0, sizeof(regs));
570 //Set the local apic DFR to the flat model.
571 regs[APIC_DESTINATION_FORMAT] = (uint32_t)(-1);
572 ISRV = 0;
573 IRRV = 0;
574}

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

639 DPRINTF(LocalApic, "SMI sent to core.\n");
640 pendingSmi = false;
641 } else if (pendingNmi) {
642 DPRINTF(LocalApic, "NMI sent to core.\n");
643 pendingNmi = false;
644 } else if (pendingInit) {
645 DPRINTF(LocalApic, "Init sent to core.\n");
646 pendingInit = false;
647 startedUp = false;
646 } else if (pendingStartup) {
647 DPRINTF(LocalApic, "SIPI sent to core.\n");
648 pendingStartup = false;
648 } else if (pendingStartup) {
649 DPRINTF(LocalApic, "SIPI sent to core.\n");
650 pendingStartup = false;
651 startedUp = true;
649 }
650 if (!(pendingSmi || pendingNmi || pendingInit || pendingStartup))
651 pendingUnmaskableInt = false;
652 } else if (pendingExtInt) {
653 pendingExtInt = false;
654 } else {
655 DPRINTF(LocalApic, "Interrupt %d sent to core.\n", IRRV);
656 // Mark the interrupt as "in service".

--- 13 unchanged lines hidden ---
652 }
653 if (!(pendingSmi || pendingNmi || pendingInit || pendingStartup))
654 pendingUnmaskableInt = false;
655 } else if (pendingExtInt) {
656 pendingExtInt = false;
657 } else {
658 DPRINTF(LocalApic, "Interrupt %d sent to core.\n", IRRV);
659 // Mark the interrupt as "in service".

--- 13 unchanged lines hidden ---