aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
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/sparc32/sysdep.h
parentb6aa34eb721a209444df2c0694bb18f8f4a58e47 (diff)
downloadglibc-4d76a0ec18ca374bbb5a2cf15b80515e246a135b.tar
glibc-4d76a0ec18ca374bbb5a2cf15b80515e246a135b.tar.gz
glibc-4d76a0ec18ca374bbb5a2cf15b80515e246a135b.tar.bz2
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/sparc32/sysdep.h')
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h50
1 files changed, 37 insertions, 13 deletions
diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h b/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
index 003c0483a8..ee235c2b43 100644
--- a/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
+++ b/sysdeps/unix/sysv/linux/sparc/sparc32/sysdep.h
@@ -17,8 +17,8 @@
write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
-#ifndef _LINUX_SPARC_SYSDEP_H
-#define _LINUX_SPARC_SYSDEP_H 1
+#ifndef _LINUX_SPARC32_SYSDEP_H
+#define _LINUX_SPARC32_SYSDEP_H 1
#include <sysdeps/unix/sparc/sysdep.h>
@@ -56,20 +56,18 @@
.type C_SYMBOL_NAME(__errno_location),@function; \
save %sp,-96,%sp; \
call __errno_location; \
- nop; \
- st %i0,[%o0]; \
- restore; \
- retl; \
- mov -1,%o0;
+ nop; \
+ st %i0,[%o0]; \
+ jmpl %i7+8,%g0; \
+ restore %g0,-1,%o0;
#else
#define SYSCALL_ERROR_HANDLER \
- save %sp,-96,%sp; \
- call __errno_location; \
+ save %sp,-96,%sp; \
+ call __errno_location; \
nop; \
- st %i0,[%o0]; \
- restore; \
- retl; \
- mov -1,%o0;
+ st %i0,[%o0]; \
+ jmpl %i7+8,%g0; \
+ restore %g0,-1,%o0;
#endif /* PIC */
#define PSEUDO(name, syscall_name, args) \
@@ -82,6 +80,32 @@
SYSCALL_ERROR_HANDLER; \
9000:;
+#else /* __ASSEMBLER__ */
+
+#define __SYSCALL_STRING \
+ "ta 0x10;" \
+ "bcs 2f;" \
+ " nop;" \
+ "1:" \
+ ".subsection 2;" \
+ "2:" \
+ "save %%sp, -192, %%sp;" \
+ "call __errno_location;" \
+ " nop;" \
+ "st %%i0,[%%o0];" \
+ "ba 1b;" \
+ " restore %%g0, -1, %%o0;" \
+ ".previous;"
+
+#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", \
+ "cc", "memory"
+
+#include <sysdeps/unix/sysv/linux/sparc/sysdep.h>
+
#endif /* __ASSEMBLER__ */
#endif /* linux/sparc/sysdep.h */