about summary refs log tree commit diff
path: root/sysdeps/unix
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2005-03-31 10:02:53 +0000
committerUlrich Drepper <drepper@redhat.com>2005-03-31 10:02:53 +0000
commitee6189855aab3a9be8f3c2d95ce2b2cd17db4ec2 (patch)
treecf3e2fe1f9be5b358033fd927a0bd922542e04a1 /sysdeps/unix
parent4d6302cf51b16a129addf7687c91490c40a7225c (diff)
downloadglibc-ee6189855aab3a9be8f3c2d95ce2b2cd17db4ec2.tar.gz
glibc-ee6189855aab3a9be8f3c2d95ce2b2cd17db4ec2.tar.xz
glibc-ee6189855aab3a9be8f3c2d95ce2b2cd17db4ec2.zip
* sysdeps/unix/sysv/linux/x86_64/getcontext.S: Use functionally
	equivalent, but shorter instructions.
	* sysdeps/unix/sysv/linux/x86_64/sysdep.h: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/setcontext.S: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/clone.S: Likewise.
	* sysdeps/unix/sysv/linux/x86_64/swapcontext.S: Likewise.
	* sysdeps/unix/x86_64/sysdep.S: Likewise.
	* sysdeps/x86_64/strchr.S: Likewise.
	* sysdeps/x86_64/memset.S: Likewise.
	* sysdeps/x86_64/strcspn.S: Likewise.
	* sysdeps/x86_64/strcmp.S: Likewise.
	* sysdeps/x86_64/elf/start.S: Likewise.
	* sysdeps/x86_64/strspn.S: Likewise.
	* sysdeps/x86_64/dl-machine.h: Likewise.
	* sysdeps/x86_64/bsd-_setjmp.S: Likewise.
	* sysdeps/x86_64/bsd-setjmp.S: Likewise.
	* sysdeps/x86_64/strtok.S: Likewise.
Diffstat (limited to 'sysdeps/unix')
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/clone.S8
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/getcontext.S16
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/setcontext.S12
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/swapcontext.S10
-rw-r--r--sysdeps/unix/sysv/linux/x86_64/sysdep.h12
-rw-r--r--sysdeps/unix/x86_64/sysdep.S4
6 files changed, 33 insertions, 29 deletions
diff --git a/sysdeps/unix/sysv/linux/x86_64/clone.S b/sysdeps/unix/sysv/linux/x86_64/clone.S
index 9695e1eaf8..8a12b09035 100644
--- a/sysdeps/unix/sysv/linux/x86_64/clone.S
+++ b/sysdeps/unix/sysv/linux/x86_64/clone.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -74,7 +74,7 @@ ENTRY (BP_SYM (__clone))
 	movq	%r8, %rdx
 	movq	%r9, %r8
 	movq	8(%rsp), %r10
-	movq	$SYS_ify(clone),%rax
+	movl	$SYS_ify(clone),%eax
 
 	/* End FDE now, because in the child the unwind info will be
 	   wrong.  */
@@ -91,7 +91,7 @@ L(pseudo_end):
 L(thread_start):
 	/* Clear the frame pointer.  The ABI suggests this be done, to mark
 	   the outermost frame obviously.  */
-	xorq	%rbp, %rbp
+	xorl	%ebp, %ebp
 
 #ifdef RESET_PID
 	testq	$CLONE_THREAD, %rdi
@@ -99,7 +99,7 @@ L(thread_start):
 	testq	$CLONE_VM, %rdi
 	movl	$-1, %eax
 	jne	2f
-	movq	$SYS_ify(getpid), %rax
+	movl	$SYS_ify(getpid), %eax
 	syscall
 2:	movl	%eax, %fs:PID
 	movl	%eax, %fs:TID
diff --git a/sysdeps/unix/sysv/linux/x86_64/getcontext.S b/sysdeps/unix/sysv/linux/x86_64/getcontext.S
index 2f2c710040..d19c9f0d09 100644
--- a/sysdeps/unix/sysv/linux/x86_64/getcontext.S
+++ b/sysdeps/unix/sysv/linux/x86_64/getcontext.S
@@ -1,5 +1,5 @@
 /* Save current context.
-   Copyright (C) 2002 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Jaeger <aj@suse.de>, 2002.
 
@@ -67,16 +67,20 @@ ENTRY(__getcontext)
 	/* Save the current signal mask with
 	   rt_sigprocmask (SIG_BLOCK, NULL, set,_NSIG/8).  */
 	leaq	oSIGMASK(%rdi), %rdx
-	xorq	%rsi,%rsi
-	movq	$SIG_BLOCK, %rdi
-	movq	$_NSIG8,%r10
-	movq	$__NR_rt_sigprocmask, %rax
+	xorl	%esi,%esi
+#if SIG_BLOCK == 0
+	xorl	%edi, %edi
+#else
+	movl	$SIG_BLOCK, %edi
+#endif
+	movl	$_NSIG8,%r10d
+	movl	$__NR_rt_sigprocmask, %eax
 	syscall
 	cmpq	$-4095, %rax		/* Check %rax for error.  */
 	jae	SYSCALL_ERROR_LABEL	/* Jump to error handler if error.  */
 
 	/* All done, return 0 for success.  */
-	xorq	%rax, %rax
+	xorl	%eax, %eax
 L(pseudo_end):
 	ret
 PSEUDO_END(__getcontext)
diff --git a/sysdeps/unix/sysv/linux/x86_64/setcontext.S b/sysdeps/unix/sysv/linux/x86_64/setcontext.S
index 65c03d8a01..51e4a50712 100644
--- a/sysdeps/unix/sysv/linux/x86_64/setcontext.S
+++ b/sysdeps/unix/sysv/linux/x86_64/setcontext.S
@@ -1,5 +1,5 @@
 /* Install given context.
-   Copyright (C) 2002, 2004 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Jaeger <aj@suse.de>, 2002.
 
@@ -40,10 +40,10 @@ ENTRY(__setcontext)
 	/* Set the signal mask with
 	   rt_sigprocmask (SIG_SETMASK, mask, NULL, _NSIG/8).  */
 	leaq	oSIGMASK(%rdi), %rsi
-	xorq	%rdx, %rdx
-	movq	$SIG_SETMASK, %rdi
-	movq	$_NSIG8,%r10
-	movq	$__NR_rt_sigprocmask, %rax
+	xorl	%edx, %edx
+	movl	$SIG_SETMASK, %edi
+	movl	$_NSIG8,%r10d
+	movl	$__NR_rt_sigprocmask, %eax
 	syscall
 	popq	%rdi			/* Reload %rdi, adjust stack.  */
 	cfi_adjust_cfa_offset(-8)
@@ -96,7 +96,7 @@ ENTRY(__setcontext)
 	cfi_startproc
 
 	/* Clear rax to indicate success.  */
-	xorq	%rax, %rax
+	xorl	%eax, %eax
 
 L(pseudo_end):
 	ret
diff --git a/sysdeps/unix/sysv/linux/x86_64/swapcontext.S b/sysdeps/unix/sysv/linux/x86_64/swapcontext.S
index 4394e2ae9f..8d48d3bd5e 100644
--- a/sysdeps/unix/sysv/linux/x86_64/swapcontext.S
+++ b/sysdeps/unix/sysv/linux/x86_64/swapcontext.S
@@ -1,5 +1,5 @@
 /* Save current context and install the given one.
-   Copyright (C) 2002 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Jaeger <aj@suse.de>, 2002.
 
@@ -73,9 +73,9 @@ ENTRY(__swapcontext)
 	   rt_sigprocmask (SIG_BLOCK, newset, oldset,_NSIG/8).  */
 	leaq	oSIGMASK(%rdi), %rdx
 	leaq	oSIGMASK(%rsi), %rsi
