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/sysdep.h | 70 ++++++++++---------------- 1 file changed, 27 insertions(+), 43 deletions(-) (limited to 'sysdeps/unix/sysv/linux/sparc/sparc64/sysdep.h') 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