(syscall): Cleanup asm statment.
This commit is contained in:
parent
aca984867e
commit
5420f85dbe
@ -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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -19,6 +19,10 @@
|
|||||||
#include <sysdep.h>
|
#include <sysdep.h>
|
||||||
#include <errno.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
|
/* This routine is jumped to by all the syscall handlers, to stash
|
||||||
an error number into errno. */
|
an error number into errno. */
|
||||||
int
|
int
|
||||||
@ -30,25 +34,31 @@ __syscall_error (int err_no)
|
|||||||
|
|
||||||
|
|
||||||
/* HPPA implements syscall() in 'C'; the assembler version would
|
/* 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
|
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");
|
register unsigned long int __res asm("r28");
|
||||||
LOAD_ARGS_6(arg0, arg1, arg2, arg3, arg4, arg5)
|
LOAD_ARGS_6 (arg0, arg1, arg2, arg3, arg4, arg5)
|
||||||
asm volatile ("ble 0x100(%%sr2, %%r0)\n\t"
|
asm volatile (STW_ASM_PIC
|
||||||
"copy %1, %%r20"
|
" ble 0x100(%%sr2, %%r0) \n"
|
||||||
: "=r" (__res)
|
" copy %1, %%r20 \n"
|
||||||
: "r" (sysnum) ASM_ARGS_6);
|
LDW_ASM_PIC
|
||||||
|
: "=r" (__res)
|
||||||
|
: "r" (sysnum) ASM_ARGS_6
|
||||||
|
: CALL_CLOB_REGS CLOB_ARGS_6);
|
||||||
__sys_res = __res;
|
__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);
|
__set_errno (-__sys_res);
|
||||||
__sys_res = -1;
|
__sys_res = -1;
|
||||||
}
|
}
|
||||||
return __sys_res;
|
return __sys_res;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user