patches/glibc/2.1.3/rh62-07-glibc-2.1.3-alpha.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sat Jul 28 21:34:41 2007 +0000 (2007-07-28)
changeset 301 2be7232a73ac
permissions -rw-r--r--
Bump version to 0.2.2.
     1 2000-03-15  Cristian Gafton  <gafton@redhat.com>
     2 
     3 	* db2/mutex/alpha.gcc (TSL_SET): Backport from db3.
     4 	* sysdeps/alpha/Makefile (CPPFLAGS): Define for db2 directory.
     5 	* db2/mutex/mutex.c: Include alpha.gcc ifdef HAVE_ASSEM_ALPHA_GCC.
     6 
     7 2000-03-14  Ulrich Drepper  <drepper@redhat.com>
     8 
     9 	* sysdeps/unix/sysv/linux/alpha/ioperm.c (platform): Add entry for
    10 	Nautilus.  Patch by Soohoon Lee <soohoon.lee@alpha-processor.com>.
    11 
    12 --- glibc-2.1.3-15/db2/mutex/alpha.gcc	Wed Aug 27 15:32:54 1997
    13 +++ glibc-2.1.3-16/db2/mutex/alpha.gcc	Wed Mar 15 16:50:45 2000
    14 @@ -1,52 +1,24 @@
    15  /*
    16 - * @(#)alpha.gcc	10.1 (Sleepycat) 4/12/97
    17 - *
    18 - * The code appearing below is taken from Richard L. Sites, ed.  "Alpha
    19 - * Architecture Reference Manual", Digital Press, 1992, page 5-7 and 5-8.
    20 - * There are 2 modifications:
    21 - *
    22 - * 1. The jump from blbs __r1,30f to !__r1, which is dictated by the way the
    23 - * TSL_SET macro is used.  The code suggested in Sites includes the main loop
    24 - * of the spin lock, whereas in this code the rest the loop is specified in C.
    25 - * The generated code might be suboptimal if the compiler generates a forward
    26 - * branch for the usual case in which the mutex is uncontested.
    27 - *
    28 - * 2. At label 20, Sites suggests including code for testing for an excessive
    29 - * number of _processor_ lock conflicts.  (The seq_c instruction stores its
    30 - * first argument provided that no other processor has written to a byte range
    31 - * including its memory-location argument.)  Absent such checking the code
    32 - * below could conceivably stall silently on a multiprocessor alpha, depending
    33 - * on how often processor/processor conflicts occur in a particular byte range.
    34 - *
    35 - * Note that the mb ("memory-barrier") instruction in TSL_UNSET is critical to
    36 - * correct operation in a multiprocessor alpha (as is, of course, the mb in
    37 - * the TSL_SET macro).  Without the mb, changes to shared memory that occurred
    38 - * inside the critical section (before the TSL_UNSET) might reach shared memory
    39 - * _after_ the change of tsl to 0, thereby permitting another processor to see
    40 - * an inconsistent view of the data protected by the mutex.
    41 + * @(#)alpha.gcc	11.1 (Sleepycat) 8/30/99
    42   *
    43   * For gcc/alpha, 0 is clear, 1 is set.
    44   */
    45 -#define TSL_SET(tsl) ({							\
    46 +#ifdef __GNUC__
    47 +#define	TSL_SET(tsl) ({							\
    48  	register tsl_t *__l = (tsl);					\
    49 -	register tsl_t __r1, __r2;					\
    50 -	__asm__ volatile("						\n\
    51 -	   10: ldq_l %0,(%2)						\n\
    52 -	       blbs  %0,30f						\n\
    53 -	       or    %0,1,%1						\n\
    54 -	       stq_c %1,(%2)						\n\
    55 -	       beq   %1,20f						\n\
    56 -	       mb							\n\
    57 -	       br    30f						\n\
    58 -	   20: br    10b						\n\
    59 -	   30: "							\
    60 -	  : "=&r" (__r1), "=&r" (__r2)					\
    61 -	  : "r" (__l));							\
    62 -	!__r1;								\
    63 +	int __r;							\
    64 +	asm volatile(							\
    65 +		"1:	ldl_l	%0,%1\n"				\
    66 +		"	blbs	%0,2f\n"				\
    67 +		"	mov	1,%0\n"					\
    68 +		"	stl_c	%0,%1\n"				\
    69 +		"	bne	%0,1b\n"				\
    70 +		"	mb\n"						\
    71 +		"2:"							\
    72 +		: "=&r"(__r), "=m"(*__l) : "m"(*__l) : "memory");	\
    73 +	__r;								\
    74  })
    75 +#endif
    76  
    77 -#define TSL_UNSET(tsl) ({						\
    78 -	register tsl_t *__l = (tsl);					\
    79 -	__asm__ volatile("mb; stq $31,(%0);" : : "r" (__l));		\
    80 -})
    81 +#define	TSL_UNSET(tsl)	(*(tsl) = 0)
    82  #define	TSL_INIT(tsl)	TSL_UNSET(tsl)
    83 --- glibc-2.1.3-15/db2/mutex/mutex.c	Wed Jun 30 11:51:07 1999
    84 +++ glibc-2.1.3-16/db2/mutex/mutex.c	Wed Mar 15 16:50:45 2000
    85 @@ -86,6 +86,10 @@ static const char sccsid[] = "@(#)mutex.
    86  #include "sparc.gcc"
    87  #endif
    88  
    89 +#ifdef HAVE_ASSEM_ALPHA_GCC
    90 +#include "alpha.gcc"
    91 +#endif
    92 +
    93  #ifdef HAVE_ASSEM_UTS4_CC
    94  #define TSL_INIT(x)
    95  #define TSL_SET(x)	(!uts_lock(x, 1))
    96 --- glibc-2.1.3-15/sysdeps/alpha/Makefile	Thu Jul  9 14:52:03 1998
    97 +++ glibc-2.1.3-16/sysdeps/alpha/Makefile	Wed Mar 15 16:50:45 2000
    98 @@ -17,6 +17,10 @@
    99  # write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
   100  # Boston, MA 02111-1307, USA.
   101  
   102 +ifeq ($(subdir),db2)
   103 +CPPFLAGS += -DHAVE_SPINLOCKS=1 -DHAVE_ASSEM_ALPHA_GCC=1
   104 +endif
   105 +
   106  ifeq ($(subdir),gmon)
   107  sysdep_routines += _mcount
   108  endif
   109 --- glibc-2.1.3-15/sysdeps/unix/sysv/linux/alpha/ioperm.c	Mon Oct 11 10:25:24 1999
   110 +++ glibc-2.1.3-16/sysdeps/unix/sysv/linux/alpha/ioperm.c	Wed Mar 15 11:57:14 2000
   111 @@ -1,4 +1,4 @@
   112 -/* Copyright (C) 1992, 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
   113 +/* Copyright (C) 1992, 1996-1999, 2000 Free Software Foundation, Inc.
   114     This file is part of the GNU C Library.
   115     Contributed by David Mosberger.
   116  
   117 @@ -139,6 +139,7 @@ static struct platform {
   118    {"Sable",	IOSYS_CPUDEP},
   119    {"Miata",	IOSYS_CIA},
   120    {"Tsunami",	IOSYS_TSUNAMI},
   121 +  {"Nautilus",	IOSYS_TSUNAMI},
   122    {"Rawhide",	IOSYS_MCPCIA},
   123    {"Ruffian",	IOSYS_CIA},
   124    {"Takara",	IOSYS_CIA},