* Current function is a C protype and PSEUDO macro does not
transfer syscall return parameters to correct argument registers
for a C function. This causes problem with syscalls setting wrong
value for errno when they encounter an error.
* Fixes PR/2089 for mips/nptl
Signed-off-by: Khem Raj <raj.khem@gmail.com>
#
CSRC := \
- __longjmp.c brk.c setjmp_aux.c mmap.c __syscall_error.c \
+ __longjmp.c brk.c setjmp_aux.c mmap.c \
cacheflush.c pread_write.c sysmips.c _test_and_set.c \
readahead.c
-SSRC := bsd-_setjmp.S bsd-setjmp.S setjmp.S syscall.S pipe.S
+SSRC := bsd-_setjmp.S bsd-setjmp.S setjmp.S syscall.S pipe.S syscall_error.S
ifeq ($(UCLIBC_HAS_ADVANCED_REALTIME),y)
CSRC += posix_fadvise.c posix_fadvise64.c
SSRC += vfork.S clone.S
endif
+ASFLAGS-syscall_error.S += -D_LIBC_REENTRANT
ARCH_HEADERS := sgidefs.h
# regdef.h
#include <sysdep.h>
#include <bits/errno.h>
-#ifdef __UCLIBC_HAS_THREADS__
+#ifdef _LIBC_REENTRANT
LOCALSZ= 3
FRAMESZ= (((NARGSAVE+LOCALSZ)*SZREG)+ALSZ)&ALMASK
j ra
END(__syscall_error)
-#else /* __UCLIBC_HAS_THREADS__ */
+#else /* __LIBC_REENTRANT */
ENTRY(__syscall_error)
#ifdef __PIC__
+ .set noat
SETUP_GPX (AT)
+ .set at
#endif
SETUP_GPX64 (t9, AT)
RESTORE_GP64
j ra
END(__syscall_error)
-#endif /* __UCLIBC_HAS_THREADS__ */
+#endif /* _LIBC_REENTRANT*/
ASFLAGS-pthread_spin_lock.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1
ASFLAGS-pthread_spin_trylock.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1
ASFLAGS-nptl-sysdep.S = -DNOT_IN_libc=1 -DIS_IN_libpthread=1 \
+ -D_LIBC_REENTRANT \
-I$(top_srcdir)libc/sysdeps/linux/mips
CFLAGS-mips = $(SSP_ALL_CFLAGS)