@@ -7,11 +7,6 @@ ifeq ($(subdir),setjmp)
sysdep_routines += setjmp_aux
endif
-ifeq ($(subdir),rt)
-librt-sysdep_routines += rt-sysdep
-librt-shared-only-routines += rt-sysdep
-endif
-
ifeq ($(subdir),csu)
CPPFLAGS-crti.S += $(pic-ccflag)
CPPFLAGS-crtn.S += $(pic-ccflag)
@@ -18,8 +18,3 @@
ifeq ($(subdir),csu)
gen-as-const-headers += tcb-offsets.sym
endif
-
-ifeq ($(subdir),nptl)
-libpthread-sysdep_routines += nptl-sysdep
-libpthread-shared-only-routines += nptl-sysdep
-endif
deleted file mode 100644
@@ -1,2 +0,0 @@
-/* Pull in __syscall_error. */
-#include <sysdep.S>
@@ -26,7 +26,8 @@
.align 2; \
.set nomips16; \
cfi_startproc; \
- 99: la t9,__syscall_error; \
+ 99: subu a0, zero, v0; \
+ la t9,__syscall_error; \
jr t9; \
cfi_endproc; \
ENTRY(name) \
@@ -44,7 +45,7 @@ L(syse1):
.align 2; \
cfi_startproc; \
99: j __syscall_error; \
- nop; \
+ subu a0, zero, v0; \
cfi_endproc; \
ENTRY(name) \
.set noreorder; \
@@ -30,6 +30,7 @@
.set nomips16; \
cfi_startproc; \
99:; \
+ dsubu a0, zero, v0; \
.set noat; \
.cpsetup t9, $1, name; \
cfi_register (gp, $1); \
@@ -51,7 +52,7 @@ L(syse1):
.set nomips16; \
cfi_startproc; \
99: j __syscall_error; \
- nop; \
+ dsubu a0, zero, v0; \
cfi_endproc; \
ENTRY(name) \
.set noreorder; \
deleted file mode 100644
@@ -1 +0,0 @@
-#include <sysdep.S>
deleted file mode 100644
@@ -1,99 +0,0 @@
-/* Copyright (C) 1992-2020 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Brendan Kehoe (brendan@zen.org).
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library. If not, see
- <https://www.gnu.org/licenses/>. */
-
-#include <sysdep.h>
-#include <errno.h>
-#include <sys/asm.h>
-
- .set nomips16
-
-#ifdef _LIBC_REENTRANT
-
-LOCALSZ= 3
-FRAMESZ= (((NARGSAVE+LOCALSZ)*SZREG)+ALSZ)&ALMASK
-RAOFF= FRAMESZ-(1*SZREG)
-GPOFF= FRAMESZ-(2*SZREG)
-V0OFF= FRAMESZ-(3*SZREG)
-
-ENTRY(__syscall_error)
-#ifdef __PIC__
- .set noat
- SETUP_GPX (AT)
- .set at
-#endif
- PTR_SUBU sp, FRAMESZ
- .set noat
- SETUP_GPX64(GPOFF,AT)
- .set at
-#ifdef __PIC__
- SAVE_GP(GPOFF)
-#endif
- REG_S v0, V0OFF(sp)
- REG_S ra, RAOFF(sp)
-
-#if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN
- /* We translate the system's EWOULDBLOCK error into EAGAIN.
- The GNU C library always defines EWOULDBLOCK==EAGAIN.
- EWOULDBLOCK_sys is the original number. */
- bne v0, EWOULDBLOCK_sys, L(skip)
- nop
- li v0, EAGAIN
-L(skip):
-#endif
- /* Find our per-thread errno address */
- jal __errno_location
-
- /* Store the error value. */
- REG_L t0, V0OFF(sp)
- sw t0, 0(v0)
-
- /* And just kick back a -1. */
- REG_L ra, RAOFF(sp)
- RESTORE_GP64
- PTR_ADDU sp, FRAMESZ
- li v0, -1
- j ra
- END(__syscall_error)
-
-#else /* _LIBC_REENTRANT */
-
-
-ENTRY(__syscall_error)
-#ifdef __PIC__
- SETUP_GPX (AT)
-#endif
- SETUP_GPX64 (t9, AT)
-
-#if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN
- /* We translate the system's EWOULDBLOCK error into EAGAIN.
- The GNU C library always defines EWOULDBLOCK==EAGAIN.
- EWOULDBLOCK_sys is the original number. */
- bne v0, EWOULDBLOCK_sys, L(skip)
- li v0, EAGAIN
-L(skip):
-#endif
- /* Store it in errno... */
- sw v0, errno
-
- /* And just kick back a -1. */
- li v0, -1
-
- RESTORE_GP64
- j ra
- END(__syscall_error)
-#endif /* _LIBC_REENTRANT */
@@ -102,6 +102,7 @@ NESTED(__clone,4*SZREG,sp)
/* Something bad happened -- no child created */
L(error):
cfi_restore_state
+ INT_SUBU a0, zero, v0
#ifdef __PIC__
PTR_LA t9,__syscall_error
RESTORE_GP64_STACK
@@ -140,6 +140,7 @@ NESTED (__getcontext, FRAMESZ, ra)
99:
cfi_restore_state
+ INT_SUBU a0, zero, v0
#ifdef __PIC__
PTR_LA t9, JUMPTARGET (__syscall_error)
RESTORE_GP64_STACK
@@ -31,7 +31,8 @@ ENTRY (__ioctl)
ret
L(error):
- SETUP_GP64_REG (a0, __ioctl)
+ INT_SUBU a0, zero, v0
+ SETUP_GP64_REG (v0, __ioctl)
PTR_LA t9, __syscall_error
RESTORE_GP64_REG
jr t9
@@ -55,7 +55,8 @@ NESTED (syscall, SZREG, ra)
ret
L(error):
- SETUP_GP64_REG (a0, syscall)
+ INT_SUBU a0, zero, v0
+ SETUP_GP64_REG (v0, syscall)
PTR_LA t9, __syscall_error
RESTORE_GP64_REG
jr t9
@@ -149,6 +149,7 @@ NESTED (__setcontext, FRAMESZ, ra)
jr t9
99:
+ INT_SUBU a0, zero, v0
#ifdef __PIC__
PTR_LA t9, JUMPTARGET (__syscall_error)
RESTORE_GP64_STACK
@@ -200,6 +200,7 @@ NESTED (__swapcontext, FRAMESZ, ra)
jr t9
99:
+ INT_SUBU a0, zero, v0;
#ifdef __PIC__
PTR_LA t9, JUMPTARGET (__syscall_error)
RESTORE_GP64_STACK
new file mode 100644
@@ -0,0 +1,5 @@
+/* The auto-generated syscalls call __syscall_error. */
+#include <syscall_error.h>
+#undef SYSCALL_ERROR_FUNC
+#define SYSCALL_ERROR_FUNC 1
+#include <sysdeps/unix/sysv/linux/syscall_error.c>
@@ -76,6 +76,7 @@ NESTED(__libc_vfork,FRAMESZ,sp)
/* Something bad happened -- no child created. */
L(error):
cfi_restore_state
+ INT_SUBU a0, zero, v0
#ifdef __PIC__
PTR_LA t9, __syscall_error
RESTORE_GP64_REG