diff options
| author | Matteo Gmür <matteo.gmuer1@ost.ch> | 2025-04-11 14:07:29 +0000 |
|---|---|---|
| committer | Matteo Gmür <matteo.gmuer1@ost.ch> | 2025-04-11 14:07:29 +0000 |
| commit | 4909c80b31f3198030d3e666db87cfd39ac87c6f (patch) | |
| tree | c1e5f1d4a7fac07704b63a520a3c853d20b679a7 | |
| parent | e5c62b114da77d278afe077b222b2f4feae2b94e (diff) | |
| download | teachos-4909c80b31f3198030d3e666db87cfd39ac87c6f.tar.xz teachos-4909c80b31f3198030d3e666db87cfd39ac87c6f.zip | |
Remove gnu::naked functions where not necessary.
| -rw-r--r-- | arch/x86_64/src/kernel/cpu/segment_register.cpp | 36 |
1 files changed, 16 insertions, 20 deletions
diff --git a/arch/x86_64/src/kernel/cpu/segment_register.cpp b/arch/x86_64/src/kernel/cpu/segment_register.cpp index 9933e92..b59cd1b 100644 --- a/arch/x86_64/src/kernel/cpu/segment_register.cpp +++ b/arch/x86_64/src/kernel/cpu/segment_register.cpp @@ -5,22 +5,19 @@ namespace teachos::arch::kernel::cpu { - [[gnu::naked]] auto reload_data_segment_registers() -> void { - asm volatile("xor %rax, %rax\n" - "mov %rax, %ss\n" - "mov %rax, %ds\n" - "mov %rax, %es\n" - "mov %rax, %fs\n" - "mov %rax, %gs\n" - "ret" - : /* No output from call */ - : /* No input to call */ + asm volatile("xor %%rax, %%rax\n" + "mov %%rax, %%ss\n" + "mov %%rax, %%ds\n" + "mov %%rax, %%es\n" + "mov %%rax, %%fs\n" + "mov %%rax, %%gs\n" + : /* no output from call */ + : /* no input to call */ : "rax"); } - [[gnu::naked]] auto set_data_segment_registers(context_switching::interrupt_descriptor_table::segment_selector data_segment) -> void { asm volatile("xor %%rax, %%rax\n" @@ -29,15 +26,14 @@ namespace teachos::arch::kernel::cpu "mov %%rax, %%es\n" "mov %%rax, %%fs\n" "mov %%rax, %%gs\n" - "ret" - : /* No output from call */ + : /* no output from call */ : [input] "m"(data_segment) : "rax"); } auto read_code_segment_register() -> context_switching::interrupt_descriptor_table::segment_selector { - context_switching::interrupt_descriptor_table::segment_selector current_value; + context_switching::interrupt_descriptor_table::segment_selector current_value{}; asm volatile("mov %%cs, %[output]" : [output] "=r"(current_value)); return current_value; } @@ -45,11 +41,11 @@ namespace teachos::arch::kernel::cpu auto validate_data_segment_registers(context_switching::interrupt_descriptor_table::segment_selector data_segment) -> void { - context_switching::interrupt_descriptor_table::segment_selector ss; - context_switching::interrupt_descriptor_table::segment_selector ds; - context_switching::interrupt_descriptor_table::segment_selector es; - context_switching::interrupt_descriptor_table::segment_selector fs; - context_switching::interrupt_descriptor_table::segment_selector gs; + context_switching::interrupt_descriptor_table::segment_selector ss{}; + context_switching::interrupt_descriptor_table::segment_selector ds{}; + context_switching::interrupt_descriptor_table::segment_selector es{}; + context_switching::interrupt_descriptor_table::segment_selector fs{}; + context_switching::interrupt_descriptor_table::segment_selector gs{}; asm volatile( "mov %%ss, %[ss_output]\n" @@ -95,7 +91,7 @@ namespace teachos::arch::kernel::cpu "mov %[return_function], %%rax\n" "push %%rax\n" "iretq\n" - : + : /* no output from call */ : [data_segment] "m"(data_segment), [code_segment] "m"(code_segment), [return_function] "r"(address) : "rax"); } |
