summaryrefslogtreecommitdiffhomepage
path: root/dev/Kernel/src
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-01-06 20:11:53 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2025-01-06 20:11:53 +0100
commit98110adc9f47666696e18a6c7c97a3edc89c5d90 (patch)
treee39f76352995abfdcc154637b2dae00ed246d5c7 /dev/Kernel/src
parent8c179d8801df7f5f77fe7ec65a0a98b7901dad09 (diff)
ADD: Fix kernel build and bootloader build on aarch64, add syschk for
aarch64. WIP: aarch64 on CoreBoot (EFI is unpractical) Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/Kernel/src')
-rw-r--r--dev/Kernel/src/KernelMain.cc4
-rw-r--r--dev/Kernel/src/UserProcessScheduler.cc14
2 files changed, 13 insertions, 5 deletions
diff --git a/dev/Kernel/src/KernelMain.cc b/dev/Kernel/src/KernelMain.cc
index 303b1d81..af835183 100644
--- a/dev/Kernel/src/KernelMain.cc
+++ b/dev/Kernel/src/KernelMain.cc
@@ -24,6 +24,7 @@
#include <CFKit/Property.h>
#include <KernelKit/Timer.h>
+#ifdef __ZKA_AUTO_FORMAT__
namespace Kernel::Detail
{
/// @brief Filesystem auto formatter, additional checks are also done by the class.
@@ -91,12 +92,15 @@ namespace Kernel::Detail
ZKA_COPY_DEFAULT(NeFilesystemInstaller);
};
} // namespace Kernel::Detail
+#endif // ifdef __ZKA_AUTO_FORMAT__
/// @brief Kernel entrypoint.
/// @param Void
/// @return Void
EXTERN_C Kernel::Void rtl_kernel_main(Kernel::SizeT argc, char** argv, char** envp, Kernel::SizeT envp_len)
{
+#ifdef __ZKA_AUTO_FORMAT__
Kernel::Detail::fs_init_newfs();
Kernel::Detail::NeFilesystemInstaller installer{};
+#endif // __ZKA_AUTO_FORMAT__
}
diff --git a/dev/Kernel/src/UserProcessScheduler.cc b/dev/Kernel/src/UserProcessScheduler.cc
index 936d0547..55d3474b 100644
--- a/dev/Kernel/src/UserProcessScheduler.cc
+++ b/dev/Kernel/src/UserProcessScheduler.cc
@@ -106,7 +106,7 @@ namespace Kernel
ErrorOr<VoidPtr> UserThread::New(const SizeT& sz, const SizeT& pad_amount)
{
-#ifdef __ZKA_AMD64__
+#ifdef __ZKA_VIRTUAL_MEMORY_SUPPORT__
auto vm_register = hal_read_cr3();
hal_write_cr3(this->VMRegister);
@@ -206,7 +206,7 @@ namespace Kernel
auto memory_heap_list = this->ProcessMemoryHeap;
-#ifdef __ZKA_AMD64__
+#ifdef __ZKA_VIRTUAL_MEMORY_SUPPORT__
auto pd = hal_read_cr3();
hal_write_cr3(this->VMRegister);
#endif
@@ -219,7 +219,7 @@ namespace Kernel
MUST_PASS(mm_delete_heap(memory_heap_list->MemoryEntry));
}
-#ifdef __ZKA_AMD64__
+#ifdef __ZKA_VIRTUAL_MEMORY_SUPPORT__
hal_write_cr3(pd);
#endif
@@ -297,7 +297,7 @@ namespace Kernel
rt_copy_memory(reinterpret_cast<VoidPtr>(const_cast<Char*>(name)), process.Name, rt_string_len(name));
-#ifdef __ZKA_AMD64__
+#ifdef __ZKA_VIRTUAL_MEMORY_SUPPORT__
process.VMRegister = new PDE();
if (!process.VMRegister)
@@ -311,7 +311,7 @@ namespace Kernel
flags |= HAL::kMMFlagsUser;
HAL::mm_map_page((VoidPtr)process.VMRegister, flags);
-#endif // __ZKA_AMD64__
+#endif // __ZKA_VIRTUAL_MEMORY_SUPPORT__
process.StackFrame = new HAL::StackFrame();
@@ -321,11 +321,13 @@ namespace Kernel
return kErrorProcessFault;
}
+#ifdef __ZKA_VIRTUAL_MEMORY_SUPPORT__
flags = HAL::kMMFlagsPresent;
flags |= HAL::kMMFlagsWr;
flags |= HAL::kMMFlagsUser;
HAL::mm_map_page((VoidPtr)process.StackFrame, flags);
+#endif // __ZKA_VIRTUAL_MEMORY_SUPPORT__
// Create heap according to type of process.
if (process.Kind == UserThread::kExectuableDLLKind)
@@ -336,11 +338,13 @@ namespace Kernel
process.StackReserve = new UInt8[process.StackSize];
+#ifdef __ZKA_VIRTUAL_MEMORY_SUPPORT__
flags = HAL::kMMFlagsPresent;
flags |= HAL::kMMFlagsWr;
flags |= HAL::kMMFlagsUser;
HAL::mm_map_page((VoidPtr)process.StackReserve, flags);
+#endif // __ZKA_VIRTUAL_MEMORY_SUPPORT__
if (!process.StackReserve)
{