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 --- |