(syscall): Cleanup asm statment.

This commit is contained in:
Ulrich Drepper 2003-10-15 05:45:16 +00:00
parent aca984867e
commit 5420f85dbe

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1997, 1998, 2001 Free Software Foundation, Inc.
/* Copyright (C) 1997, 1998, 2001, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -19,6 +19,10 @@
#include <sysdep.h>
#include <errno.h>
extern int __syscall_error(int err_no);
extern int syscall (int sysnum, int arg0, int arg1, int arg2,
int arg3, int arg4, int arg5);
/* This routine is jumped to by all the syscall handlers, to stash
an error number into errno. */
int
@ -30,25 +34,31 @@ __syscall_error (int err_no)
/* HPPA implements syscall() in 'C'; the assembler version would
typically be in syscall.S. */
typically be in syscall.S. Also note that we have INLINE_SYSCALL,
INTERNAL_SYSCALL, and all the generated pure assembly syscall wrappers.
How often the function is used is unknown. */
int
syscall (int sysnum, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5)
syscall (int sysnum, int arg0, int arg1, int arg2, int arg3, int arg4,
int arg5)
{
long __sys_res;
/* FIXME: Keep this matching INLINE_SYSCALL for hppa */
long int __sys_res;
{
register unsigned long __res asm("r28");
LOAD_ARGS_6(arg0, arg1, arg2, arg3, arg4, arg5)
asm volatile ("ble 0x100(%%sr2, %%r0)\n\t"
"copy %1, %%r20"
: "=r" (__res)
: "r" (sysnum) ASM_ARGS_6);
register unsigned long int __res asm("r28");
LOAD_ARGS_6 (arg0, arg1, arg2, arg3, arg4, arg5)
asm volatile (STW_ASM_PIC
" ble 0x100(%%sr2, %%r0) \n"
" copy %1, %%r20 \n"
LDW_ASM_PIC
: "=r" (__res)
: "r" (sysnum) ASM_ARGS_6
: CALL_CLOB_REGS CLOB_ARGS_6);
__sys_res = __res;
}
if ((unsigned long) __sys_res >= (unsigned long)-4095)
if ((unsigned long int) __sys_res >= (unsigned long int) -4095)
{
__set_errno(-__sys_res);
__sys_res = -1;
}
__set_errno (-__sys_res);
__sys_res = -1;
}
return __sys_res;
}