Deleted Added
sdiff udiff text old ( 6065:0ad264b74ac2 ) new ( 6066:a9fe0813039f )
full compact
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 &&
286 !pendingStartup && !startedUp) {
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),
566 startedUp(false), pendingUnmaskableInt(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;
648 } else if (pendingStartup) {
649 DPRINTF(LocalApic, "SIPI sent to core.\n");
650 pendingStartup = false;
651 startedUp = true;
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 ---