[uClibc-cvs] uClibc/libc/sysdeps/linux/frv/bits syscalls.h,1.1,1.2
Erik Andersen
andersen at uclibc.org
Fri May 14 10:59:11 UTC 2004
- Previous message: [uClibc-cvs] uClibc/libc/sysdeps/linux/frv clone.S, 1.1, 1.2 crtreloc.c, 1.1, 1.2 sysdep.c, 1.1, 1.2 vfork.S, 1.2, 1.3
- Next message: [uClibc-cvs] uClibc/libc/sysdeps/linux/frv/sys ucontext.h,1.1,1.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /var/cvs/uClibc/libc/sysdeps/linux/frv/bits
In directory nail:/tmp/cvs-serv22500/libc/sysdeps/linux/frv/bits
Modified Files:
syscalls.h
Log Message:
Alexandre Oliva writes:
Here are a number of minor changes to FR-V-specific bits of the uClibc
port:
- I've adjusted the definition of _dl_mmap to cope with the fact that
there will be a definition for an mmap2-only system.
- We don't have COPY relocs, so optimize the copy reloc-related code
away.
- Change the page size to 16KiB, to match the ABI spec, and not a
stale value I'd copied from a linker config file. Oops.
- Fix error handling in clone and vfork; parts of the changes by David
Howells <dhowells at redhat.com>
- Rearrange includes in crtreloc.c.
- Change the API of __syscall_error, to reduce code size.
- Improve __syscall_return in terms of code size, so as to enable
tail-calling of __syscall_error, at least within libc. Ideally,
__syscall_error should be hidden within libc.so, but this didn't
work because of libdl. I haven't looked into why, and figured I'd
leave it visible for now.
- Rename enumerators and macros in sys/ucontext.h to reduce namespace
pollution.
Index: syscalls.h
===================================================================
RCS file: /var/cvs/uClibc/libc/sysdeps/linux/frv/bits/syscalls.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- a/syscalls.h 18 Feb 2004 08:04:50 -0000 1.1
+++ b/syscalls.h 14 May 2004 10:59:08 -0000 1.2
@@ -19,15 +19,29 @@
#ifndef __ASSEMBLER__
/* user-visible error numbers are in the range -1 - -4095: see <asm-frv/errno.h> */
-#define __syscall_return(type, res) \
+#ifdef _LIBC
+# define __syscall_return(type, res) \
do { \
unsigned long __sr2 = (res); \
- if ((unsigned long)(__sr2) >= (unsigned long)(-4095)) { \
- __set_errno (-(__sr2)); \
+ if (__builtin_expect ((unsigned long)(__sr2) \
+ >= (unsigned long)(-4095), 0)) { \
+ extern int __syscall_error (int); \
+ return (type) __syscall_error (__sr2); \
+ } \
+ return (type) (__sr2); \
+} while (0)
+#else
+# define __syscall_return(type, res) \
+do { \
+ unsigned long __sr2 = (res); \
+ if (__builtin_expect ((unsigned long)(__sr2) \
+ >= (unsigned long)(-4095), 0)) { \
+ __set_errno (-__sr2); \
__sr2 = -1; \
} \
return (type) (__sr2); \
} while (0)
+#endif
/* XXX - _foo needs to be __foo, while __NR_bar could be _NR_bar. */
- Previous message: [uClibc-cvs] uClibc/libc/sysdeps/linux/frv clone.S, 1.1, 1.2 crtreloc.c, 1.1, 1.2 sysdep.c, 1.1, 1.2 vfork.S, 1.2, 1.3
- Next message: [uClibc-cvs] uClibc/libc/sysdeps/linux/frv/sys ucontext.h,1.1,1.2
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the uClibc-cvs
mailing list