2023-07-21 15:45:02 +03:00
|
|
|
.section .userspace, "aw"
|
|
|
|
|
2023-07-30 15:58:35 +03:00
|
|
|
#include <sys/syscall.h>
|
|
|
|
|
2023-07-21 15:45:02 +03:00
|
|
|
.global signal_trampoline
|
|
|
|
signal_trampoline:
|
|
|
|
pushq %rax
|
|
|
|
pushq %rbx
|
|
|
|
pushq %rcx
|
|
|
|
pushq %rdx
|
|
|
|
pushq %rbp
|
|
|
|
pushq %rdi
|
|
|
|
pushq %rsi
|
|
|
|
pushq %r8
|
|
|
|
pushq %r9
|
|
|
|
pushq %r10
|
|
|
|
pushq %r11
|
|
|
|
pushq %r12
|
|
|
|
pushq %r13
|
|
|
|
pushq %r14
|
|
|
|
pushq %r15
|
|
|
|
|
|
|
|
movq 128(%rsp), %rdi
|
|
|
|
movq 120(%rsp), %rax
|
|
|
|
call *%rax
|
|
|
|
|
2023-07-30 15:58:35 +03:00
|
|
|
movq $SYS_SIGNAL_DONE, %rax
|
|
|
|
movq 128(%rsp), %rbx
|
|
|
|
int $0x80
|
2023-07-23 13:09:04 +03:00
|
|
|
|
2023-07-21 15:45:02 +03:00
|
|
|
popq %r15
|
|
|
|
popq %r14
|
|
|
|
popq %r13
|
|
|
|
popq %r12
|
|
|
|
popq %r11
|
|
|
|
popq %r10
|
|
|
|
popq %r9
|
|
|
|
popq %r8
|
|
|
|
popq %rsi
|
|
|
|
popq %rdi
|
|
|
|
popq %rbp
|
|
|
|
popq %rdx
|
|
|
|
popq %rcx
|
|
|
|
popq %rbx
|
|
|
|
popq %rax
|
|
|
|
|
|
|
|
addq $16, %rsp
|
|
|
|
|
|
|
|
ret
|