1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-30 22:43:12 +03:00
2002-07-24  Philip Blundell  <philb@gnu.org>

	* sysdeps/unix/sysv/linux/arm/ioperm.c (init_iosys): Yield ENODEV
	on unknown systems.

2003-02-20  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* sysdeps/powerpc/powerpc32/atomicity.h: Remove compiler workaround.
	* sysdeps/unix/sysv/linux/kernel-features.h
	(__ASSUME_NEW_PRCTL_SYSCALL): Defined for ppc32 too.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fe_nomask.c: Use prctl
	if possible.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S: Avoid short
	interprocedure branches.
	* sysdeps/powerpc/soft-fp/Dist (sim-full.c, fenv_const.c): Move to...
	* sysdeps/powerpc/nofpu/Dist: ...here.
	* sysdeps/unix/sysv/linux/powerpc/Dist (fe_nomask.c): Move to...
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/Dist: ...here.
	* sysdeps/unix/sysv/linux/s390/s390-64/Dist (kernel_stat.h): Delete.
	* sysdeps/unix/sysv/linux/sparc/Dist (bits/utmpx.h): Delete.
	* sysdeps/unix/sysv/linux/x86_64/Dist (bits/utmpx.h): Delete.
This commit is contained in:
Ulrich Drepper
2003-02-20 22:23:34 +00:00
parent a592f998bb
commit 0585697658
15 changed files with 81 additions and 49 deletions

View File

@ -1,3 +1,25 @@
2002-07-24 Philip Blundell <philb@gnu.org>
* sysdeps/unix/sysv/linux/arm/ioperm.c (init_iosys): Yield ENODEV
on unknown systems.
2003-02-20 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* sysdeps/powerpc/powerpc32/atomicity.h: Remove compiler workaround.
* sysdeps/unix/sysv/linux/kernel-features.h
(__ASSUME_NEW_PRCTL_SYSCALL): Defined for ppc32 too.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/fe_nomask.c: Use prctl
if possible.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S: Avoid short
interprocedure branches.
* sysdeps/powerpc/soft-fp/Dist (sim-full.c, fenv_const.c): Move to...
* sysdeps/powerpc/nofpu/Dist: ...here.
* sysdeps/unix/sysv/linux/powerpc/Dist (fe_nomask.c): Move to...
* sysdeps/unix/sysv/linux/powerpc/powerpc32/Dist: ...here.
* sysdeps/unix/sysv/linux/s390/s390-64/Dist (kernel_stat.h): Delete.
* sysdeps/unix/sysv/linux/sparc/Dist (bits/utmpx.h): Delete.
* sysdeps/unix/sysv/linux/x86_64/Dist (bits/utmpx.h): Delete.
2003-02-18 Alan Modra <amodra@bigpond.net.au> 2003-02-18 Alan Modra <amodra@bigpond.net.au>
* sysdeps/powerpc/powerpc32/sysdep.h (HIDDEN_JUMPTARGET): Redefine. * sysdeps/powerpc/powerpc32/sysdep.h (HIDDEN_JUMPTARGET): Redefine.

View File

@ -1,3 +1,8 @@
2003-02-20 Franz Sirl <Franz.Sirl-kernel@lauterbach.com>
* sysdeps/unix/sysv/linux/powerpc/powerpc32/vfork.S: Avoid short
interprocedure branches.
2003-02-19 Ulrich Drepper <drepper@redhat.com> 2003-02-19 Ulrich Drepper <drepper@redhat.com>
* specific.c (pthread_key_delete_helper): Don't use GETMEM, we * specific.c (pthread_key_delete_helper): Don't use GETMEM, we

View File

@ -36,16 +36,15 @@ ENTRY (__vfork)
mtlr 9 mtlr 9
lwz 10,__libc_pthread_functions@got(10) lwz 10,__libc_pthread_functions@got(10)
lwz 10,0(10) lwz 10,0(10)
cmpwi 10,0
bne- HIDDEN_JUMPTARGET(__fork)
# else # else
.weak pthread_create .weak pthread_create
lis 9,pthread_create@ha lis 10,pthread_create@ha
la 9,pthread_create@l(9) la 10,pthread_create@l(10)
cmpwi 9,0
bne- .Lhidden_fork
# endif # endif
cmpwi 10,0
bne- .Lhidden_fork
DO_CALL (SYS_ify (vfork)); DO_CALL (SYS_ify (vfork));
# ifdef __ASSUME_VFORK_SYSCALL # ifdef __ASSUME_VFORK_SYSCALL
@ -54,28 +53,24 @@ ENTRY (__vfork)
bnslr+ bnslr+
/* Check if vfork syscall is known at all. */ /* Check if vfork syscall is known at all. */
cmpwi r3,ENOSYS cmpwi r3,ENOSYS
# ifdef SHARED bne- .Lsyscall_error
bne JUMPTARGET(__syscall_error)
# else
bne .Lsyscall_error
# endif
# endif # endif
.Lhidden_fork:
b HIDDEN_JUMPTARGET(__fork)
#endif #endif
#ifndef __ASSUME_VFORK_SYSCALL #ifndef __ASSUME_VFORK_SYSCALL
/* If we don't have vfork, fork is close enough. */ /* If we don't have vfork, fork is close enough. */
DO_CALL (SYS_ify (fork)); DO_CALL (SYS_ify (fork));
PSEUDO_RET bnslr+
#endif
# ifndef SHARED
.Lhidden_fork:
b HIDDEN_JUMPTARGET(__fork)
.Lsyscall_error: .Lsyscall_error:
b JUMPTARGET(__syscall_error) b JUMPTARGET(__syscall_error)
# endif #endif
PSEUDO_END (__vfork) PSEUDO_END (__vfork)
libc_hidden_def (__vfork) libc_hidden_def (__vfork)

View File

@ -0,0 +1,2 @@
sim-full.c
fenv_const.c

View File

@ -22,13 +22,7 @@
#include <inttypes.h> #include <inttypes.h>
#if BROKEN_PPC_ASM_CR0 static inline int
# define __ATOMICITY_INLINE /* nothing */
#else
# define __ATOMICITY_INLINE inline
#endif
static __ATOMICITY_INLINE int
__attribute__ ((unused)) __attribute__ ((unused))
exchange_and_add (volatile uint32_t *mem, int val) exchange_and_add (volatile uint32_t *mem, int val)
{ {
@ -42,7 +36,7 @@ exchange_and_add (volatile uint32_t *mem, int val)
return result; return result;
} }
static __ATOMICITY_INLINE void static inline void
__attribute__ ((unused)) __attribute__ ((unused))
atomic_add (volatile uint32_t *mem, int val) atomic_add (volatile uint32_t *mem, int val)
{ {
@ -55,7 +49,7 @@ atomic_add (volatile uint32_t *mem, int val)
" : "=&b"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory"); " : "=&b"(tmp) : "r" (mem), "Ir"(val) : "cr0", "memory");
} }
static __ATOMICITY_INLINE int static inline int
__attribute__ ((unused)) __attribute__ ((unused))
compare_and_swap (volatile long int *p, long int oldval, long int newval) compare_and_swap (volatile long int *p, long int oldval, long int newval)
{ {
@ -72,7 +66,7 @@ compare_and_swap (volatile long int *p, long int oldval, long int newval)
return result >> 5; return result >> 5;
} }
static __ATOMICITY_INLINE long int static inline long int
__attribute__ ((unused)) __attribute__ ((unused))
always_swap (volatile long int *p, long int newval) always_swap (volatile long int *p, long int newval)
{ {
@ -85,7 +79,7 @@ always_swap (volatile long int *p, long int newval)
return result; return result;
} }
static __ATOMICITY_INLINE int static inline int
__attribute__ ((unused)) __attribute__ ((unused))
test_and_set (volatile long int *p, long int newval) test_and_set (volatile long int *p, long int newval)
{ {

View File

@ -25,6 +25,4 @@ q_sub.c
q_ulltoq.c q_ulltoq.c
q_util.c q_util.c
q_utoq.c q_utoq.c
sim-full.c
fenv_const.c
sfp-machine.h sfp-machine.h

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1998, 1999 Free Software Foundation, Inc. /* Copyright (C) 1998, 1999, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Phil Blundell, based on the Alpha version by Contributed by Phil Blundell, based on the Alpha version by
David Mosberger. David Mosberger.
@ -166,7 +166,7 @@ init_iosys (void)
} }
/* systype is not a known platform name... */ /* systype is not a known platform name... */
__set_errno (EINVAL); __set_errno (ENODEV);
return -1; return -1;
} }
@ -194,8 +194,8 @@ _ioperm (unsigned long int from, unsigned long int num, int turn_on)
return -1; return -1;
io.base = io.base =
(unsigned long int) __mmap (0, MAX_PORT << io.shift, (unsigned long int) __mmap (0, MAX_PORT << io.shift,
PROT_READ | PROT_WRITE, PROT_READ | PROT_WRITE,
MAP_SHARED, fd, io.io_base); MAP_SHARED, fd, io.io_base);
close (fd); close (fd);
if ((long) io.base == -1) if ((long) io.base == -1)

