This is the mail archive of the
glibc-cvs@sourceware.org
mailing list for the glibc project.
GNU C Library master sources branch master updated. glibc-2.16-ports-merge-539-g19f1dd5
- From: davem at sourceware dot org
- To: glibc-cvs at sourceware dot org
- Date: 29 Oct 2012 17:14:28 -0000
- Subject: 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