interrupts.cc (9805:a4339e26b429) interrupts.cc (9807:63d7362bbdf2)
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

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

306 pioAddr = x86LocalAPICAddress(initialApicId, 0);
307}
308
309
310void
311X86ISA::Interrupts::init()
312{
313 //
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

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

306 pioAddr = x86LocalAPICAddress(initialApicId, 0);
307}
308
309
310void
311X86ISA::Interrupts::init()
312{
313 //
314 // The local apic must register its address ranges on both its pio port
315 // via the basicpiodevice(piodevice) init() function and its int port
316 // that it inherited from IntDev. Note IntDev is not a SimObject itself.
314 // The local apic must register its address ranges on both its pio
315 // port via the basicpiodevice(piodevice) init() function and its
316 // int port that it inherited from IntDevice. Note IntDevice is
317 // not a SimObject itself.
317 //
318 BasicPioDevice::init();
318 //
319 BasicPioDevice::init();
319 IntDev::init();
320 IntDevice::init();
320
321 // the slave port has a range so inform the connected master
322 intSlavePort.sendRangeChange();
323}
324
325
326Tick
327X86ISA::Interrupts::recvMessage(PacketPtr pkt)

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

601 default:
602 break;
603 }
604 regs[reg] = newVal;
605 return;
606}
607
608
321
322 // the slave port has a range so inform the connected master
323 intSlavePort.sendRangeChange();
324}
325
326
327Tick
328X86ISA::Interrupts::recvMessage(PacketPtr pkt)

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

602 default:
603 break;
604 }
605 regs[reg] = newVal;
606 return;
607}
608
609
609X86ISA::Interrupts::Interrupts(Params * p) :
610 BasicPioDevice(p), IntDev(this, p->int_latency),
611 apicTimerEvent(this),
612 pendingSmi(false), smiVector(0),
613 pendingNmi(false), nmiVector(0),
614 pendingExtInt(false), extIntVector(0),
615 pendingInit(false), initVector(0),
616 pendingStartup(false), startupVector(0),
617 startedUp(false), pendingUnmaskableInt(false),
618 pendingIPIs(0), cpu(NULL),
619 intSlavePort(name() + ".int_slave", this, this)
610X86ISA::Interrupts::Interrupts(Params * p)
611 : BasicPioDevice(p), IntDevice(this, p->int_latency),
612 apicTimerEvent(this),
613 pendingSmi(false), smiVector(0),
614 pendingNmi(false), nmiVector(0),
615 pendingExtInt(false), extIntVector(0),
616 pendingInit(false), initVector(0),
617 pendingStartup(false), startupVector(0),
618 startedUp(false), pendingUnmaskableInt(false),
619 pendingIPIs(0), cpu(NULL),
620 intSlavePort(name() + ".int_slave", this, this)
620{
621 pioSize = PageBytes;
622 memset(regs, 0, sizeof(regs));
623 //Set the local apic DFR to the flat model.
624 regs[APIC_DESTINATION_FORMAT] = (uint32_t)(-1);
625 ISRV = 0;
626 IRRV = 0;
627}

--- 155 unchanged lines hidden ---
621{
622 pioSize = PageBytes;
623 memset(regs, 0, sizeof(regs));
624 //Set the local apic DFR to the flat model.
625 regs[APIC_DESTINATION_FORMAT] = (uint32_t)(-1);
626 ISRV = 0;
627 IRRV = 0;
628}

--- 155 unchanged lines hidden ---