summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-01-26 19:17:00 +0100
committerAmlal El Mahrouss <amlal.elmahrouss@icloud.com>2024-01-26 19:17:00 +0100
commitdd192787a70a973f2474720aea49af3f6ddabb7a (patch)
tree6405e001c3b8eaf65e2b964d9917de0767914c0e
parent5b972c4818f5bbcff5537c1fc3866f548647a3ef (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>
-rw-r--r--HALKit/AMD64/DebugManager.asm5
-rw-r--r--KernelKit/CodeManager.hpp11
-rw-r--r--KernelKit/DebugOutput.hpp4
-rw-r--r--KernelKit/Device.hpp20
-rw-r--r--KernelKit/DriveManager.hpp2
-rw-r--r--KernelKit/PEF.hpp2
-rw-r--r--KernelKit/SharedObjectCore.hxx6
-rw-r--r--NetworkKit/NetworkDevice.hpp2
-rw-r--r--NewKit/Macros.hpp2
-rw-r--r--Services/.gitkeep0
-rw-r--r--Services/Seeker/Seeker.hxx (renamed from Seeker/Seeker.hxx)0
-rw-r--r--Services/Seeker/SeekerAbout.cxx (renamed from Seeker/SeekerAbout.cxx)0
-rw-r--r--Services/Seeker/SeekerAssert.cxx (renamed from Seeker/SeekerAssert.cxx)0
-rw-r--r--Services/Seeker/SeekerDriver.cxx (renamed from Seeker/SeekerDriver.cxx)0
-rw-r--r--Services/Seeker/SeekerFileWnd.cxx (renamed from Seeker/SeekerFileWnd.cxx)0
-rw-r--r--Services/Seeker/SeekerSubsystemStart.cxx (renamed from Seeker/SeekerSubsystemStart.cxx)2
-rw-r--r--Source/CodeManager.cxx8
-rw-r--r--Source/KMain.cxx2
-rw-r--r--Source/Network/NetworkDevice.cpp2
-rw-r--r--StorageKit/NVME.hpp4
-rw-r--r--newBoot/Source/Start.cxx8
-rw-r--r--newBoot/Source/makefile12
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: