diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-12-01 18:41:41 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-12-01 18:41:41 +0100 |
| commit | f83e7bddcf24433adbfc9214e0f8f8139f8b6362 (patch) | |
| tree | 0447eddc2ebff291f96286847c238b4f907515b1 /dev/ZKAKit/src | |
| parent | c62790f8f773a2f10464d2b1e0e286f2b3156712 (diff) | |
FIX: Fixing ARM64 execution when booting from bootloader.
FIX: Now works both for ARM64 and AMD64 EFI backends.
TODO: The ACB backend needs to be done too.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
Diffstat (limited to 'dev/ZKAKit/src')
| -rw-r--r-- | dev/ZKAKit/src/CxxAbi-ARM64.cc | 15 | ||||
| -rw-r--r-- | dev/ZKAKit/src/IPEFDLLObject.cc | 3 | ||||
| -rw-r--r-- | dev/ZKAKit/src/UserProcessScheduler.cc | 37 | ||||
| -rw-r--r-- | dev/ZKAKit/src/Utils.cc | 7 |
4 files changed, 22 insertions, 40 deletions
diff --git a/dev/ZKAKit/src/CxxAbi-ARM64.cc b/dev/ZKAKit/src/CxxAbi-ARM64.cc index 91ca0fe2..68a3acdc 100644 --- a/dev/ZKAKit/src/CxxAbi-ARM64.cc +++ b/dev/ZKAKit/src/CxxAbi-ARM64.cc @@ -87,4 +87,19 @@ EXTERN_C Kernel::Void _purecall(void* self) kcout << ", has unimplemented virtual functions.\r"; } +EXTERN_C Kernel::Void _Init_thread_footer(Kernel::Int* thread_obj) +{ + ZKA_UNUSED(thread_obj); +} + +EXTERN_C Kernel::Void _Init_thread_epoch(Kernel::Void) +{ +} + +EXTERN_C Kernel::Void _Init_thread_header(Kernel::Int* thread_obj) +{ +} + +EXTERN_C Kernel::Int _tls_index = 0UL; + #endif // ifdef __ZKA_ARM64__ diff --git a/dev/ZKAKit/src/IPEFDLLObject.cc b/dev/ZKAKit/src/IPEFDLLObject.cc index 89b613ac..3eb102b5 100644 --- a/dev/ZKAKit/src/IPEFDLLObject.cc +++ b/dev/ZKAKit/src/IPEFDLLObject.cc @@ -7,6 +7,7 @@ * ======================================================== */ +#include "KernelKit/IDLLObject.h" #include <KernelKit/DebugOutput.h> #include <KernelKit/PEF.h> #include <KernelKit/IPEFDLLObject.h> @@ -55,6 +56,7 @@ EXTERN_C IDLL rtl_init_dll(UserProcess* header) { tls_delete_class(dll_obj); header->Crash(); + return nullptr; } @@ -65,6 +67,7 @@ EXTERN_C IDLL rtl_init_dll(UserProcess* header) { tls_delete_class(dll_obj); header->Crash(); + return nullptr; } diff --git a/dev/ZKAKit/src/UserProcessScheduler.cc b/dev/ZKAKit/src/UserProcessScheduler.cc index 7f303d7c..e9cd1c54 100644 --- a/dev/ZKAKit/src/UserProcessScheduler.cc +++ b/dev/ZKAKit/src/UserProcessScheduler.cc @@ -156,43 +156,6 @@ namespace Kernel } /***********************************************************************************/ - /** @brief Free pointer from usage. */ - /***********************************************************************************/ - - Boolean UserProcess::Delete(ErrorOr<VoidPtr> ptr, const SizeT& sz) - { - if (!ptr || - sz == 0) - return No; - - UserProcessHeapList* entry = this->MemoryHeap; - - while (entry != nullptr) - { - if (entry->MemoryEntry == ptr.Leak().Leak()) - { -#ifdef __ZKA_AMD64__ - auto pd = hal_read_cr3(); - hal_write_cr3(this->VMRegister); - - auto ret = mm_delete_heap(entry->MemoryEntry); - - hal_write_cr3(pd); - - return ret; -#else - Bool ret = mm_delete_heap(ptr); - return ret; -#endif - } - - entry = entry->MemoryNext; - } - - return No; - } - - /***********************************************************************************/ /// @brief Gets the name of the current process. /***********************************************************************************/ diff --git a/dev/ZKAKit/src/Utils.cc b/dev/ZKAKit/src/Utils.cc index 412e4a45..d6657680 100644 --- a/dev/ZKAKit/src/Utils.cc +++ b/dev/ZKAKit/src/Utils.cc @@ -211,12 +211,13 @@ namespace Kernel } } // namespace Kernel -EXTERN_C void* memset(void* dst, int c, __SIZE_TYPE__ len) +EXTERN_C void* memset(void* dst, int c, long long unsigned int len) { return Kernel::rt_set_memory(dst, c, len); } -EXTERN_C __UINT32_TYPE__ memcpy(void* dst, void* src, __SIZE_TYPE__ len) +EXTERN_C void* memcpy(void* dst, const void* src, long long unsigned int len) { - return Kernel::rt_copy_memory(src, dst, len); + Kernel::rt_copy_memory(const_cast<void*>(src), dst, len); + return dst; } |
