diff options
| author | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-01-26 19:17:00 +0100 |
|---|---|---|
| committer | Amlal El Mahrouss <amlal.elmahrouss@icloud.com> | 2024-01-26 19:17:00 +0100 |
| commit | dd192787a70a973f2474720aea49af3f6ddabb7a (patch) | |
| tree | 6405e001c3b8eaf65e2b964d9917de0767914c0e | |
| parent | 5b972c4818f5bbcff5537c1fc3866f548647a3ef (diff) | |
h-core: Breaking kernel changes, IDevice becomes DeviceInterface, the
UPT is Read Only by default.
DebugManager allocates space for users by default (for a debug message)
Update PEF enum kPefArch.
Move Seeker into the /Services directory.
Complete merge of SupportKit to KernelKit.
Signed-off-by: Amlal El Mahrouss <amlal.elmahrouss@icloud.com>
22 files changed, 43 insertions, 49 deletions
diff --git a/HALKit/AMD64/DebugManager.asm b/HALKit/AMD64/DebugManager.asm index 5b9c3cc6..6c0bf149 100644 --- a/HALKit/AMD64/DebugManager.asm +++ b/HALKit/AMD64/DebugManager.asm @@ -15,10 +15,11 @@ __rt_debug_record_table: db "DebugMgr/hCore", 0xa, 0xd, 0 - resb 16 - dw 0x5566 + ;; User Data goes there + resb 64 __rt_debug_int_3: push 0x6677 ;; Debug check error +;; then halt and goes back to L0, thens halts... L0: hlt jmp $ diff --git a/KernelKit/CodeManager.hpp b/KernelKit/CodeManager.hpp index fdf80e91..04d5647b 100644 --- a/KernelKit/CodeManager.hpp +++ b/KernelKit/CodeManager.hpp @@ -56,16 +56,15 @@ namespace hCore namespace Utils { /// \brief Much like Mac OS's UPP. + /// This is read-only by design. /// It handles different kind of code. /// PowerPC <-> AMD64 for example. typedef struct UniversalProcedureTable { - public: - Char symbolName[kPefNameLen]; - VoidPtr symbolPtr; - SizeT symbolArchitecture; - - } UniversalProcedureTableType; + const Char NAME[kPefNameLen]; + const VoidPtr TRAP; + const SizeT ARCH; + } __attribute__((packed)) UniversalProcedureTableType; bool execute_from_image(PEFLoader& exec); } diff --git a/KernelKit/DebugOutput.hpp b/KernelKit/DebugOutput.hpp index 3bfb0144..1e30e6a4 100644 --- a/KernelKit/DebugOutput.hpp +++ b/KernelKit/DebugOutput.hpp @@ -16,10 +16,10 @@ namespace hCore { // @brief Emulates a VT100 terminal. - class TerminalDevice final : public IDevice<const char*> + class TerminalDevice final : public DeviceInterface<const char*> { public: - TerminalDevice(void (*print)(const char *), void (*get)(const char *)) : IDevice<const char*>(print, get) {} + TerminalDevice(void (*print)(const char *), void (*get)(const char *)) : DeviceInterface<const char*>(print, get) {} virtual ~TerminalDevice() {} /// @brief returns device name (terminal name) diff --git a/KernelKit/Device.hpp b/KernelKit/Device.hpp index e407f4e9..b117cf7f 100644 --- a/KernelKit/Device.hpp +++ b/KernelKit/Device.hpp @@ -19,37 +19,37 @@ namespace hCore { template<typename T> - class IDevice; + class DeviceInterface; template<typename T> - class IDevice + class DeviceInterface { public: - IDevice(void (*Out)(T), void (*In)(T)) + explicit DeviceInterface(void (*Out)(T), void (*In)(T)) : m_Out(Out), m_In(In) {} - virtual ~IDevice() = default; + virtual ~DeviceInterface() = default; public: - IDevice &operator=(const IDevice<T> &) = default; - IDevice(const IDevice<T> &) = default; + DeviceInterface &operator=(const DeviceInterface<T> &) = default; + DeviceInterface(const DeviceInterface<T> &) = default; public: - IDevice<T> &operator<<(T Data) + DeviceInterface<T> &operator<<(T Data) { m_Out(Data); return *this; } - IDevice<T> &operator>>(T Data) + DeviceInterface<T> &operator>>(T Data) { m_In(Data); return *this; } - virtual const char *Name() const + virtual const char* Name() const { - return ("IDevice"); + return ("DeviceInterface"); } operator bool() { return m_Out && m_In; } diff --git a/KernelKit/DriveManager.hpp b/KernelKit/DriveManager.hpp index bb4e453c..9951c9cf 100644 --- a/KernelKit/DriveManager.hpp +++ b/KernelKit/DriveManager.hpp @@ -64,7 +64,7 @@ namespace hCore #define kPacketZip "file/x-zip" //! drive as a device. - typedef IDevice<DriveTraits> Drive; + typedef DeviceInterface<DriveTraits> Drive; typedef Drive* DrivePtr; class DriveSelector final diff --git a/KernelKit/PEF.hpp b/KernelKit/PEF.hpp index 40c9f8a0..a2f5c5b8 100644 --- a/KernelKit/PEF.hpp +++ b/KernelKit/PEF.hpp @@ -32,7 +32,7 @@ namespace hCore kPefArchAMD64, kPefArchRISCV, kPefArch64x0, /* 64x000. */ - kPefArchPOWER, + kPefArch32x0, kPefArchInvalid = 0xFF, }; diff --git a/KernelKit/SharedObjectCore.hxx b/KernelKit/SharedObjectCore.hxx index f648fdc0..94b0ead2 100644 --- a/KernelKit/SharedObjectCore.hxx +++ b/KernelKit/SharedObjectCore.hxx @@ -7,8 +7,8 @@ * ======================================================== */ -#ifndef __SUPPORTKIT_SHARED_OBJECT_CORE_HXX__ -#define __SUPPORTKIT_SHARED_OBJECT_CORE_HXX__ +#ifndef __KERNELKIT_SHARED_OBJECT_CORE_HXX__ +#define __KERNELKIT_SHARED_OBJECT_CORE_HXX__ #include <NewKit/Defines.hpp> #include <KernelKit/Loader.hpp> @@ -54,4 +54,4 @@ namespace hCore } } -#endif /* ifndef __SUPPORTKIT_SHARED_OBJECT_CORE_HXX__ */ +#endif /* ifndef __KERNELKIT_SHARED_OBJECT_CORE_HXX__ */ diff --git a/NetworkKit/NetworkDevice.hpp b/NetworkKit/NetworkDevice.hpp index fd6b1d2b..ce4361a9 100644 --- a/NetworkKit/NetworkDevice.hpp +++ b/NetworkKit/NetworkDevice.hpp @@ -17,7 +17,7 @@ namespace hCore { struct NetworkDeviceCommand; - class NetworkDevice final : public IDevice<NetworkDeviceCommand> + class NetworkDevice final : public DeviceInterface<NetworkDeviceCommand> { public: NetworkDevice(void(*out)(NetworkDeviceCommand), void(*in)(NetworkDeviceCommand), diff --git a/NewKit/Macros.hpp b/NewKit/Macros.hpp index 7259f1a7..8972e7b5 100644 --- a/NewKit/Macros.hpp +++ b/NewKit/Macros.hpp @@ -38,7 +38,7 @@ #endif // #ifndef ATTRIBUTE #ifndef __hCore__ -#define __hCore__ (20230208) +#define __hCore__ (202401) #endif // !__hCore__ #ifndef EXTERN_C diff --git a/Services/.gitkeep b/Services/.gitkeep new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/Services/.gitkeep diff --git a/Seeker/Seeker.hxx b/Services/Seeker/Seeker.hxx index 0670c128..0670c128 100644 --- a/Seeker/Seeker.hxx +++ b/Services/Seeker/Seeker.hxx diff --git a/Seeker/SeekerAbout.cxx b/Services/Seeker/SeekerAbout.cxx index 41046e35..41046e35 100644 --- a/Seeker/SeekerAbout.cxx +++ b/Services/Seeker/SeekerAbout.cxx diff --git a/Seeker/SeekerAssert.cxx b/Services/Seeker/SeekerAssert.cxx index 0566b457..0566b457 100644 --- a/Seeker/SeekerAssert.cxx +++ b/Services/Seeker/SeekerAssert.cxx diff --git a/Seeker/SeekerDriver.cxx b/Services/Seeker/SeekerDriver.cxx index 6a6008d7..6a6008d7 100644 --- a/Seeker/SeekerDriver.cxx +++ b/Services/Seeker/SeekerDriver.cxx diff --git a/Seeker/SeekerFileWnd.cxx b/Services/Seeker/SeekerFileWnd.cxx index b2636cc6..b2636cc6 100644 --- a/Seeker/SeekerFileWnd.cxx +++ b/Services/Seeker/SeekerFileWnd.cxx diff --git a/Seeker/SeekerSubsystemStart.cxx b/Services/Seeker/SeekerSubsystemStart.cxx index 905a7345..9fa6e409 100644 --- a/Seeker/SeekerSubsystemStart.cxx +++ b/Services/Seeker/SeekerSubsystemStart.cxx @@ -14,7 +14,7 @@ extern "C" Void __InitCommonCtrls(Void); extern "C" Void __InitSeekerCtrls(Void); extern "C" char** __InitArgs(int* argc); -extern "C" Void __InvokeMain(int argc, char** argv); +extern "C++" Void __InvokeMain(int argc, char** argv); /* @brief As requested by PEF. */ extern "C" Void __start(Void) diff --git a/Source/CodeManager.cxx b/Source/CodeManager.cxx index 8b0689c0..ba117346 100644 --- a/Source/CodeManager.cxx +++ b/Source/CodeManager.cxx @@ -20,11 +20,11 @@ namespace hCore { namespace Detail { - UInt32 rt_get_pef_platform(void) + UInt32 rt_get_pef_platform(void) noexcept { -#ifdef __powerpc - return kPefArchPOWER; -#elif defined(__arc__) +#ifdef __32x0__ + return kPefArch32x0; +#elif defined(__64x0__) return kPefArch64x0; #elif defined(__x86_64__) return kPefArchAMD64; diff --git a/Source/KMain.cxx b/Source/KMain.cxx index 8a96aee0..f6a4f54c 100644 --- a/Source/KMain.cxx +++ b/Source/KMain.cxx @@ -16,7 +16,7 @@ extern "C" void Main(hCore::VoidPtr this_image) MUST_PASS(hCore::initialize_hardware_components()); hCore::IFilesystemManager::Mount(new hCore::NewFilesystemManager()); - hCore::PEFLoader img("/System/Seeker"); + hCore::PEFLoader img("/System/Seeker.out"); if (!hCore::Utils::execute_from_image(img)) { diff --git a/Source/Network/NetworkDevice.cpp b/Source/Network/NetworkDevice.cpp index e20aeaac..766e1f2e 100644 --- a/Source/Network/NetworkDevice.cpp +++ b/Source/Network/NetworkDevice.cpp @@ -15,7 +15,7 @@ namespace hCore { NetworkDevice::NetworkDevice(void (*out)(NetworkDeviceCommand), void (*in)(NetworkDeviceCommand), void(*on_cleanup)(void)) - : IDevice<NetworkDeviceCommand>(out, in), fCleanup(on_cleanup) + : DeviceInterface<NetworkDeviceCommand>(out, in), fCleanup(on_cleanup) { #ifdef __DEBUG__ kcout << "NetworkDevice init.\r\n"; diff --git a/StorageKit/NVME.hpp b/StorageKit/NVME.hpp index 68c3a0b7..13f6131c 100644 --- a/StorageKit/NVME.hpp +++ b/StorageKit/NVME.hpp @@ -16,13 +16,13 @@ namespace hCore { class NVMEPacket; - class NVMEDevice : public IDevice<NVMEPacket> + class NVMEDevice : public DeviceInterface<NVMEPacket> { public: NVMEDevice(void(*Out)(NVMEPacket outpacket), void(*In)(NVMEPacket inpacket), void(*Cleanup)(void)) - : IDevice(Out, In), fCleanup(Cleanup) + : DeviceInterface(Out, In), fCleanup(Cleanup) {} virtual ~NVMEDevice() diff --git a/newBoot/Source/Start.cxx b/newBoot/Source/Start.cxx index 5f320ac7..7c8b5e04 100644 --- a/newBoot/Source/Start.cxx +++ b/newBoot/Source/Start.cxx @@ -9,11 +9,9 @@ #include <BootKit/Boot.hpp> -extern "C" void __AppMain(void) +extern "C" void Main(void) { BKTextWriter writer; - writer.WriteString("Starting hCore...", kBlack, kWhite, 0, 0); - - const char* args[] = { "/hCore.bin" }; - const char* envp[] = { "/" }; + writer.WriteString("Booting Kernel...", kBlack, kWhite, 0, 0); + } diff --git a/newBoot/Source/makefile b/newBoot/Source/makefile index 81bb2096..835e4afa 100644 --- a/newBoot/Source/makefile +++ b/newBoot/Source/makefile @@ -1,13 +1,9 @@ -CC=fcc -CCFLAGS=-I ../ -ffreestanding -nostdlib -ASM=fasm -ASMFLAGS=/ARC /PEF +CC=gcc +CCFLAGS=-I../ -I../../ -std=c++20 -ffreestanding -nostdlib -c .PHONY: arch-arc arch-arc: - ${CC} ${CCFLAGS} Boot.cpp Start.cpp -c - ${ASM} ${ASMFLAGS} Arch/ARC/XPM.asm - ${ASM} ${ASMFLAGS} Arch/ARC/Crt0.asm + ${CC} ${CCFLAGS} Start.cxx CC_GNU=x86_64-elf-gcc LD_GNU=x86_64-elf-ld @@ -16,7 +12,7 @@ FLAG_GNU=-I../ -I../../../efiSDK/inc -c -ffreestanding -fno-rtti -fno-exceptions .PHONY: arch-amd64 arch-amd64: $(CC_GNU) $(FLAG_GNU) Arch/AMD64/BootAMD64.cxx *.cxx - $(LD_GNU) *.o -e __AppMain -Ttext 0x000 --oformat binary -o BootloaderStage2.bin + $(LD_GNU) *.o -e Main -Ttext 0x000 --oformat binary -o BootloaderStage2.bin .PHONY: clean clean: |
