changes to make interrupts part of the platform rather than tsunami

specific

--HG--
extra : convert_revision : f51788dd41c23f13b253268bb2b286a5225ef087
This commit is contained in:
Ali Saidi 2004-10-25 18:14:13 -04:00
parent eaf66f4658
commit 3402411661
6 changed files with 30 additions and 4 deletions

View file

@ -245,13 +245,13 @@ IdeController::setDmaComplete(IdeDisk *disk)
void void
IdeController::intrPost() IdeController::intrPost()
{ {
tsunami->cchip->postDRIR(configData->config.hdr.pci0.interruptLine); tsunami->postPciInt(configData->config.hdr.pci0.interruptLine);
} }
void void
IdeController::intrClear() IdeController::intrClear()
{ {
tsunami->cchip->clearDRIR(configData->config.hdr.pci0.interruptLine); tsunami->clearPciInt(configData->config.hdr.pci0.interruptLine);
} }
//// ////

View file

@ -732,6 +732,7 @@ IdeDisk::startCommand()
void void
IdeDisk::intrPost() IdeDisk::intrPost()
{ {
DPRINTF(IdeDisk, "IDE Disk Posting Interrupt\n");
if (intrPending) if (intrPending)
panic("Attempt to post an interrupt with one pending\n"); panic("Attempt to post an interrupt with one pending\n");
@ -745,6 +746,7 @@ IdeDisk::intrPost()
void void
IdeDisk::intrClear() IdeDisk::intrClear()
{ {
DPRINTF(IdeDisk, "IDE Disk Clearing Interrupt\n");
if (!intrPending) if (!intrPending)
panic("Attempt to clear a non-pending interrupt\n"); panic("Attempt to clear a non-pending interrupt\n");

View file

@ -1038,7 +1038,7 @@ NSGigE::cpuInterrupt()
cpuPendingIntr = true; cpuPendingIntr = true;
DPRINTF(EthernetIntr, "posting cchip interrupt\n"); DPRINTF(EthernetIntr, "posting cchip interrupt\n");
tsunami->cchip->postDRIR(configData->config.hdr.pci0.interruptLine); tsunami->postPciInt(configData->config.hdr.pci0.interruptLine);
} }
} }
@ -1058,7 +1058,7 @@ NSGigE::cpuIntrClear()
cpuPendingIntr = false; cpuPendingIntr = false;
DPRINTF(EthernetIntr, "clearing cchip interrupt\n"); DPRINTF(EthernetIntr, "clearing cchip interrupt\n");
tsunami->cchip->clearDRIR(configData->config.hdr.pci0.interruptLine); tsunami->clearPciInt(configData->config.hdr.pci0.interruptLine);
} }
bool bool

View file

@ -65,6 +65,8 @@ class Platform : public SimObject
virtual void postConsoleInt() = 0; virtual void postConsoleInt() = 0;
virtual void clearConsoleInt() = 0; virtual void clearConsoleInt() = 0;
virtual Tick intrFrequency() = 0; virtual Tick intrFrequency() = 0;
virtual void postPciInt(int line) = 0;
virtual void clearPciInt(int line) = 0;
}; };
#endif // __PLATFORM_HH_ #endif // __PLATFORM_HH_

View file

@ -74,6 +74,18 @@ Tsunami::clearConsoleInt()
io->clearPIC(0x10); io->clearPIC(0x10);
} }
void
Tsunami::postPciInt(int line)
{
this->cchip->postDRIR(line);
}
void
Tsunami::clearPciInt(int line)
{
this->cchip->clearDRIR(line);
}
void void
Tsunami::serialize(std::ostream &os) Tsunami::serialize(std::ostream &os)
{ {

View file

@ -111,6 +111,16 @@ class Tsunami : public Platform
*/ */
virtual void clearConsoleInt(); virtual void clearConsoleInt();
/**
* Cause the chipset to post a cpi interrupt to the CPU.
*/
virtual void postPciInt(int line);
/**
* Clear a posted PCI->CPU interrupt
*/
virtual void clearPciInt(int line);
/** /**
* Serialize this object to the given output stream. * Serialize this object to the given output stream.
* @param os The stream to serialize to. * @param os The stream to serialize to.