mirror of
https://github.com/RGBCube/serenity
synced 2026-01-13 17:21:00 +00:00
This replaces the current disk detection and disk access code with code based on https://wiki.osdev.org/IDE This allows the system to boot on VirtualBox with serial debugging enabled and VMWare Player. I believe there were several issues with the current code: - It didn't utilise the last 8 bits of the LBA in 24-bit mode. - {read,write}_sectors_with_dma was not setting the obsolete bits, which according to OSdev wiki aren't used but should be set. - The PIO and DMA methods were using slightly different copy and pasted access code, which is now put into a single function called "ata_access" - PIO mode doesn't work. This doesn't fix that and should be looked into in the future. - The detection code was not checking for ATA/ATAPI. - The detection code accidentally had cyls/heads/spt as 8-bit, when they're 16-bit. - The capabilities of the device were not considered. This is now brought in and is currently used to check if the device supports LBA. If not, use CHS. |
||
|---|---|---|
| .. | ||
| Partition | ||
| IDEChannel.cpp | ||
| IDEChannel.h | ||
| IDEController.cpp | ||
| IDEController.h | ||
| PATADiskDevice.cpp | ||
| PATADiskDevice.h | ||
| RamdiskController.cpp | ||
| RamdiskController.h | ||
| RamdiskDevice.cpp | ||
| RamdiskDevice.h | ||
| StorageController.h | ||
| StorageDevice.cpp | ||
| StorageDevice.h | ||
| StorageManagement.cpp | ||
| StorageManagement.h | ||