diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-04-10 09:45:02 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-10 09:45:02 +0200 |
| commit | 8988b6f166d1087615b21229df651e0bcc0fa048 (patch) | |
| tree | f9a526d927e9b73a588e9c7db5cd99bf1622ca23 /dev/kernel/src/BitMapMgr.cc | |
| parent | 29828ef52df7a51e22057b4557b8d9a3d5550839 (diff) | |
| parent | e50f871e6852beacb53986f930ed2d5dead84838 (diff) | |
Merge pull request #13 from amlel-el-mahrouss/dev
dev: Last AHCI patches.
Diffstat (limited to 'dev/kernel/src/BitMapMgr.cc')
| -rw-r--r-- | dev/kernel/src/BitMapMgr.cc | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/dev/kernel/src/BitMapMgr.cc b/dev/kernel/src/BitMapMgr.cc index 7f3f8500..63cadde3 100644 --- a/dev/kernel/src/BitMapMgr.cc +++ b/dev/kernel/src/BitMapMgr.cc @@ -95,9 +95,9 @@ namespace Kernel if (!size) return nullptr; - constexpr const UInt32 kStartOffset = 0x1000; + VoidPtr base = reinterpret_cast<VoidPtr>((UIntPtr)base_ptr); - VoidPtr base = reinterpret_cast<VoidPtr>(((UIntPtr)base_ptr) + kStartOffset); + MUST_PASS(base); static SizeT biggest = 0UL; @@ -141,7 +141,15 @@ namespace Kernel return (VoidPtr)ptr_bit_set; } - base = reinterpret_cast<VoidPtr>(reinterpret_cast<UIntPtr>(base) + ((ptr_bit_set[kBitMapMagIdx] != kBitMapMagic) ? (size + pad) : ptr_bit_set[kBitMapSizeIdx])); + UIntPtr raw_base = reinterpret_cast<UIntPtr>(base); + UIntPtr offset = (ptr_bit_set[kBitMapMagIdx] != kBitMapMagic) + ? (size + pad) + : ptr_bit_set[kBitMapSizeIdx]; + + base = reinterpret_cast<VoidPtr>(raw_base + offset); + + if (base == nullptr) + return nullptr; } return nullptr; |
