Skip to content

Commit

Permalink
remove obsolete saving of DS/ES registers
Browse files Browse the repository at this point in the history
On x86_64, DS/ES are not longer as segmenet registers.
During a system call it isn't reguired to save these registers.

This PR based on feedback from the Heinrich-Heine-Universität
Düsseldorf.
  • Loading branch information
stlankes committed Nov 9, 2023
1 parent 0e37958 commit 9489281
Showing 1 changed file with 0 additions and 13 deletions.
13 changes: 0 additions & 13 deletions src/arch/x86_64/kernel/syscall.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,6 @@ pub unsafe extern "C" fn syscall_handler() {
"push r9",
"push r10",
"push r11",
// save ds/es and set to kernel data descriptor
"mov rcx, ds",
"push rcx",
"mov rcx, es",
"push rcx",
"mov rcx, {kernel_ds}",
"mov ds, rcx",
"mov es, rcx",
// switch to kernel stack
"swapgs",
"mov rcx, rsp",
Expand All @@ -44,10 +36,6 @@ pub unsafe extern "C" fn syscall_handler() {
"pop rcx",
"mov rsp, rcx",
"swapgs",
"pop rcx",
"mov es, rcx",
"pop rcx",
"mov ds, rcx",
"pop r11",
"pop r10",
"pop r9",
Expand All @@ -58,6 +46,5 @@ pub unsafe extern "C" fn syscall_handler() {
"pop rcx",
"sysretq",
sys_handler = sym SYSHANDLER_TABLE,
kernel_ds = const 0x10,
options(noreturn));
}

0 comments on commit 9489281

Please sign in to comment.