View File

@ -210,9 +210,9 @@
# define __ASSUME_MMAP2_SYSCALL 1 # define __ASSUME_MMAP2_SYSCALL 1
#endif #endif
/* Starting with 2.4.21 PowerPC64 implements the new prctl syscall. /* Starting with 2.4.21 PowerPC implements the new prctl syscall.
This allows applications to get/set the Floating Point Exception Mode. */ This allows applications to get/set the Floating Point Exception Mode. */
#if __LINUX_KERNEL_VERSION >= (132096+21) && defined __powerpc64__ #if __LINUX_KERNEL_VERSION >= (132096+21) && defined __powerpc__
# define __ASSUME_NEW_PRCTL_SYSCALL 1 # define __ASSUME_NEW_PRCTL_SYSCALL 1
#endif #endif

View File

@ -1,6 +1,4 @@
bits/utmpx.h
dl-brk.S dl-brk.S
fe_nomask.c
ipc_priv.h ipc_priv.h
kernel_termios.h kernel_termios.h
ldd-rewrite.sed ldd-rewrite.sed

View File

@ -1,2 +1,3 @@
clone.S clone.S
kernel_stat.h kernel_stat.h
fe_nomask.c

View File

@ -21,7 +21,11 @@
#include <errno.h> #include <errno.h>
#include <signal.h> #include <signal.h>
#include <unistd.h> #include <unistd.h>
#include <sysdep.h>
#include <sys/prctl.h>
#include "kernel-features.h"
#if __ASSUME_NEW_PRCTL_SYSCALL == 0
/* This is rather fiddly under Linux. We don't have direct access, /* This is rather fiddly under Linux. We don't have direct access,
and there is no system call, but we can change the bits and there is no system call, but we can change the bits
in a signal handler's context... */ in a signal handler's context... */
@ -34,18 +38,31 @@ fe_nomask_handler (int signum, struct sigcontext *sc)
sc->regs->msr |= 0x900ul; /* FE0 | FE1 */ sc->regs->msr |= 0x900ul; /* FE0 | FE1 */
sigaction (SIGUSR1, &oact, NULL); sigaction (SIGUSR1, &oact, NULL);
} }
#endif
const fenv_t * const fenv_t *
__fe_nomask_env (void) __fe_nomask_env (void)
{ {
struct sigaction act; #if __ASSUME_NEW_PRCTL_SYSCALL == 0
# if defined PR_SET_FPEXC && defined PR_FP_EXC_PRECISE
int result = INLINE_SYSCALL (prctl, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE);
act.sa_handler = (sighandler_t) fe_nomask_handler; if (result == -1 && errno == EINVAL)
sigemptyset (&act.sa_mask); # endif
act.sa_flags = 0; {
struct sigaction act;
sigaction (SIGUSR1, &act, &oact); act.sa_handler = (sighandler_t) fe_nomask_handler;
raise (SIGUSR1); sigemptyset (&act.sa_mask);
act.sa_flags = 0;
sigaction (SIGUSR1, &act, &oact);
raise (SIGUSR1);
}
#else
INTERNAL_SYSCALL_DECL (err);
INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE);
#endif
return FE_ENABLED_ENV; return FE_ENABLED_ENV;
} }

View File

@ -38,7 +38,7 @@ ENTRY (__vfork)
bnslr+ bnslr+
/* Check if vfork syscall is known at all. */ /* Check if vfork syscall is known at all. */
cmpwi r3,ENOSYS cmpwi r3,ENOSYS
bne JUMPTARGET(__syscall_error) bne- .Lsyscall_error
# endif # endif
#endif #endif
@ -47,7 +47,10 @@ ENTRY (__vfork)
/* If we don't have vfork, fork is close enough. */ /* If we don't have vfork, fork is close enough. */
DO_CALL (SYS_ify (fork)) DO_CALL (SYS_ify (fork))
PSEUDO_RET bnslr+
.Lsyscall_error:
b JUMPTARGET(__syscall_error)
#endif #endif
PSEUDO_END (__vfork) PSEUDO_END (__vfork)

View File

@ -1,3 +1,2 @@
clone.S clone.S
kernel_stat.h
ucontext_i.h ucontext_i.h

View File

@ -1,4 +1,3 @@
bits/utmpx.h
kernel_termios.h kernel_termios.h
sys/trap.h sys/trap.h
ldd-rewrite.sed ldd-rewrite.sed

View File

@ -1,4 +1,3 @@
bits/utmpx.h
clone.S clone.S
ldd-rewrite.sed ldd-rewrite.sed
__start_context.S __start_context.S