diff options
author | Andreas Jaeger <aj@suse.de> | 2001-06-06 11:49:29 +0000 |
---|---|---|
committer | Andreas Jaeger <aj@suse.de> | 2001-06-06 11:49:29 +0000 |
commit | f325056f095c24a3ebf60707b2cc39859ea72019 (patch) | |
tree | 8a596a5febbcf0e4874c0cfe763bbf3f866bcc04 /sysdeps/unix/sysv/linux/hppa | |
parent | 97b30982cefabcd50007467df1336fb40fa4200f (diff) | |
download | glibc-f325056f095c24a3ebf60707b2cc39859ea72019.tar glibc-f325056f095c24a3ebf60707b2cc39859ea72019.tar.gz glibc-f325056f095c24a3ebf60707b2cc39859ea72019.tar.bz2 glibc-f325056f095c24a3ebf60707b2cc39859ea72019.zip |
Implement syscall.
Diffstat (limited to 'sysdeps/unix/sysv/linux/hppa')
-rw-r--r-- | sysdeps/unix/sysv/linux/hppa/sysdep.c | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/sysdeps/unix/sysv/linux/hppa/sysdep.c b/sysdeps/unix/sysv/linux/hppa/sysdep.c index 0559cc7065..e185da5f34 100644 --- a/sysdeps/unix/sysv/linux/hppa/sysdep.c +++ b/sysdeps/unix/sysv/linux/hppa/sysdep.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1998, 2001 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 @@ -32,3 +32,28 @@ __syscall_error (int err_no) #undef errno int errno = 0; weak_alias (errno, _errno) + + +/* HPPA implements syscall() in 'C'; the assembler version would + typically be in syscall.S. */ + +int +syscall (int sysnum, int arg0, int arg1, int arg2, int arg3, int arg4, int arg5) +{ + long __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); + __sys_res = __res; + } + if ((unsigned long) __sys_res >= (unsigned long)-4095) + { + __set_errno(-__sys_res); + __sys_res = -1; + } + return __sys_res; +} |