about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/i386/syscall.S
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>1995-10-26 03:59:27 +0000
committerRoland McGrath <roland@gnu.org>1995-10-26 03:59:27 +0000
commitc14e4c326d6b916112d03994105ddd3389515954 (patch)
treea6eacdb0d006783dd21626b55c4b37d98905329a /sysdeps/unix/sysv/linux/i386/syscall.S
parentf44f9c33dff32b1f9f257ec855bbb7261c028039 (diff)
downloadglibc-c14e4c326d6b916112d03994105ddd3389515954.tar.gz
glibc-c14e4c326d6b916112d03994105ddd3389515954.tar.xz
glibc-c14e4c326d6b916112d03994105ddd3389515954.zip
* hurd/hurdstartup.c (_hurd_startup): Use new
	exec_startup_get_info RPC from exec_startup.defs
	in place of old exec_startup from exec.defs.  Remove kludge to
	guess user entry and phdr locations, since the new RPC gives us
	that info.

	* sysdeps/generic/_strerror.c: Undo last change.
Diffstat (limited to 'sysdeps/unix/sysv/linux/i386/syscall.S')
-rw-r--r--sysdeps/unix/sysv/linux/i386/syscall.S14
1 files changed, 7 insertions, 7 deletions
diff --git a/sysdeps/unix/sysv/linux/i386/syscall.S b/sysdeps/unix/sysv/linux/i386/syscall.S
index 6e6aa5d3c8..52eb48a9ae 100644
--- a/sysdeps/unix/sysv/linux/i386/syscall.S
+++ b/sysdeps/unix/sysv/linux/i386/syscall.S
@@ -18,14 +18,14 @@ Cambridge, MA 02139, USA.  */
 
 #include <sysdep.h>
 
-.globl syscall_error
+	.text
+	SYSCALL_ERROR_HANDLER	/* Define error handler for PIC.  */
 ENTRY (syscall)
-	popl %ecx		/* Pop return address into %ecx.  */
-	popl %eax		/* Pop syscall number into %eax.  */
-	pushl %ecx		/* Push back return address.  */
-	DO_CALL (5)		/* Frob the args and do the system call.  */
-	movl (%esp), %ecx
-	pushl %ecx
+	PUSHARGS_5		/* Save register contents.  */
+	_DOARGS_5(36)		/* Load arguments.  */
+	movl 16(%esp), %eax	/* Load syscall number into %eax.  */
+	int $0x80		/* Do the system call.  */
+	POPARGS_5		/* Restore register contents.  */
 	testl %eax, %eax	/* Check %eax for error.  */
 	jl JUMPTARGET(syscall_error) /* Jump to error handler if negative.  */
 	ret			/* Return to caller.  */