diff options
Diffstat (limited to 'arch/x86_64/include')
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 |
