Changeset 34458 in vbox for trunk/src/VBox/Devices/PC
- Timestamp:
- Nov 29, 2010 12:29:23 PM (14 years ago)
- svn:sync-xref-src-repo-rev:
- 68232
- Location:
- trunk/src/VBox/Devices/PC
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/PC/BIOS/rombios.c
r34455 r34458 4645 4645 } 4646 4646 4647 Bit32u readBiosVar(varNum)4648 Bit16u varNum;4649 {4650 int i, iPort = 0x402;4651 Bit32u result = 0;4652 Bit8u bits[4];4653 4654 outw(iPort, varNum);4655 4656 for (i=0; i<4; i++)4657 bits[i] = inb(iPort);4658 4659 result = (((Bit32u)bits[3]) << 24) | (((Bit32u)bits[2]) << 16) |4660 (((Bit32u)bits[1]) << 8) | (((Bit32u)bits[0]) << 0);4661 4662 return result;4663 }4664 4665 4647 void 4666 4648 int15_function32(regs, ES, DS, FLAGS) … … 4766 4748 #endif /* !VBOX */ 4767 4749 4768 mcfgStart = readBiosVar(1);4769 mcfgSize = readBiosVar(2);4750 mcfgStart = 0; 4751 mcfgSize = 0; 4770 4752 4771 4753 switch(regs.u.r16.bx) -
trunk/src/VBox/Devices/PC/DevPcBios.cpp
r34426 r34458 180 180 uint32_t u32McfgBase; 181 181 uint32_t cbMcfgLength; 182 uint16_t iVarNum;183 uint16_t iVarPos;184 182 } DEVPCBIOS, *PDEVPCBIOS; 185 183 … … 638 636 } 639 637 640 static uint8_t pcbiosReadVar(PDEVPCBIOS pThis)641 {642 uint32_t u32Val = 0, u32Size = 4;643 switch (pThis->iVarNum)644 {645 case 1:646 u32Val = pThis->u32McfgBase;647 u32Size = 4;648 break;649 case 2:650 u32Val = pThis->cbMcfgLength;651 u32Size = 4;652 break;653 default:654 AssertMsgFailed(("Unknown variable: %d\n", pThis->iVarNum));655 }656 uint32_t iPos = pThis->iVarPos++;657 if (pThis->iVarPos >= u32Size)658 pThis->iVarPos = 0;659 660 Log(("Read pos %d of var %d: %x\n",661 iPos, pThis->iVarNum, (u32Val >> (iPos*8)) & 0xff));662 663 return (u32Val >> (iPos*8)) & 0xff;664 }665 666 638 /** 667 639 * Port I/O Handler for IN operations. … … 677 649 static DECLCALLBACK(int) pcbiosIOPortRead(PPDMDEVINS pDevIns, void *pvUser, RTIOPORT Port, uint32_t *pu32, unsigned cb) 678 650 { 679 if (cb == 1 && Port == 0x402)680 {681 PDEVPCBIOS pThis = PDMINS_2_DATA(pDevIns, PDEVPCBIOS);682 uint8_t u8Val = pcbiosReadVar(pThis);683 *(uint8_t*)pu32 = u8Val;684 return VINF_SUCCESS;685 }686 687 651 return VERR_IOM_IOPORT_UNUSED; 688 652 } … … 750 714 pThis->szMsg[++pThis->iMsg] = '\0'; 751 715 } 752 return VINF_SUCCESS;753 }754 755 if (cb == 2 && Port == 0x402)756 {757 PDEVPCBIOS pThis = PDMINS_2_DATA(pDevIns, PDEVPCBIOS);758 pThis->iVarNum = u32;759 pThis->iVarPos = 0;760 716 return VINF_SUCCESS; 761 717 }
Note:
See TracChangeset
for help on using the changeset viewer.