summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@el-mahrouss-logic.com>2024-04-03 21:39:57 +0200
committerAmlal El Mahrouss <amlal@el-mahrouss-logic.com>2024-04-03 21:39:57 +0200
commite3d15c1db1ccb906561e80012d624aecf1ae8d8d (patch)
tree25a26f565ab5c442395299cbd2f2c4c1ab3f0af6
parent5e585fa5cdcb9648cf84a650b409e7589de1cecf (diff)
Kernel: A lot of changes, please expand the the message.
Meta: Add eclipse project. PowerPC: WiP implementation of a 64-bit PowerPC kernel, see specs. -> NOTE: It will still be a customized AMD64 machine, running a custom version of CoreBoot. Kernel: Start implementing MBCI support into the kernel. Signed-off-by: Amlal El Mahrouss <amlal@el-mahrouss-logic.com>
-rw-r--r--.project27
-rw-r--r--Private/Builtins/MBCI/Defines.hxx26
-rw-r--r--Private/HALKit/AMD64/HalHardwareAPIC.cpp2
-rw-r--r--Private/HALKit/PowerPC/HalHardware.cxx8
-rw-r--r--Private/NewKit/PageAllocator.hpp2
-rw-r--r--Private/Source/ProcessScheduler.cxx2
6 files changed, 58 insertions, 9 deletions
diff --git a/.project b/.project
new file mode 100644
index 00000000..c674ce93
--- /dev/null
+++ b/.project
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>micro-kernel</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+ <triggers>clean,full,incremental,</triggers>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+ <triggers>full,incremental,</triggers>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.cdt.core.cnature</nature>
+ <nature>org.eclipse.cdt.core.ccnature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+ <nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+ </natures>
+</projectDescription>
diff --git a/Private/Builtins/MBCI/Defines.hxx b/Private/Builtins/MBCI/Defines.hxx
index b347485c..817c6f56 100644
--- a/Private/Builtins/MBCI/Defines.hxx
+++ b/Private/Builtins/MBCI/Defines.hxx
@@ -8,6 +8,32 @@
#include <NewKit/Defines.hpp>
+#define kMBCIHostMagic "MBCI"
+
+namespace NewOS {
struct MBCIHostInterface;
struct MBCIDeviceInterface;
struct MBCIPacketInterface;
+
+/// @brief Host interface
+struct MBCIHostInterface final {
+ UInt32 HostId;
+ UInt32 VendorId;
+ UInt64 BaseAddressRegister;
+ UInt64 DeviceSize;
+ UInt8 MemoryType;
+ UInt8 Magic[4];
+ UInt8 HostType;
+ UInt8 HostFlags;
+};
+
+/// @brief MBCI host flags.
+enum MBCIHostFlags {
+ kMBCIHostFlagsSupportsPageProtection, /// Page protected.
+ kMBCIHostFlagsSupportsAPM, /// Advanced Power Management.
+ kMBCIHostFlagsSupportsDaisyChain, /// Is daisy chained.
+ kMBCIHostFlagsSupportsHWInterrupts, /// Has HW interrupts.
+ kMBCIHostFlagsSupportsDMA, /// Has DMA.
+ kMBCIHostFlagsCount,
+};
+} // namespace NewOS
diff --git a/Private/HALKit/AMD64/HalHardwareAPIC.cpp b/Private/HALKit/AMD64/HalHardwareAPIC.cpp
index 0c65ed5d..6d5fe234 100644
--- a/Private/HALKit/AMD64/HalHardwareAPIC.cpp
+++ b/Private/HALKit/AMD64/HalHardwareAPIC.cpp
@@ -30,8 +30,6 @@ static void __rt_hang_proc(void) {
void rt_hang_thread(HAL::StackFrame* stack) {
HAL::rt_cli();
- // TODO
-
HAL::rt_sti();
}
} // namespace NewOS
diff --git a/Private/HALKit/PowerPC/HalHardware.cxx b/Private/HALKit/PowerPC/HalHardware.cxx
index 9fc278a6..96f0a433 100644
--- a/Private/HALKit/PowerPC/HalHardware.cxx
+++ b/Private/HALKit/PowerPC/HalHardware.cxx
@@ -12,12 +12,12 @@ namespace HAL {
UIntPtr hal_alloc_page(bool rw, bool user) { return 0; }
} // namespace HAL
-// @brief wakes up thread.
-// wakes up thread from hang.
+/// @brief wakes up thread.
+/// wakes up thread from hang.
void rt_wakeup_thread(HAL::StackFrame* stack) {}
-// @brief makes thread sleep.
-// hooks and hangs thread to prevent code from executing.
+/// @brief makes thread sleep.
+/// hooks and hangs thread to prevent code from executing.
void rt_hang_thread(HAL::StackFrame* stack) {}
void ke_com_print(const Char* bytes) {
diff --git a/Private/NewKit/PageAllocator.hpp b/Private/NewKit/PageAllocator.hpp
index 0b691a64..6d9478cb 100644
--- a/Private/NewKit/PageAllocator.hpp
+++ b/Private/NewKit/PageAllocator.hpp
@@ -16,6 +16,4 @@ VoidPtr create_page_wrapper(Boolean rw, Boolean user);
void exec_disable(UIntPtr addr);
bool page_disable(UIntPtr addr);
} // namespace Detail
-
-// TODO: SwapVirtualMemoryDevice class!
} // namespace NewOS
diff --git a/Private/Source/ProcessScheduler.cxx b/Private/Source/ProcessScheduler.cxx
index 59b9bcea..202dcec5 100644
--- a/Private/Source/ProcessScheduler.cxx
+++ b/Private/Source/ProcessScheduler.cxx
@@ -130,7 +130,7 @@ void ProcessHeader::Exit(Int32 exit_code) {
this->HeapPtr = nullptr;
this->HeapCursor = nullptr;
- this->FreeMemory = 0UL; // TODO: fill available heap.
+ this->FreeMemory = 0UL;
this->UsedMemory = 0UL;
}