diff options
| -rw-r--r-- | arch/x86_64/src/kernel/cpu/segment_register.cpp | 9 |
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) |
