summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlalelmahrouss@icloud.com>2024-01-19 12:44:57 +0100
committerAmlal El Mahrouss <amlalelmahrouss@icloud.com>2024-01-19 12:45:09 +0100
commit9d6babb9a3b9ffbedc1fa377f47ff6b3f7585056 (patch)
tree8d24c521d8986a8a2ed0273763bfe309dd05b524
parent149ad21b7188d21d726215c98d0d74835ea4e737 (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.hxx4
-rw-r--r--HALKit/PowerPC/Processor.cpp68
-rw-r--r--Source/KMain.cxx1
-rw-r--r--Source/NewFS.cxx15
-rw-r--r--Source/Utils.cxx10
-rw-r--r--makefile6
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
diff --git a/makefile b/makefile
index 96badf62..d267a474 100644
--- a/makefile
+++ b/makefile
@@ -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: