summaryrefslogtreecommitdiffhomepage
path: root/dev/ZKA
diff options
context:
space:
mode:
authorAmlal <amlal@el-mahrouss-logic.com>2024-09-11 08:52:00 +0200
committerAmlal <amlal@el-mahrouss-logic.com>2024-09-11 08:52:00 +0200
commitf37c8cb8c86b73843b23d3690f1e251ec40a70b5 (patch)
treea6737d9577a8cebdfc4c914bf334f14a6745ac5b /dev/ZKA
parentf2aee187a4e6f4cd0743d3f2a1de19fdcb1856c6 (diff)
IMP: Add FreeBitMap method in IBitMapAllocator.
IMP: Using a better memory strategy than a pre-allocated chunk of memory. FIX: Moved compile_flags.txt only at root directory. FIX: Refactor HandoverInformationHeader to HANDOVER_INFO_HEADER. IMP: Handover version 1.16. Signed-off-by: Amlal <amlal@el-mahrouss-logic.com>
Diffstat (limited to 'dev/ZKA')
-rw-r--r--dev/ZKA/ArchKit/compile_flags.txt8
-rw-r--r--dev/ZKA/CFKit/compile_flags.txt5
-rw-r--r--dev/ZKA/FirmwareKit/EFI/API.hxx2
-rw-r--r--dev/ZKA/FirmwareKit/Handover.hxx34
-rw-r--r--dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx63
-rw-r--r--dev/ZKA/HALKit/AMD64/HalKernelMain.cxx2
-rw-r--r--dev/ZKA/HALKit/ARM64/HalKernelMain.cxx2
-rw-r--r--dev/ZKA/HALKit/compile_flags.txt6
-rw-r--r--dev/ZKA/KernelKit/ThreadLocalStorage.hxx4
-rw-r--r--dev/ZKA/KernelKit/compile_flags.txt6
-rw-r--r--dev/ZKA/Modules/ACPI/compile_flags.txt4
-rw-r--r--dev/ZKA/Modules/AHCI/compile_flags.txt4
-rw-r--r--dev/ZKA/Modules/ATA/compile_flags.txt4
-rw-r--r--dev/ZKA/Modules/IEEE802/compile_flags.txt4
-rw-r--r--dev/ZKA/Modules/MBCI/compile_flags.txt4
-rw-r--r--dev/ZKA/Modules/NVME/compile_flags.txt4
-rw-r--r--dev/ZKA/Modules/WiFi/compile_flags.txt4
-rw-r--r--dev/ZKA/Modules/XHCI/compile_flags.txt4
-rw-r--r--dev/ZKA/NetworkKit/compile_flags.txt6
-rw-r--r--dev/ZKA/NewKit/compile_flags.txt6
-rw-r--r--dev/ZKA/Sources/FS/compile_flags.txt6
-rw-r--r--dev/ZKA/Sources/compile_flags.txt7
-rw-r--r--dev/ZKA/compile_flags.txt9
23 files changed, 55 insertions, 143 deletions
diff --git a/dev/ZKA/ArchKit/compile_flags.txt b/dev/ZKA/ArchKit/compile_flags.txt
deleted file mode 100644
index 0fa2cfc6..00000000
--- a/dev/ZKA/ArchKit/compile_flags.txt
+++ /dev/null
@@ -1,8 +0,0 @@
--nostdlib
--ffreestanding
--std=c++20
--I./
--I../
--I$(HOME)/
--D__ZKA_AMD64__
--D__ED__
diff --git a/dev/ZKA/CFKit/compile_flags.txt b/dev/ZKA/CFKit/compile_flags.txt
deleted file mode 100644
index a37ae6bf..00000000
--- a/dev/ZKA/CFKit/compile_flags.txt
+++ /dev/null
@@ -1,5 +0,0 @@
--nostdlib
--ffreestanding
--std=c++20
--I./
--I../
diff --git a/dev/ZKA/FirmwareKit/EFI/API.hxx b/dev/ZKA/FirmwareKit/EFI/API.hxx
index c5c9de4c..6245e0e4 100644
--- a/dev/ZKA/FirmwareKit/EFI/API.hxx
+++ b/dev/ZKA/FirmwareKit/EFI/API.hxx
@@ -21,8 +21,6 @@ class BTextWriter;
#define __BOOTKIT_NO_INCLUDE__ 1
#include <BootKit/BootKit.hxx>
-#include <BootKit/Rsrc/NewBootFatal.rsrc>
-#include <BootKit/Vendor/Qr.hxx>
#include <Modules/CoreCG/FbRenderer.hxx>
#endif // ifdef __NEWOSLDR__
diff --git a/dev/ZKA/FirmwareKit/Handover.hxx b/dev/ZKA/FirmwareKit/Handover.hxx
index c398bd50..3332c463 100644
--- a/dev/ZKA/FirmwareKit/Handover.hxx
+++ b/dev/ZKA/FirmwareKit/Handover.hxx
@@ -8,7 +8,7 @@
* @file Handover.hxx
* @author Amlal El Mahrouss (amlalelmahrouss@icloud.com)
* @brief The handover boot protocol.
- * @version 0.3
+ * @version 1.15
* @date 2024-02-23
*
* @copyright Copyright (c) 2024, ZKA Technologies
@@ -19,20 +19,20 @@
#include <NewKit/Defines.hxx>
-/* useful macros */
+/* Handover macros. */
#define kHandoverMagic 0xBADCC
-#define kHandoverVersion 0x0115
+#define kHandoverVersion 0x0116
-/* per page. */
-#define kHandoverBitMapSz gib_cast(32)
-#define kHandoverStructSz sizeof(HEL::HandoverInformationHeader)
+/* Initial bitmap size. */
+#define kHandoverBitMapSz gib_cast(64)
+#define kHandoverStructSz sizeof(HEL::HANDOVER_INFO_HEADER)
namespace Kernel::HEL
{
/**
- @brief the kind of executable we're loading.
-*/
+ @brief The executable type enum.
+ */
enum
{
kTypeKernel = 100,
@@ -43,16 +43,18 @@ namespace Kernel::HEL
};
/**
- @brief The executable architecture.
-*/
+ @brief The executable architecture enum.
+ */
enum
{
- kArchAmd64 = 122,
- kArchCount = 2,
+ kArchAMD64 = 122,
+ kArchARM64 = 123,
+ kArchRISCV = 124,
+ kArchCount = 3,
};
- struct HandoverInformationHeader
+ struct HANDOVER_INFO_HEADER final
{
UInt64 f_Magic;
UInt64 f_Version;
@@ -105,11 +107,11 @@ namespace Kernel::HEL
};
/// @brief Bootloader main type.
- typedef void (*BootMainKind)(HandoverInformationHeader* handoverInfo);
+ typedef void (*BootMainKind)(HANDOVER_INFO_HEADER* handoverInfo);
/// @brief Alias of bootloader main type.
- typedef void (*HandoverProc)(HandoverInformationHeader* handoverInfo);
+ typedef void (*HandoverProc)(HANDOVER_INFO_HEADER* handoverInfo);
} // namespace Kernel::HEL
/// @brief Bootloader global header.
-inline Kernel::HEL::HandoverInformationHeader* kHandoverHeader = nullptr;
+inline Kernel::HEL::HANDOVER_INFO_HEADER* kHandoverHeader = nullptr;
diff --git a/dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx b/dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx
index 71c8cb61..57565b5b 100644
--- a/dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx
+++ b/dev/ZKA/HALKit/AMD64/HalBMPMgr.cxx
@@ -23,8 +23,35 @@ namespace Kernel
{
namespace Detail
{
- struct AllocatorTraits final
+ struct IBitMapAllocator final
{
+ Bool FreeBitMap(VoidPtr page_ptr)
+ {
+ if (!page_ptr) return No;
+
+ UIntPtr* ptr_bit_set = reinterpret_cast<UIntPtr*>(page_ptr);
+
+ if (!ptr_bit_set[0] ||
+ ptr_bit_set[0] != cBitMpMagic)
+ return No;
+
+ kcout << "BMPMgr: Freed Range!\r";
+ kcout << "Magic Number: " << hex_number(ptr_bit_set[0]) << endl;
+ kcout << "Size of pointer (B): " << number(ptr_bit_set[1]) << endl;
+ kcout << "Size of pointer (KIB): " << number(KIB(ptr_bit_set[1])) << endl;
+ kcout << "Size of pointer (MIB): " << number(MIB(ptr_bit_set[1])) << endl;
+ kcout << "Size of pointer (GIB): " << number(GIB(ptr_bit_set[1])) << endl;
+ kcout << "Size of pointer (TIB): " << number(TIB(ptr_bit_set[1])) << endl;
+ kcout << "Address Of Header: " << hex_number((UIntPtr)ptr_bit_set) << endl;
+
+ ptr_bit_set[0] = cBitMpMagic;
+ ptr_bit_set[2] = No;
+
+ mm_map_page(page_ptr, ~eFlagsPresent);
+
+ return Yes;
+ }
+
/// @brief Iterate over availables pages for a free one.
/// @return The new address which was found.
VoidPtr FindBitMap(VoidPtr base_ptr, SizeT size, Bool rw, Bool user) noexcept
@@ -35,8 +62,6 @@ namespace Kernel
{
UIntPtr* ptr_bit_set = reinterpret_cast<UIntPtr*>(base_ptr);
- mm_map_page(ptr_bit_set, eFlagsPresent | eFlagsRw);
-
if (ptr_bit_set[0] == cBitMpMagic)
{
if (ptr_bit_set[1] != 0 &&
@@ -97,9 +122,6 @@ namespace Kernel
}
base_ptr = reinterpret_cast<VoidPtr>(reinterpret_cast<UIntPtr>(base_ptr) + (ptr_bit_set[0] != cBitMpMagic ? size : ptr_bit_set[1]));
-
- if (reinterpret_cast<UIntPtr>(base_ptr) >= (kHandoverHeader->f_BitMapSize + base))
- ke_stop(RUNTIME_CHECK_VIRTUAL_OUT_OF_MEM);
}
return nullptr;
@@ -113,8 +135,8 @@ namespace Kernel
/// @return
auto mm_alloc_bitmap(Boolean rw, Boolean user, SizeT size) -> VoidPtr
{
- VoidPtr ptr_new = nullptr;
- Detail::AllocatorTraits traits;
+ VoidPtr ptr_new = nullptr;
+ Detail::IBitMapAllocator traits;
ptr_new = traits.FindBitMap(kKernelVirtualStart, size, rw, user);
@@ -124,29 +146,10 @@ namespace Kernel
auto mm_free_bitmap(VoidPtr page_ptr) -> Bool
{
if (!page_ptr)
- return false;
-
- UIntPtr* ptr_bit_set = reinterpret_cast<UIntPtr*>(page_ptr);
-
- if (!ptr_bit_set[0] ||
- ptr_bit_set[0] != cBitMpMagic)
- return false;
-
- kcout << "BMPMgr: Freed Range!\r";
- kcout << "Magic Number: " << hex_number(ptr_bit_set[0]) << endl;
- kcout << "Size of pointer (B): " << number(ptr_bit_set[1]) << endl;
- kcout << "Size of pointer (KIB): " << number(KIB(ptr_bit_set[1])) << endl;
- kcout << "Size of pointer (MIB): " << number(MIB(ptr_bit_set[1])) << endl;
- kcout << "Size of pointer (GIB): " << number(GIB(ptr_bit_set[1])) << endl;
- kcout << "Size of pointer (TIB): " << number(TIB(ptr_bit_set[1])) << endl;
- kcout << "Address Of Header: " << hex_number((UIntPtr)ptr_bit_set) << endl;
-
- ptr_bit_set[0] = cBitMpMagic;
- ptr_bit_set[2] = No;
-
- mm_map_page(page_ptr, ~eFlagsPresent);
+ return No;
- return true;
+ Detail::IBitMapAllocator traits;
+ return traits.FreeBitMap(page_ptr);
}
} // namespace HAL
} // namespace Kernel
diff --git a/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx b/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx
index 4f9e8bac..9b9e0ac1 100644
--- a/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx
+++ b/dev/ZKA/HALKit/AMD64/HalKernelMain.cxx
@@ -63,7 +63,7 @@ EXTERN_C Kernel::Void ke_dll_entrypoint(Kernel::Void);
/// @brief Kernel init procedure.
EXTERN_C void hal_init_platform(
- Kernel::HEL::HandoverInformationHeader* HandoverHeader)
+ Kernel::HEL::HANDOVER_INFO_HEADER* HandoverHeader)
{
kHandoverHeader = HandoverHeader;
diff --git a/dev/ZKA/HALKit/ARM64/HalKernelMain.cxx b/dev/ZKA/HALKit/ARM64/HalKernelMain.cxx
index c617c45d..1bfaa879 100644
--- a/dev/ZKA/HALKit/ARM64/HalKernelMain.cxx
+++ b/dev/ZKA/HALKit/ARM64/HalKernelMain.cxx
@@ -56,7 +56,7 @@ Kernel::Void hal_real_init(Kernel::Void) noexcept;
EXTERN_C Kernel::Void ke_dll_entrypoint(Kernel::Void);
EXTERN_C void hal_init_platform(
- Kernel::HEL::HandoverInformationHeader* HandoverHeader)
+ Kernel::HEL::HANDOVER_INFO_HEADER* HandoverHeader)
{
/* Setup globals. */
diff --git a/dev/ZKA/HALKit/compile_flags.txt b/dev/ZKA/HALKit/compile_flags.txt
deleted file mode 100644
index d6e35511..00000000
--- a/dev/ZKA/HALKit/compile_flags.txt
+++ /dev/null
@@ -1,6 +0,0 @@
--nostdlib
--ffreestanding
--std=c++20
--I./
--I../
--D__ZKA_AMD64__
diff --git a/dev/ZKA/KernelKit/ThreadLocalStorage.hxx b/dev/ZKA/KernelKit/ThreadLocalStorage.hxx
index ee272be3..a25d8926 100644
--- a/dev/ZKA/KernelKit/ThreadLocalStorage.hxx
+++ b/dev/ZKA/KernelKit/ThreadLocalStorage.hxx
@@ -32,11 +32,11 @@ Kernel::Boolean tls_check_tib(THREAD_INFORMATION_BLOCK* the_tib);
///! @brief new ptr syscall.
template <typename T>
-T* tls_new_ptr(void);
+T* tls_new_ptr(void) noexcept;
///! @brief delete ptr syscall.
template <typename T>
-Kernel::Boolean tls_delete_ptr(T* ptr);
+Kernel::Boolean tls_delete_ptr(T* ptr) noexcept;
template <typename T, typename... Args>
T* tls_new_class(Args&&... args);
diff --git a/dev/ZKA/KernelKit/compile_flags.txt b/dev/ZKA/KernelKit/compile_flags.txt
deleted file mode 100644
index 39b236a9..00000000
--- a/dev/ZKA/KernelKit/compile_flags.txt
+++ /dev/null
@@ -1,6 +0,0 @@
--nostdlib
--ffreestanding
--std=c++20
--I./
--I../
--D__ED__
diff --git a/dev/ZKA/Modules/ACPI/compile_flags.txt b/dev/ZKA/Modules/ACPI/compile_flags.txt
deleted file mode 100644
index 1bc51142..00000000
--- a/dev/ZKA/Modules/ACPI/compile_flags.txt
+++ /dev/null
@@ -1,4 +0,0 @@
--I./
--I../
--I../../
--std=c++20
diff --git a/dev/ZKA/Modules/AHCI/compile_flags.txt b/dev/ZKA/Modules/AHCI/compile_flags.txt
deleted file mode 100644
index 1bc51142..00000000
--- a/dev/ZKA/Modules/AHCI/compile_flags.txt
+++ /dev/null
@@ -1,4 +0,0 @@
--I./
--I../
--I../../
--std=c++20
diff --git a/dev/ZKA/Modules/ATA/compile_flags.txt b/dev/ZKA/Modules/ATA/compile_flags.txt
deleted file mode 100644
index 1bc51142..00000000
--- a/dev/ZKA/Modules/ATA/compile_flags.txt
+++ /dev/null
@@ -1,4 +0,0 @@
--I./
--I../
--I../../
--std=c++20
diff --git a/dev/ZKA/Modules/IEEE802/compile_flags.txt b/dev/ZKA/Modules/IEEE802/compile_flags.txt
deleted file mode 100644
index 1fbcad21..00000000
--- a/dev/ZKA/Modules/IEEE802/compile_flags.txt
+++ /dev/null
@@ -1,4 +0,0 @@
--I./
--I../
--I../Kernel
--std=c++20
diff --git a/dev/ZKA/Modules/MBCI/compile_flags.txt b/dev/ZKA/Modules/MBCI/compile_flags.txt
deleted file mode 100644
index df83bf4c..00000000
--- a/dev/ZKA/Modules/MBCI/compile_flags.txt
+++ /dev/null
@@ -1,4 +0,0 @@
--I./
--I../../
--I../../Kernel
--std=c++20
diff --git a/dev/ZKA/Modules/NVME/compile_flags.txt b/dev/ZKA/Modules/NVME/compile_flags.txt
deleted file mode 100644
index 1bc51142..00000000
--- a/dev/ZKA/Modules/NVME/compile_flags.txt
+++ /dev/null
@@ -1,4 +0,0 @@
--I./
--I../
--I../../
--std=c++20
diff --git a/dev/ZKA/Modules/WiFi/compile_flags.txt b/dev/ZKA/Modules/WiFi/compile_flags.txt
deleted file mode 100644
index 1bc51142..00000000
--- a/dev/ZKA/Modules/WiFi/compile_flags.txt
+++ /dev/null
@@ -1,4 +0,0 @@
--I./
--I../
--I../../
--std=c++20
diff --git a/dev/ZKA/Modules/XHCI/compile_flags.txt b/dev/ZKA/Modules/XHCI/compile_flags.txt
deleted file mode 100644
index 1bc51142..00000000
--- a/dev/ZKA/Modules/XHCI/compile_flags.txt
+++ /dev/null
@@ -1,4 +0,0 @@
--I./
--I../
--I../../
--std=c++20
diff --git a/dev/ZKA/NetworkKit/compile_flags.txt b/dev/ZKA/NetworkKit/compile_flags.txt
deleted file mode 100644
index 39b236a9..00000000
--- a/dev/ZKA/NetworkKit/compile_flags.txt
+++ /dev/null
@@ -1,6 +0,0 @@
--nostdlib
--ffreestanding
--std=c++20
--I./
--I../
--D__ED__
diff --git a/dev/ZKA/NewKit/compile_flags.txt b/dev/ZKA/NewKit/compile_flags.txt
deleted file mode 100644
index 14c5bc51..00000000
--- a/dev/ZKA/NewKit/compile_flags.txt
+++ /dev/null
@@ -1,6 +0,0 @@
--nostdlib
--ffreestanding
--std=c++20
--I./
--I../
--I../../../
diff --git a/dev/ZKA/Sources/FS/compile_flags.txt b/dev/ZKA/Sources/FS/compile_flags.txt
deleted file mode 100644
index 39b236a9..00000000
--- a/dev/ZKA/Sources/FS/compile_flags.txt
+++ /dev/null
@@ -1,6 +0,0 @@
--nostdlib
--ffreestanding
--std=c++20
--I./
--I../
--D__ED__
diff --git a/dev/ZKA/Sources/compile_flags.txt b/dev/ZKA/Sources/compile_flags.txt
deleted file mode 100644
index a22ed881..00000000
--- a/dev/ZKA/Sources/compile_flags.txt
+++ /dev/null
@@ -1,7 +0,0 @@
--nostdlib
--ffreestanding
--std=c++20
--I../
--I$(HOME)/
--D__FSKIT_USE_NEFS__
--D__ZKA_AMD64__
diff --git a/dev/ZKA/compile_flags.txt b/dev/ZKA/compile_flags.txt
deleted file mode 100644
index 290eeee3..00000000
--- a/dev/ZKA/compile_flags.txt
+++ /dev/null
@@ -1,9 +0,0 @@
--nostdlib
--ffreestanding
--std=c++20
--I./
--I$(HOME)/
--D__ZKA_AMD64__
--I../Vendor
--D__x86_64__
--D__ED__