mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-30 08:40:07 +00:00
* sysdeps/unix/sysv/linux/m68k/sysdep.h (SYSCALL_ERROR_LABEL): New
definition. (PSEUDO, SYSCALL_ERROR_HANDLER): Use it instead of syscall_error. * sysdeps/unix/sysv/linux/m68k/clone.S: Likewise. * sysdeps/unix/sysv/linux/m68k/mmap.S: Likewise. * sysdeps/unix/sysv/linux/m68k/socket.S: Likewise. * sysdeps/unix/sysv/linux/m68k/syscall.S: Likewise. * sysdeps/unix/sysv/linux/m68k/sysdep.h (SYSCALL_ERROR_LABEL): New definition. (PSEUDO, SYSCALL_ERROR_HANDLER): Use it instead of syscall_error. * sysdeps/unix/sysv/linux/m68k/clone.S: Likewise. * sysdeps/unix/sysv/linux/m68k/mmap.S: Likewise. * sysdeps/unix/sysv/linux/m68k/socket.S: Likewise. * sysdeps/unix/sysv/linux/m68k/syscall.S: Likewise.
This commit is contained in:
parent
9e2c0dae9b
commit
4bec453640
@ -6,6 +6,14 @@ Wed Jun 10 10:32:11 1998 Andreas Schwab <schwab@issan.informatik.uni-dortmund.
|
|||||||
* sysdeps/m68k/elf/start.S: Pass new argument to
|
* sysdeps/m68k/elf/start.S: Pass new argument to
|
||||||
__libc_start_user.
|
__libc_start_user.
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/m68k/sysdep.h (SYSCALL_ERROR_LABEL): New
|
||||||
|
definition.
|
||||||
|
(PSEUDO, SYSCALL_ERROR_HANDLER): Use it instead of syscall_error.
|
||||||
|
* sysdeps/unix/sysv/linux/m68k/clone.S: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/m68k/mmap.S: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/m68k/socket.S: Likewise.
|
||||||
|
* sysdeps/unix/sysv/linux/m68k/syscall.S: Likewise.
|
||||||
|
|
||||||
1998-06-09 18:16 Ulrich Drepper <drepper@cygnus.com>
|
1998-06-09 18:16 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
* math/Makefile (libm-calls): Add w_exp10 and e_exp10.
|
* math/Makefile (libm-calls): Add w_exp10 and e_exp10.
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||||
Contributed by Andreas Schwab (schwab@issan.informatik.uni-dortmund.de)
|
Contributed by Andreas Schwab (schwab@issan.informatik.uni-dortmund.de)
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -32,10 +32,10 @@ ENTRY (__clone)
|
|||||||
movel #-EINVAL, %d0
|
movel #-EINVAL, %d0
|
||||||
movel 4(%sp), %a0 /* no NULL function pointers */
|
movel 4(%sp), %a0 /* no NULL function pointers */
|
||||||
tstl %a0
|
tstl %a0
|
||||||
jeq syscall_error
|
jeq SYSCALL_ERROR_LABEL
|
||||||
movel 8(%sp), %a1 /* no NULL stack pointers */
|
movel 8(%sp), %a1 /* no NULL stack pointers */
|
||||||
tstl %a1
|
tstl %a1
|
||||||
jeq syscall_error
|
jeq SYSCALL_ERROR_LABEL
|
||||||
|
|
||||||
/* Allocate space and copy the argument onto the new stack. */
|
/* Allocate space and copy the argument onto the new stack. */
|
||||||
movel 16(%sp), -(%a1)
|
movel 16(%sp), -(%a1)
|
||||||
@ -48,7 +48,7 @@ ENTRY (__clone)
|
|||||||
exg %d2, %a1 /* restore %d2 */
|
exg %d2, %a1 /* restore %d2 */
|
||||||
|
|
||||||
tstl %d0
|
tstl %d0
|
||||||
jmi syscall_error
|
jmi SYSCALL_ERROR_LABEL
|
||||||
jeq thread_start
|
jeq thread_start
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -32,7 +32,7 @@ ENTRY (__mmap)
|
|||||||
/* Kludge: negative numbers are among the legal return values.
|
/* Kludge: negative numbers are among the legal return values.
|
||||||
If %d0 is between -4096 and 0 then there was an error. */
|
If %d0 is between -4096 and 0 then there was an error. */
|
||||||
cmp.l #-4096, %d0
|
cmp.l #-4096, %d0
|
||||||
jhi syscall_error
|
jhi SYSCALL_ERROR_LABEL
|
||||||
|
|
||||||
/* Successful; return the syscall's value. Copy it to %a0 because
|
/* Successful; return the syscall's value. Copy it to %a0 because
|
||||||
mmap is declared to return a pointer. */
|
mmap is declared to return a pointer. */
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
|
/* Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -56,7 +56,7 @@ ENTRY (__socket)
|
|||||||
|
|
||||||
/* %d0 is < 0 if there was an error. */
|
/* %d0 is < 0 if there was an error. */
|
||||||
tst.l %d0
|
tst.l %d0
|
||||||
jmi syscall_error
|
jmi SYSCALL_ERROR_LABEL
|
||||||
|
|
||||||
/* Successful; return the syscall's value. */
|
/* Successful; return the syscall's value. */
|
||||||
rts
|
rts
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 1996 Free Software Foundation, Inc.
|
/* Copyright (C) 1996, 1998 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -28,6 +28,6 @@ ENTRY (syscall)
|
|||||||
trap &0 /* Do the system call. */
|
trap &0 /* Do the system call. */
|
||||||
UNDOARGS_5 /* Unfrob arguments. */
|
UNDOARGS_5 /* Unfrob arguments. */
|
||||||
cmp.l &-4095, %d0 /* Check %d0 for error. */
|
cmp.l &-4095, %d0 /* Check %d0 for error. */
|
||||||
jcc syscall_error /* Jump to error handler if negative. */
|
jcc SYSCALL_ERROR_LABEL /* Jump to error handler if negative. */
|
||||||
rts /* Return to caller. */
|
rts /* Return to caller. */
|
||||||
PSEUDO_END (syscall)
|
PSEUDO_END (syscall)
|
||||||
|
@ -43,13 +43,22 @@
|
|||||||
for a real error by making sure the value in %d0 is a real error
|
for a real error by making sure the value in %d0 is a real error
|
||||||
number. Linus said he will make sure the no syscall returns a value
|
number. Linus said he will make sure the no syscall returns a value
|
||||||
in -1 .. -4095 as a valid result so we can savely test with -4095. */
|
in -1 .. -4095 as a valid result so we can savely test with -4095. */
|
||||||
|
|
||||||
|
/* We don't want the label for the error handler to be visible in the symbol
|
||||||
|
table when we define it here. */
|
||||||
|
#ifdef PIC
|
||||||
|
#define SYSCALL_ERROR_LABEL .Lsyscall_error
|
||||||
|
#else
|
||||||
|
#define SYSCALL_ERROR_LABEL __syscall_error
|
||||||
|
#endif
|
||||||
|
|
||||||
#undef PSEUDO
|
#undef PSEUDO
|
||||||
#define PSEUDO(name, syscall_name, args) \
|
#define PSEUDO(name, syscall_name, args) \
|
||||||
.text; \
|
.text; \
|
||||||
ENTRY (name) \
|
ENTRY (name) \
|
||||||
DO_CALL (syscall_name, args); \
|
DO_CALL (syscall_name, args); \
|
||||||
cmp.l &-4095, %d0; \
|
cmp.l &-4095, %d0; \
|
||||||
jcc syscall_error
|
jcc SYSCALL_ERROR_LABEL
|
||||||
|
|
||||||
#undef PSEUDO_END
|
#undef PSEUDO_END
|
||||||
#define PSEUDO_END(name) \
|
#define PSEUDO_END(name) \
|
||||||
@ -60,7 +69,7 @@
|
|||||||
/* Store (- %d0) into errno through the GOT. */
|
/* Store (- %d0) into errno through the GOT. */
|
||||||
#ifdef _LIBC_REENTRANT
|
#ifdef _LIBC_REENTRANT
|
||||||
#define SYSCALL_ERROR_HANDLER \
|
#define SYSCALL_ERROR_HANDLER \
|
||||||
syscall_error: \
|
SYSCALL_ERROR_LABEL: \
|
||||||
neg.l %d0; \
|
neg.l %d0; \
|
||||||
move.l %d0, -(%sp); \
|
move.l %d0, -(%sp); \
|
||||||
jbsr __errno_location@PLTPC; \
|
jbsr __errno_location@PLTPC; \
|
||||||
@ -70,9 +79,9 @@ syscall_error: \
|
|||||||
a pointer (e.g., mmap). */ \
|
a pointer (e.g., mmap). */ \
|
||||||
move.l %d0, %a0; \
|
move.l %d0, %a0; \
|
||||||
rts;
|
rts;
|
||||||
#else
|
#else /* !_LIBC_REENTRANT */
|
||||||
#define SYSCALL_ERROR_HANDLER \
|
#define SYSCALL_ERROR_HANDLER \
|
||||||
syscall_error: \
|
SYSCALL_ERROR_LABEL: \
|
||||||
move.l (errno@GOTPC, %pc), %a0; \
|
move.l (errno@GOTPC, %pc), %a0; \
|
||||||
neg.l %d0; \
|
neg.l %d0; \
|
||||||
move.l %d0, (%a0); \
|
move.l %d0, (%a0); \
|
||||||
|
Loading…
Reference in New Issue
Block a user