1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-24 22:17:42 +00:00

Kernel: Rename {ss,esp}_if_crossRing to userspace_{ss,esp}

These were always so awkwardly named.
This commit is contained in:
Andreas Kling 2020-01-09 18:02:01 +01:00
parent f007a63b10
commit 17ef5bc0ac
6 changed files with 15 additions and 15 deletions

View file

@ -135,8 +135,8 @@ static void dump(const RegisterDump& regs)
ss = regs.ss; ss = regs.ss;
esp = regs.esp; esp = regs.esp;
} else { } else {
ss = regs.ss_if_crossRing; ss = regs.userspace_ss;
esp = regs.esp_if_crossRing; esp = regs.userspace_esp;
} }
kprintf("exception code: %04x (isr: %04x)\n", regs.exception_code, regs.isr_number); kprintf("exception code: %04x (isr: %04x)\n", regs.exception_code, regs.isr_number);
@ -247,8 +247,8 @@ void page_fault_handler(RegisterDump regs)
#endif #endif
bool faulted_in_userspace = (regs.cs & 3) == 3; bool faulted_in_userspace = (regs.cs & 3) == 3;
if (faulted_in_userspace && !MM.validate_user_stack(current->process(), VirtualAddress(regs.esp_if_crossRing))) { if (faulted_in_userspace && !MM.validate_user_stack(current->process(), VirtualAddress(regs.userspace_esp))) {
dbgprintf("Invalid stack pointer: %p\n", regs.esp_if_crossRing); dbgprintf("Invalid stack pointer: %p\n", regs.userspace_esp);
handle_crash(regs, "Bad stack on page fault", SIGSTKFLT); handle_crash(regs, "Bad stack on page fault", SIGSTKFLT);
ASSERT_NOT_REACHED(); ASSERT_NOT_REACHED();
} }

View file

@ -410,8 +410,8 @@ struct [[gnu::packed]] RegisterDump
u32 eip; u32 eip;
u32 cs; u32 cs;
u32 eflags; u32 eflags;
u32 esp_if_crossRing; u32 userspace_esp;
u32 ss_if_crossRing; u32 userspace_ss;
}; };
struct [[gnu::aligned(16)]] FPUState struct [[gnu::aligned(16)]] FPUState

View file

@ -587,7 +587,7 @@ pid_t Process::sys$fork(RegisterDump& regs)
child_tss.ecx = regs.ecx; child_tss.ecx = regs.ecx;
child_tss.edx = regs.edx; child_tss.edx = regs.edx;
child_tss.ebp = regs.ebp; child_tss.ebp = regs.ebp;
child_tss.esp = regs.esp_if_crossRing; child_tss.esp = regs.userspace_esp;
child_tss.esi = regs.esi; child_tss.esi = regs.esi;
child_tss.edi = regs.edi; child_tss.edi = regs.edi;
child_tss.eflags = regs.eflags; child_tss.eflags = regs.eflags;
@ -597,7 +597,7 @@ pid_t Process::sys$fork(RegisterDump& regs)
child_tss.es = regs.es; child_tss.es = regs.es;
child_tss.fs = regs.fs; child_tss.fs = regs.fs;
child_tss.gs = regs.gs; child_tss.gs = regs.gs;
child_tss.ss = regs.ss_if_crossRing; child_tss.ss = regs.userspace_ss;
#ifdef FORK_DEBUG #ifdef FORK_DEBUG
dbgprintf("fork: child will begin executing at %w:%x with stack %w:%x, kstack %w:%x\n", child_tss.cs, child_tss.eip, child_tss.ss, child_tss.esp, child_tss.ss0, child_tss.esp0); dbgprintf("fork: child will begin executing at %w:%x with stack %w:%x, kstack %w:%x\n", child_tss.cs, child_tss.eip, child_tss.ss, child_tss.esp, child_tss.ss0, child_tss.esp0);
@ -1180,7 +1180,7 @@ int Process::sys$sigreturn(RegisterDump& registers)
SmapDisabler disabler; SmapDisabler disabler;
//Here, we restore the state pushed by dispatch signal and asm_signal_trampoline. //Here, we restore the state pushed by dispatch signal and asm_signal_trampoline.
u32* stack_ptr = (u32*)registers.esp_if_crossRing; u32* stack_ptr = (u32*)registers.userspace_esp;
u32 smuggled_eax = *stack_ptr; u32 smuggled_eax = *stack_ptr;
//pop the stored eax, ebp, return address, handler and signal code //pop the stored eax, ebp, return address, handler and signal code
@ -1199,7 +1199,7 @@ int Process::sys$sigreturn(RegisterDump& registers)
registers.eflags = *stack_ptr; registers.eflags = *stack_ptr;
stack_ptr++; stack_ptr++;
registers.esp_if_crossRing = registers.esp; registers.userspace_esp = registers.esp;
return smuggled_eax; return smuggled_eax;
} }

View file

@ -603,8 +603,8 @@ void Scheduler::timer_tick(RegisterDump& regs)
outgoing_tss.ss = regs.ss; outgoing_tss.ss = regs.ss;
if ((outgoing_tss.cs & 3) != 0) { if ((outgoing_tss.cs & 3) != 0) {
outgoing_tss.ss = regs.ss_if_crossRing; outgoing_tss.ss = regs.userspace_ss;
outgoing_tss.esp = regs.esp_if_crossRing; outgoing_tss.esp = regs.userspace_esp;
} }
prepare_for_iret_to_new_process(); prepare_for_iret_to_new_process();

View file

@ -104,8 +104,8 @@ void syscall_handler(RegisterDump regs)
auto& process = current->process(); auto& process = current->process();
if (!MM.validate_user_stack(process, VirtualAddress(regs.esp_if_crossRing))) { if (!MM.validate_user_stack(process, VirtualAddress(regs.userspace_esp))) {
dbgprintf("Invalid stack pointer: %p\n", regs.esp_if_crossRing); dbgprintf("Invalid stack pointer: %p\n", regs.userspace_esp);
handle_crash(regs, "Bad stack on syscall entry", SIGSTKFLT); handle_crash(regs, "Bad stack on syscall entry", SIGSTKFLT);
ASSERT_NOT_REACHED(); ASSERT_NOT_REACHED();
} }

View file

@ -557,7 +557,7 @@ ShouldUnblockThread Thread::dispatch_signal(u8 signal)
set_state(Skip1SchedulerPass); set_state(Skip1SchedulerPass);
} else { } else {
auto& regs = get_register_dump_from_stack(); auto& regs = get_register_dump_from_stack();
u32* stack = &regs.esp_if_crossRing; u32* stack = &regs.userspace_esp;
setup_stack(regs, stack); setup_stack(regs, stack);
regs.eip = g_return_to_ring3_from_signal_trampoline.get(); regs.eip = g_return_to_ring3_from_signal_trampoline.get();
} }