summaryrefslogtreecommitdiffhomepage
path: root/Private/NewBoot/Source
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlalelmahrouss@icloud.com>2024-02-02 09:00:37 +0100
committerAmlal El Mahrouss <amlalelmahrouss@icloud.com>2024-02-02 09:00:37 +0100
commite619d59744bec279dc49570be278a7845a4f7b8c (patch)
tree6fceb40478de18ec9537592d7b786ffbdc6dc938 /Private/NewBoot/Source
parent95a887d120b7955bb02f582339d0536696a4cc79 (diff)
Bootloader: Fix ATA driver.
Signed-off-by: Amlal El Mahrouss <amlalelmahrouss@icloud.com>
Diffstat (limited to 'Private/NewBoot/Source')
-rw-r--r--Private/NewBoot/Source/HEL/AMD64/ATA.cxx15
1 files changed, 8 insertions, 7 deletions
diff --git a/Private/NewBoot/Source/HEL/AMD64/ATA.cxx b/Private/NewBoot/Source/HEL/AMD64/ATA.cxx
index fb11f409..80dffa02 100644
--- a/Private/NewBoot/Source/HEL/AMD64/ATA.cxx
+++ b/Private/NewBoot/Source/HEL/AMD64/ATA.cxx
@@ -121,8 +121,8 @@ Void ATAReadLba(UInt32 Lba, UInt8 Bus, Boolean Master, CharacterType* Buf,
ATAWait(IO);
}
-Void ATAWriteLba(UInt16 Byte, UInt32 Lba, UInt8 Bus, Boolean Master,
- wchar_t* Buf, SizeT Offset) {
+Void ATAWriteLba(UInt32 Lba, UInt8 Bus, Boolean Master, wchar_t* Buf,
+ SizeT Offset) {
UInt16 IO = Bus;
ATASelect(IO + ATA_REG_HDDEVSEL,
@@ -186,10 +186,11 @@ BATADevice& BATADevice::Read(CharacterType* Buf, const SizeT& Sz) {
SizeT Off = 0;
- for (SizeT i = 0UL; i < (Sz / 512); ++i) {
+ for (SizeT i = 0UL; i < Sz; ++i) {
ATAReadLba(this->Leak().mBase + i, this->Leak().mBus, this->Leak().mMaster,
Buf, Off);
- Off += 256;
+
+ Off += 512;
}
return *this;
@@ -203,10 +204,10 @@ BATADevice& BATADevice::Write(CharacterType* Buf, const SizeT& Sz) {
SizeT Off = 0UL;
for (SizeT i = 0UL; i < Sz; ++i) {
- ATAWriteLba(Buf[i], this->Leak().mBase + i, this->Leak().mBus,
- this->Leak().mMaster, Buf, Off);
+ ATAWriteLba(this->Leak().mBase + i, this->Leak().mBus, this->Leak().mMaster,
+ Buf, Off);
- Off += 256;
+ Off += 512;
}
return *this;