diff options
| author | Amlal El Mahrouss <amlalelmahrouss@icloud.com> | 2024-02-02 09:00:37 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlalelmahrouss@icloud.com> | 2024-02-02 09:00:37 +0100 |
| commit | e619d59744bec279dc49570be278a7845a4f7b8c (patch) | |
| tree | 6fceb40478de18ec9537592d7b786ffbdc6dc938 /Private/NewBoot/Source | |
| parent | 95a887d120b7955bb02f582339d0536696a4cc79 (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.cxx | 15 |
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; |
