diff options
Diffstat (limited to 'libpthread/linuxthreads/sysdeps/unix/sysv')
| -rw-r--r-- | libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h | 100 | ||||
| -rw-r--r-- | libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/pt-sigsuspend.c | 1 | ||||
| -rw-r--r-- | libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h | 99 | ||||
| -rw-r--r-- | libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S | 63 | ||||
| -rw-r--r-- | libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sysdep-cancel.h | 102 | ||||
| -rw-r--r-- | libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/vfork.S (renamed from libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S) | 0 | 
6 files changed, 96 insertions, 269 deletions
| diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h deleted file mode 100644 index bd9bb0d6a..000000000 --- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep-cancel.h +++ /dev/null @@ -1,100 +0,0 @@ -/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. -   This file is part of the GNU C Library. -   Contributed by Jakub Jelinek <jakub@redhat.com>, 2002. - -   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 <tls.h> -#ifndef __ASSEMBLER__ -# include <linuxthreads/internals.h> -#endif - -#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt - -# undef PSEUDO -# define PSEUDO(name, syscall_name, args)				      \ -	.text;								      \ -ENTRY(name)								      \ -	ld [%g7 + MULTIPLE_THREADS_OFFSET], %g1;			      \ -	cmp %g1, 0;							      \ -	bne 1f;								      \ -	 mov SYS_ify(syscall_name), %g1;				      \ -	ta 0x10;							      \ -	bcs __syscall_error_handler;					      \ -	 nop;								      \ -	.subsection 2;							      \ -1:	save %sp, -96, %sp;						      \ -	CENABLE;							      \ -	 nop;								      \ -	mov %o0, %l0;							      \ -	COPY_ARGS_##args						      \ -	mov SYS_ify(syscall_name), %g1;					      \ -	ta 0x10;							      \ -	bcs __syscall_error_handler2;					      \ -	 mov %o0, %l1;							      \ -	CDISABLE;							      \ -	 mov %l0, %o0;							      \ -	jmpl %i7 + 8, %g0;						      \ -	 restore %g0, %l1, %o0;						      \ -	.previous;							      \ -	SYSCALL_ERROR_HANDLER						      \ -	SYSCALL_ERROR_HANDLER2 - -#define SYSCALL_ERROR_HANDLER2						      \ -SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler2)			      \ -	.global __errno_location;					      \ -        .type   __errno_location,@function;				      \ -	CDISABLE;							      \ -	 mov	%l0, %o0;						      \ -	call	__errno_location;					      \ -	 nop;								      \ -	st	%l1, [%o0];						      \ -	jmpl	%i7 + 8, %g0;						      \ -	 restore %g0, -1, %o0;						      \ -	.previous; - -# ifdef IS_IN_libpthread -#  define CENABLE	call __pthread_enable_asynccancel -#  define CDISABLE	call __pthread_disable_asynccancel -# elif !defined NOT_IN_libc -#  define CENABLE	call __libc_enable_asynccancel -#  define CDISABLE	call __libc_disable_asynccancel -# else -#  define CENABLE	call __librt_enable_asynccancel -#  define CDISABLE	call __librt_disable_asynccancel -# endif - -#define COPY_ARGS_0	/* Nothing */ -#define COPY_ARGS_1	COPY_ARGS_0 mov %i0, %o0; -#define COPY_ARGS_2	COPY_ARGS_1 mov %i1, %o1; -#define COPY_ARGS_3	COPY_ARGS_2 mov %i2, %o2; -#define COPY_ARGS_4	COPY_ARGS_3 mov %i3, %o3; -#define COPY_ARGS_5	COPY_ARGS_4 mov %i4, %o4; -#define COPY_ARGS_6	COPY_ARGS_5 mov %i5, %o5; - -# ifndef __ASSEMBLER__ -#  define SINGLE_THREAD_P \ -  __builtin_expect (THREAD_GETMEM (THREAD_SELF,				      \ -				   p_header.data.multiple_threads) == 0, 1) -# else -#  define SINGLE_THREAD_P ld [%g7 + MULTIPLE_THREADS_OFFSET], %g1 -# endif - -#elif !defined __ASSEMBLER__ - -/* This code should never be used but we define it anyhow.  */ -# define SINGLE_THREAD_P (1) - -#endif diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/pt-sigsuspend.c b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/pt-sigsuspend.c deleted file mode 100644 index d57283ad2..000000000 --- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/pt-sigsuspend.c +++ /dev/null @@ -1 +0,0 @@ -#include "../../ia64/pt-sigsuspend.c" diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h deleted file mode 100644 index 9972ee408..000000000 --- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep-cancel.h +++ /dev/null @@ -1,99 +0,0 @@ -/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. -   This file is part of the GNU C Library. -   Contributed by Jakub Jelinek <jakub@redhat.com>, 2002. - -   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 <tls.h> -#ifndef __ASSEMBLER__ -# include <linuxthreads/internals.h> -#endif - -#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt - -# undef PSEUDO -# define PSEUDO(name, syscall_name, args)				      \ -	.text;								      \ -ENTRY(name)								      \ -	ld [%g7 + MULTIPLE_THREADS_OFFSET], %g1;			      \ -	brnz,pn %g1, 1f;						      \ -	 mov SYS_ify(syscall_name), %g1;				      \ -	ta 0x6d;							      \ -	bcs,pn %xcc, __syscall_error_handler;				      \ -	 nop;								      \ -	.subsection 2;							      \ -1:	save %sp, -192, %sp;						      \ -	CENABLE;							      \ -	 nop;								      \ -	mov %o0, %l0;							      \ -	COPY_ARGS_##args						      \ -	mov SYS_ify(syscall_name), %g1;					      \ -	ta 0x6d;							      \ -	bcs,pn %xcc, __syscall_error_handler2;				      \ -	 mov %o0, %l1;							      \ -	CDISABLE;							      \ -	 mov %l0, %o0;							      \ -	jmpl %i7 + 8, %g0;						      \ -	 restore %g0, %l1, %o0;						      \ -	.previous;							      \ -	SYSCALL_ERROR_HANDLER						      \ -	SYSCALL_ERROR_HANDLER2 - -#define SYSCALL_ERROR_HANDLER2						      \ -SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler2)			      \ -	.global __errno_location;					      \ -        .type   __errno_location,@function;				      \ -	CDISABLE;							      \ -	 mov	%l0, %o0;						      \ -	call	__errno_location;					      \ -	 nop;								      \ -	st	%l1, [%o0];						      \ -	jmpl	%i7 + 8, %g0;						      \ -	 restore %g0, -1, %o0;						      \ -	.previous; - -# ifdef IS_IN_libpthread -#  define CENABLE	call __pthread_enable_asynccancel -#  define CDISABLE	call __pthread_disable_asynccancel -# elif !defined NOT_IN_libc -#  define CENABLE	call __libc_enable_asynccancel -#  define CDISABLE	call __libc_disable_asynccancel -# else -#  define CENABLE	call __librt_enable_asynccancel -#  define CDISABLE	call __librt_disable_asynccancel -# endif - -#define COPY_ARGS_0	/* Nothing */ -#define COPY_ARGS_1	COPY_ARGS_0 mov %i0, %o0; -#define COPY_ARGS_2	COPY_ARGS_1 mov %i1, %o1; -#define COPY_ARGS_3	COPY_ARGS_2 mov %i2, %o2; -#define COPY_ARGS_4	COPY_ARGS_3 mov %i3, %o3; -#define COPY_ARGS_5	COPY_ARGS_4 mov %i4, %o4; -#define COPY_ARGS_6	COPY_ARGS_5 mov %i5, %o5; - -# ifndef __ASSEMBLER__ -#  define SINGLE_THREAD_P \ -  __builtin_expect (THREAD_GETMEM (THREAD_SELF,				      \ -				   p_header.data.multiple_threads) == 0, 1) -# else -#  define SINGLE_THREAD_P ld [%g7 + MULTIPLE_THREADS_OFFSET], %g1 -# endif - -#elif !defined __ASSEMBLER__ - -/* This code should never be used but we define it anyhow.  */ -# define SINGLE_THREAD_P (1) - -#endif diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S deleted file mode 100644 index 3ff16b115..000000000 --- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc64/vfork.S +++ /dev/null @@ -1,63 +0,0 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. -   This file is part of the GNU C Library. -   Contributed by Jakub Jelinek <jakub@redhat.com>, 2003. - -   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-cancel.h> - -#ifdef SHARED -.LLGETPC0: -	retl -	 add	%o7, %o0, %o0 -#endif -ENTRY(__vfork) -#ifdef SHARED -	mov	%o7, %o1 -	sethi	%hi(_GLOBAL_OFFSET_TABLE_-4), %o0 -	call	.LLGETPC0 -	 add	%o0, %lo(_GLOBAL_OFFSET_TABLE_+4), %o0 -	sethi	%hi(__libc_pthread_functions), %o2 -	mov	%o1, %o7 -	or	%o2, %lo(__libc_pthread_functions), %o2 -	ldx	[%o0 + %o2], %o2 -	ldx	[%o2], %o0 -#else -	.weak	pthread_create -	sethi	%hi(pthread_create), %o0 -	or	%o0, %lo(pthread_create), %o0 -#endif -#if defined SHARED && !defined BROKEN_SPARC_WDISP22 -	cmp	%o0, 0 -	bne	HIDDEN_JUMPTARGET(fork) -#else -	brnz,pn	%o0, 1f -#endif -	 mov	__NR_vfork, %g1 -	ta	0x6d -	bcs,pn	%xcc, __syscall_error_handler -	 nop -	sub	%o1, 1, %o1 -	retl -	 and	%o0, %o1, %o0 -#if !defined SHARED || defined BROKEN_SPARC_WDISP22 -1:	mov	%o7, %g1 -	call	HIDDEN_JUMPTARGET(fork) -	 mov	%g1, %o7 -#endif -	SYSCALL_ERROR_HANDLER -PSEUDO_END (__vfork) -libc_hidden_def (__vfork) -weak_alias (__vfork, vfork) diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sysdep-cancel.h b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sysdep-cancel.h index fa656b34e..bd9bb0d6a 100644 --- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sysdep-cancel.h +++ b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sysdep-cancel.h @@ -1,10 +1,100 @@ -#ifndef SPARC_SYSDEP_CANCEL_H -#define SPARC_SYSDEP_CANCEL_H +/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. +   This file is part of the GNU C Library. +   Contributed by Jakub Jelinek <jakub@redhat.com>, 2002. -#if defined(__arch64__) -#include <sparc64/sysdep-cancel.h> -#else -#include <sparc32/sysdep-cancel.h> +   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 <tls.h> +#ifndef __ASSEMBLER__ +# include <linuxthreads/internals.h>  #endif +#if !defined NOT_IN_libc || defined IS_IN_libpthread || defined IS_IN_librt + +# undef PSEUDO +# define PSEUDO(name, syscall_name, args)				      \ +	.text;								      \ +ENTRY(name)								      \ +	ld [%g7 + MULTIPLE_THREADS_OFFSET], %g1;			      \ +	cmp %g1, 0;							      \ +	bne 1f;								      \ +	 mov SYS_ify(syscall_name), %g1;				      \ +	ta 0x10;							      \ +	bcs __syscall_error_handler;					      \ +	 nop;								      \ +	.subsection 2;							      \ +1:	save %sp, -96, %sp;						      \ +	CENABLE;							      \ +	 nop;								      \ +	mov %o0, %l0;							      \ +	COPY_ARGS_##args						      \ +	mov SYS_ify(syscall_name), %g1;					      \ +	ta 0x10;							      \ +	bcs __syscall_error_handler2;					      \ +	 mov %o0, %l1;							      \ +	CDISABLE;							      \ +	 mov %l0, %o0;							      \ +	jmpl %i7 + 8, %g0;						      \ +	 restore %g0, %l1, %o0;						      \ +	.previous;							      \ +	SYSCALL_ERROR_HANDLER						      \ +	SYSCALL_ERROR_HANDLER2 + +#define SYSCALL_ERROR_HANDLER2						      \ +SYSCALL_ERROR_HANDLER_ENTRY(__syscall_error_handler2)			      \ +	.global __errno_location;					      \ +        .type   __errno_location,@function;				      \ +	CDISABLE;							      \ +	 mov	%l0, %o0;						      \ +	call	__errno_location;					      \ +	 nop;								      \ +	st	%l1, [%o0];						      \ +	jmpl	%i7 + 8, %g0;						      \ +	 restore %g0, -1, %o0;						      \ +	.previous; + +# ifdef IS_IN_libpthread +#  define CENABLE	call __pthread_enable_asynccancel +#  define CDISABLE	call __pthread_disable_asynccancel +# elif !defined NOT_IN_libc +#  define CENABLE	call __libc_enable_asynccancel +#  define CDISABLE	call __libc_disable_asynccancel +# else +#  define CENABLE	call __librt_enable_asynccancel +#  define CDISABLE	call __librt_disable_asynccancel +# endif + +#define COPY_ARGS_0	/* Nothing */ +#define COPY_ARGS_1	COPY_ARGS_0 mov %i0, %o0; +#define COPY_ARGS_2	COPY_ARGS_1 mov %i1, %o1; +#define COPY_ARGS_3	COPY_ARGS_2 mov %i2, %o2; +#define COPY_ARGS_4	COPY_ARGS_3 mov %i3, %o3; +#define COPY_ARGS_5	COPY_ARGS_4 mov %i4, %o4; +#define COPY_ARGS_6	COPY_ARGS_5 mov %i5, %o5; + +# ifndef __ASSEMBLER__ +#  define SINGLE_THREAD_P \ +  __builtin_expect (THREAD_GETMEM (THREAD_SELF,				      \ +				   p_header.data.multiple_threads) == 0, 1) +# else +#  define SINGLE_THREAD_P ld [%g7 + MULTIPLE_THREADS_OFFSET], %g1 +# endif + +#elif !defined __ASSEMBLER__ + +/* This code should never be used but we define it anyhow.  */ +# define SINGLE_THREAD_P (1) +  #endif diff --git a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/vfork.S index ab2286ee8..ab2286ee8 100644 --- a/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/sparc32/vfork.S +++ b/libpthread/linuxthreads/sysdeps/unix/sysv/linux/sparc/vfork.S | 
