summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/src/BitMapMgr.cc
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-04-10 09:45:02 +0200
committerGitHub <noreply@github.com>2025-04-10 09:45:02 +0200
commit8988b6f166d1087615b21229df651e0bcc0fa048 (patch)
treef9a526d927e9b73a588e9c7db5cd99bf1622ca23 /dev/kernel/src/BitMapMgr.cc
parent29828ef52df7a51e22057b4557b8d9a3d5550839 (diff)
parente50f871e6852beacb53986f930ed2d5dead84838 (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.cc14
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;