Deleted Added
sdiff udiff text old ( 5898:541097c69e22 ) new ( 6041:949a8304e7f9 )
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 *

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

281 } else if (deliveryMode == DeliveryMode::INIT && !pendingInit) {
282 pendingUnmaskableInt = pendingInit = true;
283 initVector = vector;
284 }
285 }
286 cpu->wakeup();
287}
288
289Tick
290X86ISA::Interrupts::recvMessage(PacketPtr pkt)
291{
292 uint8_t id = 0;
293 Addr offset = pkt->getAddr() - x86InterruptAddress(id, 0);
294 assert(pkt->cmd == MemCmd::MessageReq);
295 switch(offset)
296 {
297 case 0:
298 {
299 TriggerIntMessage message = pkt->get<TriggerIntMessage>();
300 DPRINTF(LocalApic,

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

314 break;
315 }
316 delete pkt->req;
317 delete pkt;
318 return latency;
319}
320
321
322uint32_t
323X86ISA::Interrupts::readReg(ApicRegIndex reg)
324{
325 if (reg >= APIC_TRIGGER_MODE(0) &&
326 reg <= APIC_TRIGGER_MODE(15)) {
327 panic("Local APIC Trigger Mode registers are unimplemented.\n");
328 }
329 switch (reg) {

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

474 break;
475 default:
476 break;
477 }
478 regs[reg] = newVal;
479 return;
480}
481
482bool
483X86ISA::Interrupts::checkInterrupts(ThreadContext *tc) const
484{
485 RFLAGS rflags = tc->readMiscRegNoEffect(MISCREG_RFLAGS);
486 if (pendingUnmaskableInt) {
487 DPRINTF(LocalApic, "Reported pending unmaskable interrupt.\n");
488 return true;
489 }

--- 80 unchanged lines hidden ---