From: Roland McGrath Date: Sat, 15 May 1993 21:57:10 +0000 (+0000) Subject: Formerly unix/bsd/sequent/i386/__sigvec.S.~2~ X-Git-Tag: glibc-2.16-ports-before-merge~4276 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=11bd41d2a307a82fc4cb96797ebdf0026c8a1d69;p=thirdparty%2Fglibc.git Formerly unix/bsd/sequent/i386/__sigvec.S.~2~ --- diff --git a/sysdeps/unix/bsd/sequent/i386/sigvec.S b/sysdeps/unix/bsd/sequent/i386/sigvec.S index 03b1c7df4fc..53aade43930 100644 --- a/sysdeps/unix/bsd/sequent/i386/sigvec.S +++ b/sysdeps/unix/bsd/sequent/i386/sigvec.S @@ -28,18 +28,18 @@ trampoline: call %eax /* Call the handler, address in %eax. */ addl $8, %esp /* Pop signum & code off the stack. */ /* __sigreturn will restore the context, and never return here. */ - jsr C_SYMBOL_NAME (__sigreturn) + call C_SYMBOL_NAME (__sigreturn) .globl syscall_error ENTRY (__sigvec) /* Put the address of the trampoline in a scratch register. */ - mov $trampoline, %edx - /* Now exchange this register with the top of the stack, - wherein now lies the return PC. */ - xchg 0(%esp), %edx - mov %esp, %ecx /* Point the syscall at the arguments. */ + mov $trampoline, scratch + /* Now exchange this register with the fourth word on the stack, + where the fourth argument to the system call would go. */ + xchg 16(%esp), scratch + ARGS_4 /* Point the syscall at the arguments. */ DO_CALL (sigvec, 4) /* Do the system call. */ - /* Exchange again, restoring the return PC. */ - xchg 0(%esp), %edx + /* Exchange again, restoring the stack word. */ + xchg 16(%esp), scratch jb syscall_error /* Check for error. */ ret