Changeset 26104 in vbox for trunk/src/VBox/Devices
- Timestamp:
- Jan 29, 2010 4:46:11 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 57090
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Storage/ATAController.cpp
r25986 r26104 647 647 } 648 648 649 static uint32_t ataChecksum(void* ptr, size_t count) 650 { 651 uint8_t u8Sum = 0xa5, *p = (uint8_t*)ptr; 652 size_t i; 653 654 for (i = 0; i < count; i++) 655 { 656 u8Sum += *p++; 657 } 658 659 return (uint8_t)-(int32_t)u8Sum; 660 } 649 661 650 662 static void ataCmdOK(AHCIATADevState *s, uint8_t status) … … 765 777 p[103] = RT_H2LE_U16(s->cTotalSectors >> 48); 766 778 } 779 uint32_t uCsum = ataChecksum(p, 510); 780 p[255] = RT_H2LE_U16(0xa5 | (uCsum << 8)); /* Integrity word */ 781 767 782 s->iSourceSink = ATAFN_SS_NULL; 768 783 ataCmdOK(s, ATA_STAT_SEEK); … … 848 863 p[88] = RT_H2LE_U16(ATA_TRANSFER_ID(ATA_MODE_UDMA, ATA_UDMA_MODE_MAX, s->uATATransferMode)); /* UDMA modes supported / mode enabled */ 849 864 p[93] = RT_H2LE_U16((1 | 1 << 1) << ((s->iLUN & 1) == 0 ? 0 : 8) | 1 << 13 | 1 << 14); 865 uint32_t uCsum = ataChecksum(p, 510); 866 p[255] = RT_H2LE_U16(0xa5 | (uCsum << 8)); /* Integrity word */ 850 867 s->iSourceSink = ATAFN_SS_NULL; 851 868 ataCmdOK(s, ATA_STAT_SEEK); … … 5539 5556 #endif /* IN_RING3 */ 5540 5557 #endif /* !VBOX_DEVICE_STRUCT_TESTCASE */ 5541
Note:
See TracChangeset
for help on using the changeset viewer.