Changeset 30592 in vbox
- Timestamp:
- Jul 4, 2010 10:40:45 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Storage/DevBusLogic.cpp
r30140 r30592 797 797 LogFlowFunc(("pBusLogic=%#p\n", pBusLogic)); 798 798 pBusLogic->regInterrupt |= BUSLOGIC_REGISTER_INTERRUPT_INTERRUPT_VALID; 799 PDMDevHlpPCISetIrqNoWait(pBusLogic->CTX_SUFF(pDevIns), 0, 1); 799 if (pBusLogic->fIRQEnabled) 800 PDMDevHlpPCISetIrqNoWait(pBusLogic->CTX_SUFF(pDevIns), 0, 1); 800 801 } 801 802 … … 881 882 pBusLogic->regInterrupt |= BUSLOGIC_REGISTER_INTERRUPT_COMMAND_COMPLETE; 882 883 883 if (pBusLogic->fIRQEnabled) 884 buslogicSetInterrupt(pBusLogic); 884 /* 885 * SCO OpenServer requires that this flag is set after the ECHO COMMAND 886 * DATA command. Doesn't look like it breaks other guests 887 * but we just set it if the command was actually issued just to be sure. 888 */ 889 if (pBusLogic->uOperationCode == BUSLOGICCOMMAND_ECHO_COMMAND_DATA) 890 pBusLogic->regStatus |= BUSLOGIC_REGISTER_STATUS_INITIALIZATION_REQUIRED; 891 892 buslogicSetInterrupt(pBusLogic); 885 893 } 886 894 … … 943 951 944 952 pBusLogic->regInterrupt |= BUSLOGIC_REGISTER_INTERRUPT_INCOMING_MAILBOX_LOADED; 945 if (pBusLogic->fIRQEnabled) 946 buslogicSetInterrupt(pBusLogic); 953 buslogicSetInterrupt(pBusLogic); 947 954 948 955 PDMCritSectLeave(&pBusLogic->CritSectIntr); … … 1297 1304 { 1298 1305 pBusLogic->aReplyBuffer[0] = '0'; /* @todo figure out what to write here. */ 1299 pBusLogic->aReplyBuffer[1] = ' 0'; /* @todo figure out what to write here. */1306 pBusLogic->aReplyBuffer[1] = '1'; /* @todo figure out what to write here - can't be '0' or 'B'. */ 1300 1307 1301 1308 /* We report version 5.07B. This reply will provide the first two digits. */ … … 1450 1457 else 1451 1458 pBusLogic->fIRQEnabled = true; 1459 break; 1460 } 1461 case BUSLOGICCOMMAND_ECHO_COMMAND_DATA: 1462 { 1463 pBusLogic->aReplyBuffer[0] = pBusLogic->aCommandBuffer[0]; 1464 pBusLogic->cbReplyParametersLeft = 1; 1452 1465 break; 1453 1466 } … … 1506 1519 pBusLogic->cbReplyParametersLeft--; 1507 1520 1521 LogFlowFunc(("cbReplyParametersLeft=%u\n", pBusLogic->cbReplyParametersLeft)); 1508 1522 if (!pBusLogic->cbReplyParametersLeft) 1509 1523 { … … 1557 1571 1558 1572 if (uVal & BUSLOGIC_REGISTER_CONTROL_INTERRUPT_RESET) 1573 { 1559 1574 buslogicClearInterrupt(pBusLogic); 1575 /* 1576 * Clear the flag in case it is set 1577 * to avoid confusing other guests. 1578 * SCO OpenServer doesn't need it anymore to be set. 1579 */ 1580 pBusLogic->regStatus &= ~BUSLOGIC_REGISTER_STATUS_INITIALIZATION_REQUIRED; 1581 } 1560 1582 1561 1583 PDMCritSectLeave(&pBusLogic->CritSectIntr); … … 1620 1642 case BUSLOGICCOMMAND_INQUIRE_SYNCHRONOUS_PERIOD: 1621 1643 case BUSLOGICCOMMAND_DISABLE_HOST_ADAPTER_INTERRUPT: 1644 case BUSLOGICCOMMAND_ECHO_COMMAND_DATA: 1622 1645 pBusLogic->cbCommandParametersLeft = 1; 1623 1646 break; … … 1772 1795 1773 1796 if (!pBusLogic->fISAEnabled) 1774 return V ERR_IOM_IOPORT_UNUSED;1797 return VINF_SUCCESS; 1775 1798 1776 1799 rc = vboxscsiReadRegister(&pBusLogic->VBoxSCSI, (Port - BUSLOGIC_ISA_IO_PORT), pu32); … … 1856 1879 1857 1880 if (!pBusLogic->fISAEnabled) 1858 return V ERR_IOM_IOPORT_UNUSED;1881 return VINF_SUCCESS; 1859 1882 1860 1883 rc = vboxscsiWriteRegister(&pBusLogic->VBoxSCSI, (Port - BUSLOGIC_ISA_IO_PORT), (uint8_t)u32);
Note:
See TracChangeset
for help on using the changeset viewer.