From 4d76a0ec18ca374bbb5a2cf15b80515e246a135b Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 31 Jan 2000 06:42:36 +0000 Subject: Update. 2000-01-30 Ulrich Drepper * 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 * 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 --- sysdeps/unix/sysv/linux/sparc/sparc64/Makefile | 4 -- sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c | 9 +-- .../unix/sysv/linux/sparc/sparc64/syscalls.list | 30 ---------- sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h | 70 +++++++++------------- 4 files changed, 30 insertions(+), 83 deletions(-) delete mode 100644 sysdeps/unix/sysv/linux/sparc/sparc64/Makefile (limited to 'sysdeps/unix/sysv/linux/sparc/sparc64') 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 #include +#include #include #include #include /* 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 , 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 + #endif /* __ASSEMBLER__ */ /* This is the offset from the %sp to the backing store above the -- cgit v1.2.3