mirror of
git://sourceware.org/git/glibc.git
synced 2024-12-03 04:01:43 +08:00
(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.
|
||||
|
||||
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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user