Stopping mess up asm callee-clobbered list with `push` `pop`, clean up code to make it more readable. Signed-off-by: SU Hang <darcy.sh@xxxxxxxxxxxx> --- lib/x86/usermode.c | 22 +--------------------- 1 file changed, 1 insertion(+), 21 deletions(-) diff --git a/lib/x86/usermode.c b/lib/x86/usermode.c index e22fb8f..477cb9f 100644 --- a/lib/x86/usermode.c +++ b/lib/x86/usermode.c @@ -66,32 +66,12 @@ uint64_t run_in_user(usermode_func func, unsigned int fault_vector, "iretq\n" "user_mode:\n\t" - /* Back up registers before invoking func */ - "push %%rbx\n\t" - "push %%rcx\n\t" - "push %%rdx\n\t" - "push %%r8\n\t" - "push %%r9\n\t" - "push %%r10\n\t" - "push %%r11\n\t" - "push %%rdi\n\t" - "push %%rsi\n\t" /* Call user mode function */ "mov %[arg1], %%rdi\n\t" "mov %[arg2], %%rsi\n\t" "mov %[arg3], %%rdx\n\t" "mov %[arg4], %%rcx\n\t" "call *%[func]\n\t" - /* Restore registers */ - "pop %%rsi\n\t" - "pop %%rdi\n\t" - "pop %%r11\n\t" - "pop %%r10\n\t" - "pop %%r9\n\t" - "pop %%r8\n\t" - "pop %%rdx\n\t" - "pop %%rcx\n\t" - "pop %%rbx\n\t" /* Return to kernel via system call */ "int %[kernel_entry_vector]\n\t" /* Kernel Mode */ @@ -112,7 +92,7 @@ uint64_t run_in_user(usermode_func func, unsigned int fault_vector, sizeof(user_stack)), [kernel_entry_vector]"i"(RET_TO_KERNEL_IRQ) : - "rsi", "rdi", "rcx", "rdx"); + "rsi", "rdi", "rbx", "rcx", "rdx", "r8", "r9", "r10", "r11"); return rax; } -- 2.32.0.3.g01195cf9f