summaryrefslogtreecommitdiffhomepage
path: root/Private/HALKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-04-28 09:08:00 +0200
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-04-28 09:08:00 +0200
commitb608517c047f7e4f7d7d70af7db76b0e9b0873b0 (patch)
tree2ffd9ee4e202692d873f53f41520cde960b1ddef /Private/HALKit
parentdd6568c64e440fe9d8c75539165377ddbbca3e2c (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.cxx16
-rw-r--r--Private/HALKit/compile_flags.txt1
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__