diff options
| author | Amlal El Mahrouss <amlal@nekernel.org> | 2025-08-16 19:56:21 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-08-16 19:56:21 +0200 |
| commit | 1a32b9307357ac0fc9095e853b2b6d94f9fe62bb (patch) | |
| tree | f41f723659c8926e38182fbe062746d821ab487e /dev/kernel/DmaKit | |
| parent | eb9df5eea339812513c25a8d3b2eeb03c633e7ac (diff) | |
| parent | b301047903b79560dce69085fc271a653a1eb4b6 (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.h | 10 |
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 |
