Kernel: Move sys_fork trampolines to kernel/arch/ directory

This commit is contained in:
Bananymous 2024-03-22 12:48:54 +02:00
parent 26ed689d30
commit 45cea14165
3 changed files with 20 additions and 1 deletions

View File

@ -83,7 +83,6 @@ set(KERNEL_SOURCES
kernel/Storage/Partition.cpp kernel/Storage/Partition.cpp
kernel/Storage/StorageDevice.cpp kernel/Storage/StorageDevice.cpp
kernel/Syscall.cpp kernel/Syscall.cpp
kernel/Syscall.S
kernel/Terminal/FramebufferTerminal.cpp kernel/Terminal/FramebufferTerminal.cpp
kernel/Terminal/Serial.cpp kernel/Terminal/Serial.cpp
kernel/Terminal/TTY.cpp kernel/Terminal/TTY.cpp
@ -111,6 +110,7 @@ if("${BANAN_ARCH}" STREQUAL "x86_64")
arch/x86_64/interrupts.S arch/x86_64/interrupts.S
arch/x86_64/PageTable.cpp arch/x86_64/PageTable.cpp
arch/x86_64/Signal.S arch/x86_64/Signal.S
arch/x86_64/Syscall.S
arch/x86_64/Thread.S arch/x86_64/Thread.S
) )
elseif("${BANAN_ARCH}" STREQUAL "i386") elseif("${BANAN_ARCH}" STREQUAL "i386")
@ -118,6 +118,7 @@ elseif("${BANAN_ARCH}" STREQUAL "i386")
${KERNEL_SOURCES} ${KERNEL_SOURCES}
arch/i386/boot.S arch/i386/boot.S
arch/i386/SpinLock.S arch/i386/SpinLock.S
arch/i386/Syscall.S
arch/i386/Thread.S arch/i386/Thread.S
) )
else() else()

View File

@ -0,0 +1,18 @@
.global sys_fork_trampoline
sys_fork_trampoline:
subl $4, %esp
pushl %ebx
pushl %ebp
call read_rip
testl %eax, %eax
je .done
subl $8, %esp
pushl %eax
pushl %esp
call sys_fork
addl $16, %esp
.done:
popl %ebp
popl %ebx
addl $4, %esp
ret