summaryrefslogtreecommitdiffhomepage
path: root/Private/ArchKit/ArchKit.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'Private/ArchKit/ArchKit.hpp')
-rw-r--r--Private/ArchKit/ArchKit.hpp106
1 files changed, 45 insertions, 61 deletions
diff --git a/Private/ArchKit/ArchKit.hpp b/Private/ArchKit/ArchKit.hpp
index eefd6f5f..1b3d7884 100644
--- a/Private/ArchKit/ArchKit.hpp
+++ b/Private/ArchKit/ArchKit.hpp
@@ -9,80 +9,64 @@
#pragma once
+#include <NewKit/Array.hpp>
#include <NewKit/Defines.hpp>
#include <NewKit/Function.hpp>
-#include <NewKit/Array.hpp>
#ifdef __x86_64__
-# include <HALKit/AMD64/Hypervisor.hpp>
-# include <HALKit/AMD64/Processor.hpp>
-# include <HALKit/AMD64/HalPageAlloc.hpp>
+#include <HALKit/AMD64/HalPageAlloc.hpp>
+#include <HALKit/AMD64/Hypervisor.hpp>
+#include <HALKit/AMD64/Processor.hpp>
#elif defined(__powerpc64__)
-# include <HALKit/PowerPC/Processor.hpp>
+#include <HALKit/PowerPC/Processor.hpp>
#else
-# error Unknown architecture
+#error Unknown architecture
#endif
-namespace HCore
-{
- class SystemCallDefaultImpl final
- {
- public:
- static Int32 Exec() { return 0; }
-
- };
-
- template <SSizeT ID>
- class SystemCall
- {
- public:
- explicit SystemCall()
- {
- kcout << "SystemCall::SystemCall";
- }
-
- virtual ~SystemCall()
- {
- kcout << "SystemCall::~SystemCall";
- }
-
- SystemCall &operator=(const SystemCall &) = default;
- SystemCall(const SystemCall &) = default;
-
- // Should not be called alone!
- virtual bool Exec() const
- {
- kcout << "SystemCall->Exec<RET>()";
- return false;
- }
-
- };
-
- constexpr static inline SSizeT syscall_hash(const char *seed, int mul)
- {
- SSizeT hash = 0;
-
- for (SSizeT idx = 0; seed[idx] != 0; ++idx)
- {
- hash += seed[idx];
- hash ^= mul;
- }
-
- return hash;
- }
-
- bool ke_init_hal();
-} // namespace HCore
+namespace HCore {
+template <SSizeT ID>
+class SystemCall {
+ public:
+ explicit SystemCall() { kcout << "SystemCall::SystemCall"; }
+
+ virtual ~SystemCall() { kcout << "SystemCall::~SystemCall"; }
+
+ SystemCall &operator=(const SystemCall &) = default;
+ SystemCall(const SystemCall &) = default;
+
+ // Should not be called alone!
+ virtual bool Exec() const {
+ kcout << "SystemCall->Exec<RET>()";
+ return false;
+ }
+};
+
+constexpr static inline SSizeT syscall_hash(const char *seed, int mul) {
+ SSizeT hash = 0;
+
+ for (SSizeT idx = 0; seed[idx] != 0; ++idx) {
+ hash += seed[idx];
+ hash ^= mul;
+ }
+
+ return hash;
+}
+
+bool ke_init_hal();
+} // namespace HCore
#define kMaxSyscalls 0x100
#define kSyscallGate 0x21
-extern HCore::Array<void (*)(HCore::Int32 id, HCore::HAL::StackFrame *), kMaxSyscalls> kSyscalls;
+extern HCore::Array<void (*)(HCore::Int32 id, HCore::HAL::StackFrame *),
+ kMaxSyscalls>
+ kSyscalls;
-extern "C" void rt_wait_for_io();
-extern "C" void rt_syscall_handle(HCore::HAL::StackFrame* stackFrame);
-extern "C" HCore::HAL::StackFrame* rt_get_current_context();
-extern "C" int rt_do_context_switch(HCore::HAL::StackFrame* stackFrame);
+extern "C" HCore::Void rt_wait_for_io();
+extern "C" HCore::Void rt_syscall_handle(HCore::HAL::StackFramePtr stackFrame);
+extern "C" HCore::HAL::StackFramePtr rt_get_current_context();
+extern "C" HCore::Int32 rt_do_context_switch(
+ HCore::HAL::StackFramePtr stackFrame);
inline HCore::VoidPtr kKernelVirtualStart;
inline HCore::UIntPtr kKernelVirtualSize;