2001-04-11  David S. Miller  <davem@redhat.com>

	* sysdeps/sparc/sparc32/pt-machine.h (stack_pointer): Advance
	up closer to user local variables so that new cleanup heuristics work.
	* sysdeps/sparc/sparc64/pt-machine.h (stack_pointer): Likewise.
This commit is contained in:
Ulrich Drepper 2001-04-11 23:01:06 +00:00
parent 95fe9d959f
commit 43df859b95
4 changed files with 14 additions and 7 deletions

View File

@ -1,3 +1,9 @@
2001-04-11 David S. Miller <davem@redhat.com>
* sysdeps/sparc/sparc32/pt-machine.h (stack_pointer): Advance
up closer to user local variables so that new cleanup heuristics work.
* sysdeps/sparc/sparc64/pt-machine.h (stack_pointer): Likewise.
2001-04-11 Ulrich Drepper <drepper@redhat.com>
* cancel.c (_pthread_cleanup_push): Catch invalid __prev buffer

View File

@ -1,6 +1,6 @@
/* Machine-dependent pthreads configuration and inline functions.
sparc version.
Copyright (C) 1996, 1997, 1998, 2000 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 1998, 2000, 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson <rth@tamu.edu>.
@ -43,8 +43,8 @@ testandset (int *spinlock)
/* Get some notion of the current stack. Need not be exactly the top
of the stack, just something somewhere in the current frame. */
#define CURRENT_STACK_FRAME stack_pointer
register char * stack_pointer __asm__("%sp");
#define CURRENT_STACK_FRAME (stack_pointer + (2 * 64))
register char *stack_pointer __asm__("%sp");
/* Registers %g6 and %g7 are reserved by the ABI for "system use". It

View File

@ -1,6 +1,6 @@
/* Machine-dependent pthreads configuration and inline functions.
Sparc v9 version.
Copyright (C) 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Richard Henderson <rth@tamu.edu>.
@ -31,7 +31,7 @@ testandset (int *spinlock)
int ret;
__asm__ __volatile__("ldstub %1,%0"
: "=r"(ret), "=m"(*spinlock) : "m"(*spinlock));
: "=r" (ret), "=m" (*spinlock) : "m" (*spinlock));
return ret;
}
@ -50,14 +50,14 @@ testandset (int *spinlock)
/* Get some notion of the current stack. Need not be exactly the top
of the stack, just something somewhere in the current frame. */
#define CURRENT_STACK_FRAME stack_pointer
#define CURRENT_STACK_FRAME (stack_pointer + (2 * 128))
register char *stack_pointer __asm__ ("%sp");
/* Registers %g6 and %g7 are reserved by the ABI for "system use". It
happens that Solaris uses %g6 for the thread pointer -- we do the same. */
struct _pthread_descr_struct;
register struct _pthread_descr_struct *__thread_self __asm__("%g6");
register struct _pthread_descr_struct *__thread_self __asm__ ("%g6");
/* Return the thread descriptor for the current thread. */
#define THREAD_SELF __thread_self

View File

@ -20,6 +20,7 @@ cleanup (void *arg)
char *cp = stpcpy (s, "cleanup ");
*cp++ = '0' + nr;
*cp++ = '\n';
__libc_lseek (fd, 0, SEEK_END);
__libc_write (fd, s, cp - s);
}