summaryrefslogtreecommitdiffhomepage
path: root/dev/kernel/DmaKit
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-08-16 19:56:21 +0200
committerGitHub <noreply@github.com>2025-08-16 19:56:21 +0200
commit1a32b9307357ac0fc9095e853b2b6d94f9fe62bb (patch)
treef41f723659c8926e38182fbe062746d821ab487e /dev/kernel/DmaKit
parenteb9df5eea339812513c25a8d3b2eeb03c633e7ac (diff)
parentb301047903b79560dce69085fc271a653a1eb4b6 (diff)
Merge pull request #55 from nekernel-org/dev
v0.0.4
Diffstat (limited to 'dev/kernel/DmaKit')
-rw-r--r--dev/kernel/DmaKit/DmaPool.h10
1 files changed, 7 insertions, 3 deletions
diff --git a/dev/kernel/DmaKit/DmaPool.h b/dev/kernel/DmaKit/DmaPool.h
index ada8299e..99f43725 100644
--- a/dev/kernel/DmaKit/DmaPool.h
+++ b/dev/kernel/DmaKit/DmaPool.h
@@ -23,7 +23,11 @@
#define kNeDMAPoolSize (0x1000000)
#endif
+#ifdef __GNUC__
#define kNeDMABestAlign __BIGGEST_ALIGNMENT__
+#else
+#define kNeDMABestAlign (8)
+#endif
namespace Kernel {
/// @brief DMA pool base pointer, here we're sure that AHCI or whatever tricky standard sees it.
@@ -37,7 +41,7 @@ inline const UInt8* kDmaPoolEnd = (UInt8*) (kNeDMAPoolStart + kNeDMAPoolSize);
/***********************************************************************************/
inline VoidPtr rtl_dma_alloc(SizeT size, SizeT align) {
if (!size) {
- return nullptr;
+ ++size;
}
/// Check alignement according to architecture.
@@ -69,7 +73,7 @@ inline VoidPtr rtl_dma_alloc(SizeT size, SizeT align) {
inline Void rtl_dma_free(SizeT size) {
if (!size) return;
- auto ptr = (UInt8*) (kDmaPoolPtr - size);
+ auto ptr = (kDmaPoolPtr - size);
if (!ptr || ptr < (UInt8*) kNeDMAPoolStart) {
err_global_get() = kErrorDmaExhausted;
@@ -98,4 +102,4 @@ inline Void rtl_dma_flush(VoidPtr ptr, SizeT size_buffer) {
HAL::mm_memory_fence((VoidPtr) ((UInt8*) ptr + buf_idx));
}
}
-} // namespace Kernel \ No newline at end of file
+} // namespace Kernel