about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/sparc/sparc64
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-01-31 06:42:36 +0000
committerUlrich Drepper <drepper@redhat.com>2000-01-31 06:42:36 +0000
commit4d76a0ec18ca374bbb5a2cf15b80515e246a135b (patch)
tree59b0a92fc083ec7758b9bd6f4ec21c3f70c5f27d /sysdeps/unix/sysv/linux/sparc/sparc64
parentb6aa34eb721a209444df2c0694bb18f8f4a58e47 (diff)
downloadglibc-4d76a0ec18ca374bbb5a2cf15b80515e246a135b.tar.gz
glibc-4d76a0ec18ca374bbb5a2cf15b80515e246a135b.tar.xz
glibc-4d76a0ec18ca374bbb5a2cf15b80515e246a135b.zip
Update.
2000-01-30  Ulrich Drepper  <drepper@redhat.com>

	* locale/programs/ld-collate.c (struct locale_collate_t): Change
	type of plane_size and plane_cnt to uint32_t.
	Reported by Jakub Jelinek.

2000-01-29  Jakub Jelinek  <jakub@redhat.com>

	* sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
	(SYSCALL_ERROR_HANDLER): Optimize.
	(__SYSCALL_STRING, __SYSCALL_CLOBBERS): Define.
	Include linux/sparc/sysdep.h.
	Use a different guard define than linux/sparc/sysdep.h.
	* sysdeps/unix/sysv/linux/sparc/sparc32/syscalls.list: Remove
	stubs for inlined syscalls.
	* sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
	(SYSCALL_ERROR_HANDLER): Optimize.
	(__SYSCALL_STRING, __SYSCALL_CLOBBERS): Define.
	Include linux/sparc/sysdep.h.
	* sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list: Remove
	stubs for inlined syscalls.
	* sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c (__sigaction):
	Use INLINE_SYSCALL.
	* sysdeps/unix/sysv/linux/sparc/sparc64/Makefile: Remove.
	* sysdeps/unix/sysv/linux/sparc/sysdep.h: New file.
2000-01-29  Ulrich Drepper  <drepper@redhat.com>
Diffstat (limited to 'sysdeps/unix/sysv/linux/sparc/sparc64')
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/Makefile4
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c9
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list30
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h70
4 files changed, 30 insertions, 83 deletions
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile b/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
deleted file mode 100644
index 9d02acecc4..0000000000
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/Makefile
+++ /dev/null
@@ -1,4 +0,0 @@
-ifeq ($(subdir),signal)
-sysdep_routines += rt_sigsuspend rt_sigprocmask rt_sigtimedwait	\
-		   rt_sigqueueinfo rt_sigaction rt_sigpending
-endif
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c b/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c
index 34d3c62e86..87468fd409 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c
@@ -21,16 +21,13 @@
 
 #include <string.h>
 #include <syscall.h>
+#include <sysdep.h>
 #include <sys/signal.h>
 #include <errno.h>
 #include <kernel_sigaction.h>
 
 /* SPARC 64bit userland requires a kernel that has rt signals anyway. */
 
-extern int __syscall_rt_sigaction (int, const struct kernel_sigaction *,
-				   struct kernel_sigaction *, unsigned long,
-				   size_t);
-
 static void __rt_sigreturn_stub (void);
 
 int
@@ -50,8 +47,8 @@ __sigaction (int sig, __const struct sigaction *act, struct sigaction *oact)
 
   /* XXX The size argument hopefully will have to be changed to the
      real size of the user-level sigset_t.  */
