12345678910111213141516171819202122232425 |
- /* We can't use the real errno in ldso, since it has not yet
- * been dynamicly linked in yet. */
- #include "sys/syscall.h"
- extern int _dl_errno;
- #undef __set_errno
- #define __set_errno(X) {(_dl_errno) = (X);}
- #undef __syscall_return
- #define __syscall_return(type, res) \
- do { \
- /* \
- * Note: when returning from kernel the return value is in r9 \
- * \
- * This prevents conflicts between return value and arg1 \
- * when dispatching signal handler, in other words makes \
- * life easier in the system call epilogue (see entry.S) \
- */ \
- register unsigned long __sr2 __asm__ ("r2") = res; \
- if ((unsigned long)(res) >= (unsigned long)(-125)) { \
- _dl_errno = -(res); \
- __sr2 = -1; \
- } \
- return (type)(__sr2); \
- } while (0)
|