Kernel: Implement signal trampoline for i386

This commit is contained in:
Bananymous 2024-03-22 15:33:39 +02:00
parent 0d92719433
commit 26585bb1d9
2 changed files with 30 additions and 0 deletions

View File

@ -125,6 +125,7 @@ elseif("${BANAN_ARCH}" STREQUAL "i386")
${KERNEL_SOURCES}
arch/i386/boot.S
arch/i386/PageTable.cpp
arch/i386/Signal.S
arch/i386/Syscall.S
arch/i386/Thread.S
)

29
kernel/arch/i386/Signal.S Normal file
View File

@ -0,0 +1,29 @@
.section .userspace, "aw"
// stack contains
// return address
// signal number
// signal handler
.global signal_trampoline
signal_trampoline:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
pusha
movl 40(%esp), %edi
movl 36(%esp), %eax
subl $12, %esp
pushl %edi
call *%eax
addl $16, %esp
popa
leave
addl $8, %esp
ret