mirror of
https://github.com/RGBCube/serenity
synced 2025-05-31 10:38:11 +00:00
Kernel: Add x86_64 support for fork()
This commit is contained in:
parent
811f9d562d
commit
df9e73de25
4 changed files with 42 additions and 35 deletions
|
@ -66,8 +66,29 @@ KResultOr<FlatPtr> Process::sys$fork(RegisterState& regs)
|
|||
dbgln_if(FORK_DEBUG, "fork: child will begin executing at {:04x}:{:08x} with stack {:04x}:{:08x}, kstack {:04x}:{:08x}",
|
||||
child_regs.cs, child_regs.eip, child_regs.ss, child_regs.esp, child_regs.ss0, child_regs.esp0);
|
||||
#else
|
||||
(void)regs;
|
||||
PANIC("Process::sys$fork() not implemented.");
|
||||
auto& child_regs = child_first_thread->m_regs;
|
||||
child_regs.rax = 0; // fork() returns 0 in the child :^)
|
||||
child_regs.rbx = regs.rbx;
|
||||
child_regs.rcx = regs.rcx;
|
||||
child_regs.rdx = regs.rdx;
|
||||
child_regs.rbp = regs.rbp;
|
||||
child_regs.rsp = regs.userspace_rsp;
|
||||
child_regs.rsi = regs.rsi;
|
||||
child_regs.rdi = regs.rdi;
|
||||
child_regs.r8 = regs.r8;
|
||||
child_regs.r9 = regs.r9;
|
||||
child_regs.r10 = regs.r10;
|
||||
child_regs.r11 = regs.r11;
|
||||
child_regs.r12 = regs.r12;
|
||||
child_regs.r13 = regs.r13;
|
||||
child_regs.r14 = regs.r14;
|
||||
child_regs.r15 = regs.r15;
|
||||
child_regs.rflags = regs.rflags;
|
||||
child_regs.rip = regs.rip;
|
||||
child_regs.cs = regs.cs;
|
||||
|
||||
dbgln_if(FORK_DEBUG, "fork: child will begin executing at {:04x}:{:16x} with stack {:08x}, kstack {:08x}",
|
||||
child_regs.cs, child_regs.rip, child_regs.rsp, child_regs.rsp0);
|
||||
#endif
|
||||
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue