This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.16-ports-merge-539-g19f1dd5


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  19f1dd5f2dbf794cd6b040093bf2b1ba114b3c15 (commit)
      from  86ebe6b1334510d5e71fa1b0f686359bd655d6c5 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sources.redhat.com/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=19f1dd5f2dbf794cd6b040093bf2b1ba114b3c15

commit 19f1dd5f2dbf794cd6b040093bf2b1ba114b3c15
Author: David S. Miller <davem@davemloft.net>
Date:   Sun Oct 28 23:19:00 2012 -0700

    Define a BUSY_WAIT_NOP for sparc.
    
    nptl/
    
    	* sysdeps/unix/sysv/linux/sparc/lowlevellock.h (BUSY_WAIT_NOP):
    	Define when we have v9 instructions available.
    	* sysdeps/unix/sysv/linux/sparc/sparc64/cpu_relax.S: New file.
    	* sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/cpu_relax.S: New
    	file.
    	* sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/Makefile: New
    	file.
    	* sysdeps/unix/sysv/linux/sparc/sparc64/Makefile: Add cpu_relax
    	to libpthread-routines.

diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 40ddc25..803df62 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,15 @@
+2012-10-28  David S. Miller  <davem@davemloft.net>
+
+	* sysdeps/unix/sysv/linux/sparc/lowlevellock.h (BUSY_WAIT_NOP):
+	Define when we have v9 instructions available.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/cpu_relax.S: New file.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/cpu_relax.S: New
+	file.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/Makefile: New
+	file.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/Makefile: Add cpu_relax
+	to libpthread-routines.
+
 2012-10-25  Roland McGrath  <roland@hack.frob.com>
 
 	* tst-cond-except.c (TEST_FUNCTION): New macro.
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h
index fafb087..e049562 100644
--- a/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h
@@ -50,6 +50,11 @@
 #define LLL_PRIVATE	0
 #define LLL_SHARED	FUTEX_PRIVATE_FLAG
 
+#ifndef __sparc32_atomic_do_lock
+/* Delay in spinlock loop.  */
+extern void __cpu_relax(void);
+#define BUSY_WAIT_NOP	__cpu_relax()
+#endif
 
 #if !defined NOT_IN_libc || defined IS_IN_rtld
 /* In libc.so or ld.so all futexes are private.  */
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/Makefile b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/Makefile
new file mode 100644
index 0000000..f7acc01
--- /dev/null
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/Makefile
@@ -0,0 +1 @@
+libpthread-routines += cpu_relax
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/cpu_relax.S b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/cpu_relax.S
new file mode 100644
index 0000000..4ac4d14
--- /dev/null
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/cpu_relax.S
@@ -0,0 +1 @@
+#include <sparc64/cpu_relax.S>
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile b/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
index 774b267..656d2e0 100644
--- a/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
@@ -1,3 +1,5 @@
+libpthread-routines += cpu_relax
+
 ifeq ($(subdir),nptl)
 CFLAGS-pause.c += -fexceptions
 CFLAGS-sigsuspend.c += -fexceptions
diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/cpu_relax.S b/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/cpu_relax.S
new file mode 100644
index 0000000..9e64c50
--- /dev/null
+++ b/nptl/sysdeps/unix/sysv/linux/sparc/sparc64/cpu_relax.S
@@ -0,0 +1,67 @@
+/* CPU strand yielding for busy loops.
+   Copyright (C) 2012 Free Software Foundation, Inc.
+   Contributed by David S. Miller (davem@davemloft.net)
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <sysdep.h>
+
+	.text
+__cpu_relax_generic:
+	rd	%ccr, %g0
+	rd	%ccr, %g0
+	rd	%ccr, %g0
+	retl
+	 nop
+	.size	__cpu_relax_generic,.-__cpu_relax_generic
+
+__cpu_relax_pause:
+	wr	%g0, 128, %asr27
+	retl
+	 nop
+	.size	__cpu_relax_pause,.-__cpu_relax_pause
+
+ENTRY(__cpu_relax)
+	.type	__cpu_relax, @gnu_indirect_function
+# ifdef SHARED
+	SETUP_PIC_REG_LEAF(o3, o5)
+# endif
+	set	HWCAP_SPARC_PAUSE, %o1
+	andcc	%o0, %o1, %g0
+	be	1f
+	 nop
+# ifdef SHARED
+	sethi	%gdop_hix22(__cpu_relax_pause), %o1
+	xor	%o1, %gdop_lox10(__cpu_relax_pause), %o1
+# else
+	set	__cpu_relax_pause, %o1
+# endif
+	ba	10f
+	 nop
+1:
+# ifdef SHARED
+	sethi	%gdop_hix22(__cpu_relax_generic), %o1
+	xor	%o1, %gdop_lox10(__cpu_relax_generic), %o1
+# else
+	set	__cpu_relax_generic, %o1
+# endif
+10:
+# ifdef SHARED
+	add	%o3, %o1, %o1
+# endif
+	retl
+	 mov	%o1, %o0
+END(__cpu_relax)

-----------------------------------------------------------------------

Summary of changes:
 nptl/ChangeLog                                     |   12 ++++
 nptl/sysdeps/unix/sysv/linux/sparc/lowlevellock.h  |    5 ++
 .../unix/sysv/linux/sparc/sparc32/sparcv9/Makefile |    1 +
 .../sysv/linux/sparc/sparc32/sparcv9/cpu_relax.S   |    1 +
 .../sysdeps/unix/sysv/linux/sparc/sparc64/Makefile |    2 +
 .../unix/sysv/linux/sparc/sparc64/cpu_relax.S      |   67 ++++++++++++++++++++
 6 files changed, 88 insertions(+), 0 deletions(-)
 create mode 100644 nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/Makefile
 create mode 100644 nptl/sysdeps/unix/sysv/linux/sparc/sparc32/sparcv9/cpu_relax.S
 create mode 100644 nptl/sysdeps/unix/sysv/linux/sparc/sparc64/cpu_relax.S


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]