Back to index

glibc  2.9
sysdep.c File Reference
#include <stdarg.h>
#include <sysdep.h>
#include <errno.h>

Go to the source code of this file.


int __syscall_error (int err_no)
long int syscall (long int __sysno,...) __THROW

Function Documentation

int __syscall_error ( int  err_no)

Definition at line 30 of file sysdep.c.

  __set_errno (err_no);
  return -1;
long int syscall ( long int  __sysno,

Definition at line 43 of file sysdep.c.

  /* FIXME: Keep this matching INLINE_SYSCALL for hppa */
  va_list args;
  long int arg0, arg1, arg2, arg3, arg4, arg5;
  long int __sys_res;

  /* Load varargs */
  va_start (args, __sysno);
  arg0 = va_arg (args, long int);
  arg1 = va_arg (args, long int);
  arg2 = va_arg (args, long int);
  arg3 = va_arg (args, long int);
  arg4 = va_arg (args, long int);
  arg5 = va_arg (args, long int);
  va_end (args);
    register unsigned long int __res asm("r28");
    LOAD_ARGS_6 (arg0, arg1, arg2, arg3, arg4, arg5)
    asm volatile (SAVE_ASM_PIC
                "    ble  0x100(%%sr2, %%r0)     \n"
                "    copy %1, %%r20              \n"
                : "=r" (__res)
                : "r" (__sysno) PIC_REG_USE ASM_ARGS_6
                : "memory", CALL_CLOB_REGS CLOB_ARGS_6);
    __sys_res = __res;
  if ((unsigned long int) __sys_res >= (unsigned long int) -4095)
      __set_errno (-__sys_res);
      __sys_res = -1;
  return __sys_res;