diff options
| author | Amlal El Mahrouss <amlal@el-mahrouss-logic.com> | 2024-04-03 21:39:57 +0200 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal@el-mahrouss-logic.com> | 2024-04-03 21:39:57 +0200 |
| commit | e3d15c1db1ccb906561e80012d624aecf1ae8d8d (patch) | |
| tree | 25a26f565ab5c442395299cbd2f2c4c1ab3f0af6 | |
| parent | 5e585fa5cdcb9648cf84a650b409e7589de1cecf (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-- | .project | 27 | ||||
| -rw-r--r-- | Private/Builtins/MBCI/Defines.hxx | 26 | ||||
| -rw-r--r-- | Private/HALKit/AMD64/HalHardwareAPIC.cpp | 2 | ||||
| -rw-r--r-- | Private/HALKit/PowerPC/HalHardware.cxx | 8 | ||||
| -rw-r--r-- | Private/NewKit/PageAllocator.hpp | 2 | ||||
| -rw-r--r-- | Private/Source/ProcessScheduler.cxx | 2 |
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; } |
