Deleted Added
sdiff udiff text old ( 8711:c7e14f52c682 ) new ( 8742:9df38d259935 )
full compact
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

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

297{
298 //
299 // The local apic must register its address ranges on both its pio port
300 // via the basicpiodevice(piodevice) init() function and its int port
301 // that it inherited from IntDev. Note IntDev is not a SimObject itself.
302 //
303 BasicPioDevice::init();
304 IntDev::init();
305#if FULL_SYSTEM
306 Pc * pc = dynamic_cast<Pc *>(platform);
307 assert(pc);
308 pc->southBridge->ioApic->registerLocalApic(initialApicId, this);
309#endif
310}
311
312
313Tick
314X86ISA::Interrupts::recvMessage(PacketPtr pkt)
315{
316 Addr offset = pkt->getAddr() - x86InterruptAddress(initialApicId, 0);
317 assert(pkt->cmd == MemCmd::MessageReq);

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

349 low.deliveryStatus = 0;
350 regs[APIC_INTERRUPT_COMMAND_LOW] = low;
351 }
352 DPRINTF(LocalApic, "ICR is now idle.\n");
353 return 0;
354}
355
356
357void
358X86ISA::Interrupts::addressRanges(AddrRangeList &range_list)
359{
360 range_list.clear();
361 Range<Addr> range = RangeEx(x86LocalAPICAddress(initialApicId, 0),
362 x86LocalAPICAddress(initialApicId, 0) +
363 PageBytes);
364 range_list.push_back(range);
365 pioAddr = range.start;
366}
367
368
369void
370X86ISA::Interrupts::getIntAddrRange(AddrRangeList &range_list)
371{
372 range_list.clear();
373 range_list.push_back(RangeEx(x86InterruptAddress(initialApicId, 0),
374 x86InterruptAddress(initialApicId, 0) +
375 PhysAddrAPICRangeSize));
376}
377
378
379uint32_t
380X86ISA::Interrupts::readReg(ApicRegIndex reg)
381{
382 if (reg >= APIC_TRIGGER_MODE(0) &&
383 reg <= APIC_TRIGGER_MODE(15)) {

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

609 apicTimerEvent(this),
610 pendingSmi(false), smiVector(0),
611 pendingNmi(false), nmiVector(0),
612 pendingExtInt(false), extIntVector(0),
613 pendingInit(false), initVector(0),
614 pendingStartup(false), startupVector(0),
615 startedUp(false), pendingUnmaskableInt(false),
616 pendingIPIs(0), cpu(NULL)
617#if FULL_SYSTEM
618 , platform(p->platform)
619#endif
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}

--- 157 unchanged lines hidden ---