-	movq	$SIG_SETMASK, %rdi
-	movq	$_NSIG8,%r10
-	movq	$__NR_rt_sigprocmask, %rax
+	movl	$SIG_SETMASK, %edi
+	movl	$_NSIG8,%r10d
+	movl	$__NR_rt_sigprocmask, %eax
 	syscall
 	cmpq	$-4095, %rax		/* Check %rax for error.  */
 	jae	SYSCALL_ERROR_LABEL	/* Jump to error handler if error.  */
@@ -114,7 +114,7 @@ ENTRY(__swapcontext)
 	movq	oRSI(%rsi), %rsi
 
 	/* Clear rax to indicate success.  */
-	xorq	%rax, %rax
+	xorl	%eax, %eax
 
 L(pseudo_end):
 	ret
diff --git a/sysdeps/unix/sysv/linux/x86_64/sysdep.h b/sysdeps/unix/sysv/linux/x86_64/sysdep.h
index fd92d7ae16..0dc2f2750e 100644
--- a/sysdeps/unix/sysv/linux/x86_64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/x86_64/sysdep.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001,02,03,04 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -119,7 +119,7 @@
 # define SYSCALL_ERROR_HANDLER			\
 0:						\
   leaq rtld_errno(%rip), %rcx;			\
-  xorq %rdx, %rdx;				\
+  xorl %edx, %edx;				\
   subq %rax, %rdx;				\
   movl %edx, (%rcx);				\
   orq $-1, %rax;				\
@@ -133,7 +133,7 @@
 # define SYSCALL_ERROR_HANDLER			\
 0:						\
   movq SYSCALL_ERROR_ERRNO@GOTTPOFF(%rip), %rcx;\
-  xorq %rdx, %rdx;				\
+  xorl %edx, %edx;				\
   subq %rax, %rdx;				\
   movl %edx, %fs:(%rcx);			\
   orq $-1, %rax;				\
@@ -143,7 +143,7 @@
    Note that errno occupies only 4 bytes.  */
 # define SYSCALL_ERROR_HANDLER			\
 0:						\
-  xorq %rdx, %rdx;				\
+  xorl %edx, %edx;				\
   subq %rax, %rdx;				\
   pushq %rdx;					\
   cfi_adjust_cfa_offset(8);			\
@@ -161,7 +161,7 @@
 #else /* Not _LIBC_REENTRANT.  */
 # define SYSCALL_ERROR_HANDLER			\
 0:movq errno@GOTPCREL(%RIP), %rcx;		\
-  xorq %rdx, %rdx;				\
+  xorl %edx, %edx;				\
   subq %rax, %rdx;				\
   movl %edx, (%rcx);				\
   orq $-1, %rax;				\
@@ -208,7 +208,7 @@
 #undef	DO_CALL
 #define DO_CALL(syscall_name, args)		\
     DOARGS_##args				\
-    movq $SYS_ify (syscall_name), %rax;		\
+    movl $SYS_ify (syscall_name), %eax;		\
     syscall;
 
 #define DOARGS_0 /* nothing */
diff --git a/sysdeps/unix/x86_64/sysdep.S b/sysdeps/unix/x86_64/sysdep.S
index 0d0d715052..aca81fef2f 100644
--- a/sysdeps/unix/x86_64/sysdep.S
+++ b/sysdeps/unix/x86_64/sysdep.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2002, 2004, 2005 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    The GNU C Library is free software; you can redistribute it and/or
@@ -42,7 +42,7 @@ syscall_error:
 	   EWOULDBLOCK_sys is the original number.  */
 	cmpq $EWOULDBLOCK_sys, %rax /* Is it the old EWOULDBLOCK?  */
 	jne notb		/* Branch if not.  */
-	movq $EAGAIN, %rax	/* Yes; translate it to EAGAIN.  */
+	movl $EAGAIN, %eax	/* Yes; translate it to EAGAIN.  */
 notb:
 #endif
 #if USE___THREAD