Changeset 32941 in vbox for trunk/src/VBox/Devices/Bus
- Timestamp:
- Oct 6, 2010 11:07:41 AM (14 years ago)
- svn:sync-xref-src-repo-rev:
- 66427
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Bus/DevPciIch9.cpp
r32935 r32941 1699 1699 return PCIDevGetByte(aDev, u32Address); 1700 1700 case 2: 1701 return PCIDevGetWord(aDev, u32Address); 1702 default: 1701 return PCIDevGetWord(aDev, u32Address); 1703 1702 case 4: 1704 1703 return PCIDevGetDWord(aDev, u32Address); 1704 default: 1705 Assert(false); 1706 return 0; 1705 1707 } 1706 1708 } … … 1714 1716 uint32_t val, unsigned len) 1715 1717 { 1718 Assert(len <= 4); 1719 1716 1720 if ((u32Address + len) > 256 && (u32Address + len) < 4096) 1717 1721 { … … 1824 1828 } 1825 1829 1830 uint8_t u8Val = (uint8_t)val; 1831 1826 1832 switch (addr) 1827 1833 { 1828 1834 case VBOX_PCI_COMMAND: /* Command register, bits 0-7. */ 1829 1835 fUpdateMappings = true; 1830 aDev->config[addr] = val;1836 aDev->config[addr] = u8Val; 1831 1837 break; 1832 1838 case VBOX_PCI_COMMAND+1: /* Command register, bits 8-15. */ 1833 1839 /* don't change reserved bits (11-15) */ 1834 val &= UINT32_C(~0xf8);1840 u8Val &= UINT32_C(~0xf8); 1835 1841 fUpdateMappings = true; 1836 aDev->config[addr] = val;1842 aDev->config[addr] = u8Val; 1837 1843 break; 1838 1844 case VBOX_PCI_STATUS: /* Status register, bits 0-7. */ 1839 1845 /* don't change read-only bits => actually all lower bits are read-only */ 1840 val &= UINT32_C(~0xff);1846 u8Val &= UINT32_C(~0xff); 1841 1847 /* status register, low part: clear bits by writing a '1' to the corresponding bit */ 1842 aDev->config[addr] &= ~ val;1848 aDev->config[addr] &= ~u8Val; 1843 1849 break; 1844 1850 case VBOX_PCI_STATUS+1: /* Status register, bits 8-15. */ 1845 1851 /* don't change read-only bits */ 1846 val &= UINT32_C(~0x06);1852 u8Val &= UINT32_C(~0x06); 1847 1853 /* status register, high part: clear bits by writing a '1' to the corresponding bit */ 1848 aDev->config[addr] &= ~ val;1854 aDev->config[addr] &= ~u8Val; 1849 1855 break; 1850 1856 default: 1851 1857 if (fWritable) 1852 aDev->config[addr] = val;1858 aDev->config[addr] = u8Val; 1853 1859 } 1854 1860 addr++;
Note:
See TracChangeset
for help on using the changeset viewer.