mirror of
git://sourceware.org/git/glibc.git
synced 2025-01-24 12:25:35 +08:00
Update.
(__fe_nomask_env): Change __prctl call to INTERNAL_SYSCALL.
This commit is contained in:
parent
1e49399dbe
commit
1e2f871859
@ -1,7 +1,7 @@
|
||||
2003-01-28 Steven Munroe <sjmunroe@us.ibm.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c
|
||||
(__fe_nomask_env): Change __prctl call to INLINE_SYSCALL.
|
||||
(__fe_nomask_env): Change __prctl call to INTERNAL_SYSCALL.
|
||||
|
||||
2003-01-28 Martin Schwidefsky <schwidefsky@de.ibm.com>
|
||||
|
||||
|
@ -26,7 +26,8 @@
|
||||
const fenv_t *
|
||||
__fe_nomask_env (void)
|
||||
{
|
||||
INLINE_SYSCALL (prctl, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE);
|
||||
INTERNAL_SYSCALL_DECL (err);
|
||||
INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE);
|
||||
|
||||
return FE_ENABLED_ENV;
|
||||
}
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1992, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
/* Copyright (C) 1992, 1997, 1998, 1999, 2000, 2001, 2002, 2003
|
||||
Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
@ -16,7 +16,7 @@
|
||||
License along with the GNU C Library; if not, write to the Free
|
||||
Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
|
||||
02111-1307 USA. */
|
||||
|
||||
|
||||
/* Alan Modra <amodra@bigpond.net.au> rewrote the INLINE_SYSCALL macro */
|
||||
|
||||
#ifndef _LINUX_POWERPC_SYSDEP_H
|
||||
@ -72,8 +72,8 @@
|
||||
|
||||
/* This version is for kernels that implement system calls that
|
||||
behave like function calls as far as register saving. */
|
||||
#define INLINE_SYSCALL(name, nr, args...) \
|
||||
({ \
|
||||
#define INLINE_SYSCALL(name, nr, args...) \
|
||||
({ \
|
||||
INTERNAL_SYSCALL_DECL (sc_err); \
|
||||
long sc_ret = INTERNAL_SYSCALL (name, sc_err, nr, args); \
|
||||
if (INTERNAL_SYSCALL_ERROR_P (sc_ret, sc_err)) \
|
||||
@ -90,8 +90,8 @@
|
||||
gave back in the non-error (CR0.SO cleared) case, otherwise (CR0.SO set)
|
||||
the negation of the return value in the kernel gets reverted. */
|
||||
|
||||
# undef INTERNAL_SYSCALL
|
||||
# define INTERNAL_SYSCALL(name, err, nr, args...) \
|
||||
#undef INTERNAL_SYSCALL
|
||||
#define INTERNAL_SYSCALL(name, err, nr, args...) \
|
||||
({ \
|
||||
register long r0 __asm__ ("r0"); \
|
||||
register long r3 __asm__ ("r3"); \
|
||||
@ -106,24 +106,24 @@
|
||||
"mfcr %0\n\t" \
|
||||
"0:" \
|
||||
: "=&r" (r0), \
|
||||
"=&r" (r3), "=&r" (r4), "=&r" (r5), \
|
||||
"=&r" (r6), "=&r" (r7), "=&r" (r8) \
|
||||
"=&r" (r3), "=&r" (r4), "=&r" (r5), \
|
||||
"=&r" (r6), "=&r" (r7), "=&r" (r8) \
|
||||
: ASM_INPUT_##nr \
|
||||
: "r9", "r10", "r11", "r12", \
|
||||
: "r9", "r10", "r11", "r12", \
|
||||
"cr0", "ctr", "memory"); \
|
||||
err = r0; \
|
||||
(int) r3; \
|
||||
})
|
||||
|
||||
# undef INTERNAL_SYSCALL_DECL
|
||||
# define INTERNAL_SYSCALL_DECL(err) long err
|
||||
|
||||
# undef INTERNAL_SYSCALL_ERROR_P
|
||||
# define INTERNAL_SYSCALL_ERROR_P(val, err) \
|
||||
#undef INTERNAL_SYSCALL_DECL
|
||||
#define INTERNAL_SYSCALL_DECL(err) long err
|
||||
|
||||
#undef INTERNAL_SYSCALL_ERROR_P
|
||||
#define INTERNAL_SYSCALL_ERROR_P(val, err) \
|
||||
(__builtin_expect (err & (1 << 28), 0))
|
||||
|
||||
# undef INTERNAL_SYSCALL_ERRNO
|
||||
# define INTERNAL_SYSCALL_ERRNO(val, err) (val)
|
||||
#undef INTERNAL_SYSCALL_ERRNO
|
||||
#define INTERNAL_SYSCALL_ERRNO(val, err) (val)
|
||||
|
||||
#define LOADARGS_0(name, dummy) \
|
||||
r0 = __NR_##name
|
||||
|
Loading…
Reference in New Issue
Block a user