aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/include
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64/include')
-rw-r--r--arch/x86_64/include/arch/context_switching/syscall/main.hpp20
-rw-r--r--arch/x86_64/include/arch/context_switching/syscall/syscall_enable.hpp10
-rw-r--r--arch/x86_64/include/arch/context_switching/syscall/syscall_handler.hpp7
-rw-r--r--arch/x86_64/include/arch/user/main.hpp2
4 files changed, 25 insertions, 14 deletions
diff --git a/arch/x86_64/include/arch/context_switching/syscall/main.hpp b/arch/x86_64/include/arch/context_switching/syscall/main.hpp
index c75268a..ae4c2db 100644
--- a/arch/x86_64/include/arch/context_switching/syscall/main.hpp
+++ b/arch/x86_64/include/arch/context_switching/syscall/main.hpp
@@ -1,14 +1,22 @@
#ifndef TEACHOS_ARCH_X86_64_CONTEXT_SWITCHING_SYSCALL_MAIN_HPP
#define TEACHOS_ARCH_X86_64_CONTEXT_SWITCHING_SYSCALL_MAIN_HPP
-#include "arch/context_switching/syscall/syscall_handler.hpp"
-
-#include <array>
#include <cstdint>
-#include <optional>
namespace teachos::arch::context_switching::syscall
{
+ enum class type : uint64_t
+ {
+ WRITE = 1U
+ };
+
+ enum class error
+ {
+ OK = 0U,
+ };
+
+ constexpr bool operator!(error e) { return e == error::OK; }
+
struct arguments
{
uint64_t arg_0{};
@@ -19,9 +27,7 @@ namespace teachos::arch::context_switching::syscall
uint64_t arg_5{};
};
- auto enable_syscall() -> void;
-
- auto syscall(type syscall_number, arguments args = {}) -> uint64_t;
+ auto syscall(type syscall_number, arguments args = {}) -> error;
} // namespace teachos::arch::context_switching::syscall
diff --git a/arch/x86_64/include/arch/context_switching/syscall/syscall_enable.hpp b/arch/x86_64/include/arch/context_switching/syscall/syscall_enable.hpp
new file mode 100644
index 0000000..59b97b2
--- /dev/null
+++ b/arch/x86_64/include/arch/context_switching/syscall/syscall_enable.hpp
@@ -0,0 +1,10 @@
+#ifndef TEACHOS_ARCH_X86_64_CONTEXT_SWITCHING_SYSCALL_SYSCALL_ENABLE_HPP
+#define TEACHOS_ARCH_X86_64_CONTEXT_SWITCHING_SYSCALL_SYSCALL_ENABLE_HPP
+
+namespace teachos::arch::context_switching::syscall
+{
+ auto enable_syscall() -> void;
+
+} // namespace teachos::arch::context_switching::syscall
+
+#endif // TEACHOS_ARCH_X86_64_CONTEXT_SWITCHING_SYSCALL_SYSCALL_ENABLE_HPP
diff --git a/arch/x86_64/include/arch/context_switching/syscall/syscall_handler.hpp b/arch/x86_64/include/arch/context_switching/syscall/syscall_handler.hpp
index e076995..2e7bcd1 100644
--- a/arch/x86_64/include/arch/context_switching/syscall/syscall_handler.hpp
+++ b/arch/x86_64/include/arch/context_switching/syscall/syscall_handler.hpp
@@ -5,16 +5,11 @@
namespace teachos::arch::context_switching::syscall
{
- enum type : uint64_t
- {
- WRITE = 1U
- };
-
/**
* @brief Handler for SYSCALL instruction. Calls a specific implementation based
* on the register RAX.
*
- * @return Returns with SYSRETQ
+ * @return Returns with LEAVE, SYSRETQ
*/
auto syscall_handler() -> void;
diff --git a/arch/x86_64/include/arch/user/main.hpp b/arch/x86_64/include/arch/user/main.hpp
index 7127d07..4f1d005 100644
--- a/arch/x86_64/include/arch/user/main.hpp
+++ b/arch/x86_64/include/arch/user/main.hpp
@@ -7,4 +7,4 @@ namespace teachos::arch::user
} // namespace teachos::arch::user
-#endif // TEACHOS_ARCH_X86_64_USER_MAIN_HPP \ No newline at end of file
+#endif // TEACHOS_ARCH_X86_64_USER_MAIN_HPP