All bits of BusLogic ISR register are read/write. Fixes BusLogic detection on Solaris 2.4.
This commit is contained in:
parent
37c8a16478
commit
3feeea3bbe
1 changed files with 10 additions and 4 deletions
|
|
@ -275,7 +275,7 @@ static void process_cmd(aha154x_t *scsi);
|
||||||
static void set_irq(aha154x_t *scsi, uint8_t val)
|
static void set_irq(aha154x_t *scsi, uint8_t val)
|
||||||
{
|
{
|
||||||
picint(1 << scsi->irq);
|
picint(1 << scsi->irq);
|
||||||
scsi->isr |= val;
|
scsi->isr |= val | ISR_ANYINTR;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void clear_irq(aha154x_t *scsi)
|
static void clear_irq(aha154x_t *scsi)
|
||||||
|
|
@ -348,6 +348,11 @@ static void aha154x_out(uint16_t port, uint8_t val, void *p)
|
||||||
// pclog("Write command %02x %04x(%08x):%08x\n", val, CS,cs,cpu_state.pc);
|
// pclog("Write command %02x %04x(%08x):%08x\n", val, CS,cs,cpu_state.pc);
|
||||||
process_cmd(scsi);
|
process_cmd(scsi);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 2:
|
||||||
|
if (scsi->type == SCSI_BT545S)
|
||||||
|
scsi->isr = val;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -374,9 +379,10 @@ static uint8_t aha154x_in(uint16_t port, void *p)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 2: /*Interrupt status register*/
|
case 2: /*Interrupt status register*/
|
||||||
temp = scsi->isr & ~0x70;
|
if (scsi->type == SCSI_BT545S)
|
||||||
if (scsi->isr)
|
temp = scsi->isr;
|
||||||
temp |= ISR_ANYINTR;
|
else
|
||||||
|
temp = scsi->isr & ~0x70;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 3: /*???*/
|
case 3: /*???*/
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue