interrupts.cc (7900:8b05ff5ef958) interrupts.cc (7902:aafb4a7384d4)
1/*
2 * Copyright (c) 2008 The Hewlett-Packard Development Company
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

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

701 ISRV = IRRV;
702 setRegArrayBit(APIC_IN_SERVICE_BASE, ISRV);
703 // Clear it out of the IRR.
704 clearRegArrayBit(APIC_INTERRUPT_REQUEST_BASE, IRRV);
705 updateIRRV();
706 }
707}
708
1/*
2 * Copyright (c) 2008 The Hewlett-Packard Development Company
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

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

701 ISRV = IRRV;
702 setRegArrayBit(APIC_IN_SERVICE_BASE, ISRV);
703 // Clear it out of the IRR.
704 clearRegArrayBit(APIC_INTERRUPT_REQUEST_BASE, IRRV);
705 updateIRRV();
706 }
707}
708
709void
710X86ISA::Interrupts::serialize(std::ostream &os)
711{
712 SERIALIZE_ARRAY(regs, NUM_APIC_REGS);
713 SERIALIZE_SCALAR(clock);
714 SERIALIZE_SCALAR(pendingSmi);
715 SERIALIZE_SCALAR(smiVector);
716 SERIALIZE_SCALAR(pendingNmi);
717 SERIALIZE_SCALAR(nmiVector);
718 SERIALIZE_SCALAR(pendingExtInt);
719 SERIALIZE_SCALAR(extIntVector);
720 SERIALIZE_SCALAR(pendingInit);
721 SERIALIZE_SCALAR(initVector);
722 SERIALIZE_SCALAR(pendingStartup);
723 SERIALIZE_SCALAR(startupVector);
724 SERIALIZE_SCALAR(startedUp);
725 SERIALIZE_SCALAR(pendingUnmaskableInt);
726 SERIALIZE_SCALAR(pendingIPIs);
727 SERIALIZE_SCALAR(IRRV);
728 SERIALIZE_SCALAR(ISRV);
729 bool apicTimerEventScheduled = apicTimerEvent.scheduled();
730 SERIALIZE_SCALAR(apicTimerEventScheduled);
731 Tick apicTimerEventTick = apicTimerEvent.when();
732 SERIALIZE_SCALAR(apicTimerEventTick);
733}
734
735void
736X86ISA::Interrupts::unserialize(Checkpoint *cp, const std::string &section)
737{
738 UNSERIALIZE_ARRAY(regs, NUM_APIC_REGS);
739 UNSERIALIZE_SCALAR(clock);
740 UNSERIALIZE_SCALAR(pendingSmi);
741 UNSERIALIZE_SCALAR(smiVector);
742 UNSERIALIZE_SCALAR(pendingNmi);
743 UNSERIALIZE_SCALAR(nmiVector);
744 UNSERIALIZE_SCALAR(pendingExtInt);
745 UNSERIALIZE_SCALAR(extIntVector);
746 UNSERIALIZE_SCALAR(pendingInit);
747 UNSERIALIZE_SCALAR(initVector);
748 UNSERIALIZE_SCALAR(pendingStartup);
749 UNSERIALIZE_SCALAR(startupVector);
750 UNSERIALIZE_SCALAR(startedUp);
751 UNSERIALIZE_SCALAR(pendingUnmaskableInt);
752 UNSERIALIZE_SCALAR(pendingIPIs);
753 UNSERIALIZE_SCALAR(IRRV);
754 UNSERIALIZE_SCALAR(ISRV);
755 bool apicTimerEventScheduled;
756 UNSERIALIZE_SCALAR(apicTimerEventScheduled);
757 if (apicTimerEventScheduled) {
758 Tick apicTimerEventTick;
759 UNSERIALIZE_SCALAR(apicTimerEventTick);
760 if (apicTimerEvent.scheduled()) {
761 reschedule(apicTimerEvent, apicTimerEventTick, true);
762 } else {
763 schedule(apicTimerEvent, apicTimerEventTick);
764 }
765 }
766}
767
709X86ISA::Interrupts *
710X86LocalApicParams::create()
711{
712 return new X86ISA::Interrupts(this);
713}
768X86ISA::Interrupts *
769X86LocalApicParams::create()
770{
771 return new X86ISA::Interrupts(this);
772}