-  ret = __syscall_rt_sigaction (sig, act ? &kact : 0, oact ? &koact : 0,
-				stub, _NSIG / 8);
+  ret = INLINE_SYSCALL (rt_sigaction, 5, sig, act ? &kact : 0,
+			oact ? &koact : 0, stub, _NSIG / 8);
 
   if (oact && ret >= 0)
     {
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
index 77c0e2608e..c4d40f5fff 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/syscalls.list
@@ -33,33 +33,3 @@ socketpair	-	socketpair	4	__socketpair	socketpair
 
 getresuid	-	getresuid	3	getresuid
 getresgid	-	getresgid	3	getresgid
-
-# System calls with wrappers.
-rt_sigaction	-	rt_sigaction	4	__syscall_rt_sigaction
-rt_sigpending	-	rt_sigpending	2	__syscall_rt_sigpending
-rt_sigprocmask	-	rt_sigprocmask	4	__syscall_rt_sigprocmask
-rt_sigqueueinfo	-	rt_sigqueueinfo	3	__syscall_rt_sigqueueinfo
-rt_sigsuspend	-	rt_sigsuspend	2	__syscall_rt_sigsuspend
-rt_sigtimedwait	-	rt_sigtimedwait	4	__syscall_rt_sigtimedwait
-s_execve	execve	execve		3	__syscall_execve
-s_getcwd	getcwd	getcwd		2	__syscall_getcwd
-s_getdents	getdents getdents	3	__syscall_getdents
-s_getpriority	getpriority getpriority	2	__syscall_getpriority
-s_getresgid	getresgid getresgid	3	__syscall_getresgid
-s_getresuid	getresuid getresuid	3	__syscall_getresuid
-s_ipc		msgget	ipc		5	__syscall_ipc
-s_poll		poll	poll		3	__syscall_poll
-s_ptrace	ptrace	ptrace		4	__syscall_ptrace
-s_reboot	reboot	reboot		3	__syscall_reboot
-s_sigaction	sigaction sigaction	3	__syscall_sigaction
-s_sigpending	sigpending sigpending	1	__syscall_sigpending
-s_sigprocmask	sigprocmask sigprocmask	3	__syscall_sigprocmask
-s_sigsuspend	sigsuspend sigsuspend	3	__syscall_sigsuspend
-s_sysctl	sysctl	_sysctl		1	__syscall__sysctl
-s_ustat		ustat	ustat		2	__syscall_ustat
-sys_fstat	fxstat	fstat		2	__syscall_fstat
-sys_lstat	lxstat	lstat		2	__syscall_lstat
-sys_mknod	xmknod	mknod		3	__syscall_mknod
-sys_readv	readv	readv		3	__syscall_readv
-sys_stat	xstat	stat		2	__syscall_stat
-sys_writev	writev	writev		3	__syscall_writev
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
index 5a9a4e249b..6ce6d01d7b 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
+++ b/sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1997 Free Software Foundation, Inc.
+/* Copyright (C) 1997, 2000 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson <richard@gnu.ai.mit.edu>, 1997.
 
@@ -43,53 +43,13 @@
 	C_LABEL(name);							\
 	.type name,@function;
 
-#ifdef PIC
-# ifdef _LIBC_REENTRANT
-#  define SYSCALL_ERROR_HANDLER						\
-	save	%sp, -192, %sp;						\
-	call	__errno_location;					\
-	 nop;								\
-	st	%i0,[%o0];						\
-	sub	%g0,1,%i0;						\
-	jmpl	%i7+8, %g0;						\
-	 restore
-# else
-#  define SYSCALL_ERROR_HANDLER						\
-	.global C_SYMBOL_NAME(errno);					\
-	.type C_SYMBOL_NAME(errno),@object;				\
-	mov	%o7, %g3;						\
-  101:	call	102f;							\
-	sethi	%hi(_GLOBAL_OFFSET_TABLE_-(101b-.)), %g2;		\
-  102:	or	%g2,%lo(_GLOBAL_OFFSET_TABLE_-(101b-.)), %g2;		\
-	sethi	%hi(errno), %o1;					\
-	add	%g2, %o7, %l7;						\
-	or	%o1, %lo(errno), %o1;					\
-	mov	%g3,%o7;						\
-	ldx	[%l7+%o1], %g2;						\
-	st	%o0, [%g2];						\
-	retl;								\
-	 sub	%g0, 1, %i0
-# endif
-#else
-# ifdef _LIBC_REENTRANT
-#  define SYSCALL_ERROR_HANDLER						\
+#define SYSCALL_ERROR_HANDLER						\
 	save	%sp, -192, %sp;						\
 	call	__errno_location;					\
 	 nop;								\
 	st	%i0, [%o0];						\
-	sub	%g0, 1, %i0;						\
 	jmpl	%i7+8, %g0;						\
-	 restore
-# else
-#  define SYSCALL_ERROR_HANDLER						\
-	.global C_SYMBOL_NAME(errno);					\
-	.type C_SYMBOL_NAME(errno),@object;				\
-	sethi	%hi(errno), %g1;					\
-	st	%i0, [%g1 + %lo(errno)];				\
-	retl;								\
-	 sub	%g0, 1, %i0
-# endif
-#endif
+	 restore %g0, -1, %o0
 
 #define PSEUDO(name, syscall_name, args)				\
 	.text;								\
@@ -115,6 +75,30 @@
 #define r1              %o1
 #define MOVE(x,y)       mov x, y
 
+#else  /* __ASSEMBLER__ */
+
+#define __SYSCALL_STRING						\
+	"ta	0x6d;"							\
+	"bcc,pt	%%xcc, 1f;"						\
+	" nop;"								\
+	"save	%%sp, -192, %%sp;"					\
+	"call	__errno_location;"					\
+	" nop;"								\
+	"st	%%i0,[%%o0];"						\
+	"restore %%g0, -1, %%o0;"					\
+	"1:"
+
+#define __SYSCALL_CLOBBERS "g2", "g3", "g4", "g5", "g7",		\
+	"f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7",			\
+	"f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15",		\
+	"f16", "f17", "f18", "f19", "f20", "f21", "f22", "f23",		\
+	"f24", "f25", "f26", "f27", "f28", "f29", "f30", "f31",		\
+	"f32", "f34", "f36", "f38", "f40", "f42", "f44", "f46",		\
+	"f48", "f50", "f52", "f54", "f56", "f58", "f60", "f62",		\
+	"cc", "memory"
+
+#include <sysdeps/unix/sysv/linux/sparc/sysdep.h>
+
 #endif	/* __ASSEMBLER__ */
 
 /* This is the offset from the %sp to the backing store above the