aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86_64')
-rw-r--r--arch/x86_64/src/kernel/cpu/segment_register.cpp9
1 files changed, 6 insertions, 3 deletions
diff --git a/arch/x86_64/src/kernel/cpu/segment_register.cpp b/arch/x86_64/src/kernel/cpu/segment_register.cpp
index 891d72c..9933e92 100644
--- a/arch/x86_64/src/kernel/cpu/segment_register.cpp
+++ b/arch/x86_64/src/kernel/cpu/segment_register.cpp
@@ -14,7 +14,10 @@ namespace teachos::arch::kernel::cpu
"mov %rax, %es\n"
"mov %rax, %fs\n"
"mov %rax, %gs\n"
- "ret");
+ "ret"
+ : /* No output from call */
+ : /* No input to call */
+ : "rax");
}
[[gnu::naked]]
@@ -28,7 +31,8 @@ namespace teachos::arch::kernel::cpu
"mov %%rax, %%gs\n"
"ret"
: /* No output from call */
- : [input] "m"(data_segment));
+ : [input] "m"(data_segment)
+ : "rax");
}
auto read_code_segment_register() -> context_switching::interrupt_descriptor_table::segment_selector
@@ -90,7 +94,6 @@ namespace teachos::arch::kernel::cpu
"push %[code_segment]\n"
"mov %[return_function], %%rax\n"
"push %%rax\n"
-
"iretq\n"
:
: [data_segment] "m"(data_segment), [code_segment] "m"(code_segment), [return_function] "r"(address)