diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-04-28 09:08:00 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-04-28 09:08:00 +0200 |
| commit | b608517c047f7e4f7d7d70af7db76b0e9b0873b0 (patch) | |
| tree | 2ffd9ee4e202692d873f53f41520cde960b1ddef /Private/HALKit | |
| parent | dd6568c64e440fe9d8c75539165377ddbbca3e2c (diff) | |
MHR-18: Big set of patches regarding the New Filesystem.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'Private/HALKit')
| -rw-r--r-- | Private/HALKit/AMD64/Storage/ATA-PIO.cxx | 16 | ||||
| -rw-r--r-- | Private/HALKit/compile_flags.txt | 1 |
2 files changed, 13 insertions, 4 deletions
diff --git a/Private/HALKit/AMD64/Storage/ATA-PIO.cxx b/Private/HALKit/AMD64/Storage/ATA-PIO.cxx index e72999ca..6fe1e29a 100644 --- a/Private/HALKit/AMD64/Storage/ATA-PIO.cxx +++ b/Private/HALKit/AMD64/Storage/ATA-PIO.cxx @@ -105,18 +105,22 @@ Void drv_std_read(UInt64 Lba, UInt16 IO, UInt8 Master, Char* Buf, drv_std_select(IO); Out8(IO + ATA_REG_HDDEVSEL, (Command) | (((Lba) >> 24) & 0x0F)); - Out8(IO + ATA_REG_SEC_COUNT0, 1); + + Out8(IO + ATA_REG_SEC_COUNT0, 2); Out8(IO + ATA_REG_LBA0, (Lba)); Out8(IO + ATA_REG_LBA1, (Lba) >> 8); Out8(IO + ATA_REG_LBA2, (Lba) >> 16); - Out8(IO + ATA_REG_LBA4, (Lba) >> 24); + Out8(IO + ATA_REG_LBA3, (Lba) >> 24); Out8(IO + ATA_REG_COMMAND, ATA_CMD_READ_PIO); + drv_std_wait_io(IO); + for (SizeT IndexOff = 0; IndexOff < Size; ++IndexOff) { drv_std_wait_io(IO); Buf[IndexOff] = In16(IO + ATA_REG_DATA); + drv_std_wait_io(IO); } } @@ -130,16 +134,20 @@ Void drv_std_write(UInt64 Lba, UInt16 IO, UInt8 Master, Char* Buf, drv_std_select(IO); Out8(IO + ATA_REG_HDDEVSEL, (Command) | (((Lba) >> 24) & 0x0F)); - Out8(IO + ATA_REG_SEC_COUNT0, 1); + + Out8(IO + ATA_REG_SEC_COUNT0, 2); Out8(IO + ATA_REG_LBA0, (Lba)); Out8(IO + ATA_REG_LBA1, (Lba) >> 8); Out8(IO + ATA_REG_LBA2, (Lba) >> 16); - Out8(IO + ATA_REG_LBA4, (Lba) >> 24); + Out8(IO + ATA_REG_LBA3, (Lba) >> 24); Out8(IO + ATA_REG_COMMAND, ATA_CMD_WRITE_PIO); + drv_std_wait_io(IO); + for (SizeT IndexOff = 0; IndexOff < Size; ++IndexOff) { + drv_std_wait_io(IO); Out16(IO + ATA_REG_DATA, Buf[IndexOff]); drv_std_wait_io(IO); } diff --git a/Private/HALKit/compile_flags.txt b/Private/HALKit/compile_flags.txt index a37ae6bf..26779833 100644 --- a/Private/HALKit/compile_flags.txt +++ b/Private/HALKit/compile_flags.txt @@ -3,3 +3,4 @@ -std=c++20 -I./ -I../ +-D__NEWOS_AMD64__ |
