X86: Actually use the extra vector bits we get from ICW2.
This commit is contained in:
parent
ec9d3aad71
commit
c35da8e495
2 changed files with 6 additions and 2 deletions
|
@ -128,8 +128,9 @@ X86ISA::I8259::write(PacketPtr pkt)
|
||||||
break;
|
break;
|
||||||
case 0x1:
|
case 0x1:
|
||||||
DPRINTF(I8259, "Received initialization command word 2.\n");
|
DPRINTF(I8259, "Received initialization command word 2.\n");
|
||||||
|
vectorOffset = val & ~mask(3);
|
||||||
DPRINTF(I8259, "Responsible for vectors %#x-%#x.\n",
|
DPRINTF(I8259, "Responsible for vectors %#x-%#x.\n",
|
||||||
val & ~mask(3), val | mask(3));
|
vectorOffset, vectorOffset | mask(3));
|
||||||
if (cascadeMode) {
|
if (cascadeMode) {
|
||||||
initControlWord++;
|
initControlWord++;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -53,6 +53,9 @@ class I8259 : public BasicPioDevice, public IntDev
|
||||||
// Interrupt Mask Register
|
// Interrupt Mask Register
|
||||||
uint8_t IMR;
|
uint8_t IMR;
|
||||||
|
|
||||||
|
// The higher order bits of the vector to return
|
||||||
|
uint8_t vectorOffset;
|
||||||
|
|
||||||
bool cascadeMode;
|
bool cascadeMode;
|
||||||
// A bit vector of lines with slaves attached, or the slave id, depending
|
// A bit vector of lines with slaves attached, or the slave id, depending
|
||||||
// on if this is a master or slave PIC.
|
// on if this is a master or slave PIC.
|
||||||
|
@ -77,7 +80,7 @@ class I8259 : public BasicPioDevice, public IntDev
|
||||||
I8259(Params * p) : BasicPioDevice(p), IntDev(this),
|
I8259(Params * p) : BasicPioDevice(p), IntDev(this),
|
||||||
latency(p->pio_latency), output(p->output),
|
latency(p->pio_latency), output(p->output),
|
||||||
mode(p->mode), IRR(0), ISR(0), IMR(0),
|
mode(p->mode), IRR(0), ISR(0), IMR(0),
|
||||||
readIRR(true), initControlWord(0)
|
vectorOffset(0), readIRR(true), initControlWord(0)
|
||||||
{
|
{
|
||||||
pioSize = 2;
|
pioSize = 2;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue