diff options
Diffstat (limited to 'sys/i386/linux/linux_locore.s')
-rw-r--r-- | sys/i386/linux/linux_locore.s | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/sys/i386/linux/linux_locore.s b/sys/i386/linux/linux_locore.s index 8aad7f7..6887628 100644 --- a/sys/i386/linux/linux_locore.s +++ b/sys/i386/linux/linux_locore.s @@ -14,11 +14,27 @@ NON_GPROF_ENTRY(linux_sigcode) int $0x80 /* enter kernel with args */ 0: jmp 0b ALIGN_TEXT +/* XXXXX */ + +_linux_rt_sigcode: + call *LINUX_RT_SIGF_HANDLER(%esp) + leal LINUX_RT_SIGF_UC(%esp),%ebx /* linux ucp */ + movl LINUX_SC_GS(%ebx),%gs + push %eax /* fake ret addr */ + movl $LINUX_SYS_linux_rt_sigreturn,%eax /* linux_rt_sigreturn() */ + int $0x80 /* enter kernel with args */ +0: jmp 0b + ALIGN_TEXT +/* XXXXX */ _linux_esigcode: .data - .globl _linux_szsigcode + .globl _linux_szsigcode, _linux_sznonrtsigcode _linux_szsigcode: .long _linux_esigcode-_linux_sigcode - +_linux_sznonrtsigcode: + .long _linux_rt_sigcode-_linux_sigcode .text + + + |