diff options
| author | Amlal El Mahrouss <amlalelmahrouss@icloud.com> | 2024-01-19 12:44:57 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlalelmahrouss@icloud.com> | 2024-01-19 12:45:09 +0100 |
| commit | 9d6babb9a3b9ffbedc1fa377f47ff6b3f7585056 (patch) | |
| tree | 8d24c521d8986a8a2ed0273763bfe309dd05b524 | |
| parent | 149ad21b7188d21d726215c98d0d74835ea4e737 (diff) | |
Kernel/PowerPC: did some progress on it, got it booting on ofw.
Signed-off-by: Amlal El Mahrouss <amlalelmahrouss@icloud.com>
| -rw-r--r-- | FSKit/NewFS.hxx | 4 | ||||
| -rw-r--r-- | HALKit/PowerPC/Processor.cpp | 68 | ||||
| -rw-r--r-- | Source/KMain.cxx | 1 | ||||
| -rw-r--r-- | Source/NewFS.cxx | 15 | ||||
| -rw-r--r-- | Source/Utils.cxx | 10 | ||||
| -rw-r--r-- | makefile | 6 |
6 files changed, 95 insertions, 9 deletions
diff --git a/FSKit/NewFS.hxx b/FSKit/NewFS.hxx index c567a3e4..97129e5c 100644 --- a/FSKit/NewFS.hxx +++ b/FSKit/NewFS.hxx @@ -56,6 +56,10 @@ struct NewBootBlock #define kFlagUnallocated 0x0F #define kFlagCatalog 0xFF +#define kKindCatalog 1 +#define kKindDirectory 2 +#define kKindSymlink 3 + struct NewCatalog { hCore::Char Name[kNameLen]; diff --git a/HALKit/PowerPC/Processor.cpp b/HALKit/PowerPC/Processor.cpp new file mode 100644 index 00000000..6bb4ff65 --- /dev/null +++ b/HALKit/PowerPC/Processor.cpp @@ -0,0 +1,68 @@ +/* +* ======================================================== +* +* hCore +* Copyright Mahrouss Logic, all rights reserved. +* +* ======================================================== +*/ + +#include <HALKit/PowerPC/Processor.hpp> +#include <KernelKit/DebugOutput.hpp> + +extern "C" void flush_tlb() {} +extern "C" void rt_wait_for_io() {} +extern "C" hCore::HAL::StackFrame* rt_get_current_context() { } + +namespace hCore +{ +namespace HAL +{ + UIntPtr hal_create_page(bool rw, bool user) + { + return 0; + } + + UIntPtr hal_alloc_page(UIntPtr offset, bool rw, bool user) + { + return 0; + } +} + +// @brief wakes up thread. +// wakes up thread from hang. +extern void rt_wakeup_thread(HAL::StackFrame* stack) +{ + +} + +// @brief makes thread sleep. +// hooks and hangs thread to prevent code from executing. +extern void rt_hang_thread(HAL::StackFrame* stack) +{ + +} + +// @brief main HAL entrypoint +void initialize_hardware_components() +{ + +} + +void system_io_print(const char *bytes) +{ + if (!bytes) + return; + + SizeT index = 0; + SizeT len = string_length(bytes, 256); + + while (index < len) + { + // TODO + ++index; + } +} + +TerminalDevice kcout(hCore::system_io_print, nullptr); +}
\ No newline at end of file diff --git a/Source/KMain.cxx b/Source/KMain.cxx index cc847349..575b283c 100644 --- a/Source/KMain.cxx +++ b/Source/KMain.cxx @@ -13,7 +13,6 @@ extern "C" void __KernelMain(hCore::VoidPtr this_image) { - hCore::Detail::serial_init(); MUST_PASS(hCore::initialize_hardware_components()); hCore::IFilesystemManager::Mount(new hCore::NewFilesystemManager()); diff --git a/Source/NewFS.cxx b/Source/NewFS.cxx index 03a72398..28f7c041 100644 --- a/Source/NewFS.cxx +++ b/Source/NewFS.cxx @@ -16,14 +16,19 @@ namespace hCore NewFilesystemManager::~NewFilesystemManager() = default; - bool NewFilesystemManager::Remove(const char* node) + /** + * Unallocates a file from disk. + * @param node_name it's path. + * @return operation status boolean. + */ + bool NewFilesystemManager::Remove(const char* node_name) { - if (node == nullptr || - *node == 0) + if (node_name == nullptr || + *node_name == 0) return false; - if (auto catalog = fIO->GetCatalog(node); - catalog->Flags == kFlagCatalog) + if (auto catalog = fIO->GetCatalog(node_name); + catalog) return fIO->RemoveCatalog(*catalog); return false; diff --git a/Source/Utils.cxx b/Source/Utils.cxx index 557632c3..2cfb391a 100644 --- a/Source/Utils.cxx +++ b/Source/Utils.cxx @@ -207,3 +207,13 @@ namespace hCore return str; } } // namespace hCore + +extern "C" void memset(void* dst, char src, size_t len) +{ + hCore::rt_set_memory(dst, src, len); +} + +extern "C" void memcpy(void* dst, void* src, size_t len) +{ + hCore::rt_copy_memory(src, dst, len); +}
\ No newline at end of file @@ -5,16 +5,16 @@ ASM = nasm ASMFLAGS = -f elf64 # This file is the kernel, responsible of task management, memory, drivers and more. -KERNEL = hKernel.bin +KERNEL = hKernel.elf # The kernel entrypoint ENTRY = __KernelMain # Where the text segment is. -TEXT = 0x8000000 +TEXT = 0x400000 # we want a flat binary -FMT = binary +FMT = elf64 .PHONY: kernel-build kernel-build: |
