diff options
author | Joseph Myers <joseph@codesourcery.com> | 2012-07-25 21:19:13 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2012-07-25 21:19:13 +0000 |
commit | 89b4b02f421d2a6d24eb632d9c6977dbe786e6ee (patch) | |
tree | cfb4d8f06f24847cb5214a0bb2bc476085415706 /sysdeps/unix/sysv/linux/powerpc | |
parent | 842a39cd1ad9391af7a63a19c87f66a730e027a9 (diff) | |
download | glibc-89b4b02f421d2a6d24eb632d9c6977dbe786e6ee.tar.gz |
Remove pre-2.4.21 Linux kernel support.
Diffstat (limited to 'sysdeps/unix/sysv/linux/powerpc')
10 files changed, 10 insertions, 249 deletions
diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c index 00595f9ffe..0ff8faa354 100644 --- a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c +++ b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c @@ -1,6 +1,5 @@ /* Operating system support for run-time dynamic linker. Linux/PPC version. - Copyright (C) 1997, 1998, 2001, 2003, 2006, 2007 - Free Software Foundation, Inc. + Copyright (C) 1997-2012 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,35 +31,4 @@ int __cache_line_size attribute_hidden; __cache_line_size = av->a_un.a_val; \ break; -#ifndef __ASSUME_STD_AUXV - -/* The PowerPC's auxiliary argument block gets aligned to a 16-byte - boundary. This is history and impossible to change compatibly. */ - -#define DL_FIND_ARG_COMPONENTS(cookie, argc, argv, envp, auxp) \ - do { \ - char **_tmp; \ - size_t _test; \ - (argc) = *(long int *) cookie; \ - (argv) = (char **) cookie + 1; \ - (envp) = (argv) + (argc) + 1; \ - for (_tmp = (envp); *_tmp; ++_tmp) \ - continue; \ - /* The following '++' is important! */ \ - ++_tmp; \ - \ - _test = (size_t)_tmp; \ - _test = (_test + 0xf) & ~0xf; \ - /* Under some circumstances, MkLinux (up to at least DR3a5) \ - omits the padding. To work around this, we make a \ - basic sanity check of the argument vector. Of \ - course, this means that in future, the argument \ - vector will have to be laid out to allow for this \ - test :-(. */ \ - if (((ElfW(auxv_t) *)_test)->a_type <= 0x10) \ - _tmp = (char **)_test; \ - (auxp) = (ElfW(auxv_t) *) _tmp; \ - } while (0) -#endif - #include <sysdeps/unix/sysv/linux/dl-sysdep.c> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S b/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S index 57640aa49f..fb16519efa 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S @@ -1,5 +1,5 @@ /* Wrapper around clone system call. - Copyright (C) 1997,98,99,2000,02,04,2006 Free Software Foundation, Inc. + Copyright (C) 1997-2012 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 @@ -52,11 +52,7 @@ ENTRY (BP_SYM (__clone)) #ifdef RESET_PID stmw r28,16(r1) #else -# ifndef __ASSUME_FIXED_CLONE_SYSCALL - stmw r29,16(r1) -# else stmw r30,16(r1) -# endif #endif /* Set up stack frame for child. */ @@ -66,9 +62,6 @@ ENTRY (BP_SYM (__clone)) /* Save fn, args, stack across syscall. */ mr r30,r3 /* Function in r30. */ -#ifndef __ASSUME_FIXED_CLONE_SYSCALL - mr r29,r4 /* Stack pointer in r29. */ -#endif #ifdef RESET_PID mr r28,r5 #endif @@ -95,14 +88,6 @@ ENTRY (BP_SYM (__clone)) crandc cr1*4+eq,cr1*4+eq,cr0*4+so bne- cr1,L(parent) /* The '-' is to minimise the race. */ -#ifndef __ASSUME_FIXED_CLONE_SYSCALL - /* On at least mklinux DR3a5, clone() doesn't actually change - the stack pointer. I'm pretty sure this is a bug, because - it adds a race condition if a signal is sent to a thread - just after it is created (in the previous three instructions). */ - mr r1,r29 -#endif - #ifdef RESET_PID andis. r0,r28,CLONE_THREAD>>16 bne+ r0,L(oldpid) @@ -128,11 +113,7 @@ L(parent): #ifdef RESET_PID lmw r28,16(r1) #else -# ifndef __ASSUME_FIXED_CLONE_SYSCALL - lmw r29,16(r1) -# else lmw r30,16(r1) -# endif #endif addi r1,r1,32 bnslr+ diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c index 0642e0b407..366c5fe935 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c @@ -1,5 +1,5 @@ /* Procedure definition for FE_MASK_ENV for Linux/ppc. - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007-2012 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 @@ -24,44 +24,11 @@ #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, - and there is no system call, but we can change the bits - in a signal handler's context... */ - -static struct sigaction oact; - -static void -fe_mask_handler (int signum, struct sigcontext *sc) -{ - sc->regs->msr &= ~0x900ul; /* FE0 | FE1 */ - sigaction (SIGUSR1, &oact, NULL); -} -#endif - const fenv_t * __fe_mask_env (void) { -#if __ASSUME_NEW_PRCTL_SYSCALL == 0 -# if defined PR_SET_FPEXC && defined PR_FP_EXC_DISABLED - int result = INLINE_SYSCALL (prctl, 2, PR_SET_FPEXC, PR_FP_EXC_DISABLED); - - if (result == -1 && errno == EINVAL) -# endif - { - struct sigaction act; - - act.sa_handler = (sighandler_t) fe_mask_handler; - 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_DISABLED); -#endif return FE_DFL_ENV; } diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c index 2097af6548..86738fdd5a 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c @@ -1,5 +1,5 @@ /* Procedure definition for FE_NOMASK_ENV for Linux/ppc. - Copyright (C) 2000, 2006, 2008 Free Software Foundation, Inc. + Copyright (C) 2000-2012 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 @@ -24,44 +24,11 @@ #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, - and there is no system call, but we can change the bits - in a signal handler's context... */ - -static struct sigaction oact; - -static void -fe_nomask_handler (int signum, struct sigcontext *sc) -{ - sc->regs->msr |= 0x900ul; /* FE0 | FE1 */ - sigaction (SIGUSR1, &oact, NULL); -} -#endif - const fenv_t * __fe_nomask_env (void) { -#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); - - if (result == -1 && errno == EINVAL) -# endif - { - struct sigaction act; - - act.sa_handler = (sighandler_t) fe_nomask_handler; - 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; } diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c index 9d41ae7366..e4bcd9800d 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c @@ -1,5 +1,5 @@ /* Procedure definition for FE_MASK_ENV for Linux/ppc64. - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007-2012 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 @@ -30,11 +30,6 @@ __fe_mask_env (void) int result; INTERNAL_SYSCALL_DECL (err); result = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_DISABLED); -# ifndef __ASSUME_NEW_PRCTL_SYSCALL - if (INTERNAL_SYSCALL_ERROR_P (result, err) - && INTERNAL_SYSCALL_ERRNO (result, err) == EINVAL) - __set_errno (ENOSYS); -# endif #else __set_errno (ENOSYS); #endif diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c index 14cf14d5b9..46b9478980 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c @@ -1,5 +1,5 @@ /* Procedure definition for FE_NOMASK_ENV for Linux/ppc64. - Copyright (C) 2003, 2006, 2008 Free Software Foundation, Inc. + Copyright (C) 2003-2012 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 @@ -30,11 +30,6 @@ __fe_nomask_env (void) int result; INTERNAL_SYSCALL_DECL (err); result = INTERNAL_SYSCALL (prctl, err, 2, PR_SET_FPEXC, PR_FP_EXC_PRECISE); -# ifndef __ASSUME_NEW_PRCTL_SYSCALL - if (INTERNAL_SYSCALL_ERROR_P (result, err) - && INTERNAL_SYSCALL_ERRNO (result, err) == EINVAL) - __set_errno (ENOSYS); -# endif #else __set_errno (ENOSYS); #endif diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S index 533d98bcc8..472b785c1e 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S @@ -1,5 +1,5 @@ /* Save current context. - Copyright (C) 2002, 2004, 2006 Free Software Foundation, Inc. + Copyright (C) 2002-2012 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 @@ -30,7 +30,6 @@ #if SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4) ENTRY(__novec_getcontext) CALL_MCOUNT 1 -#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3) std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3) mflr r0 @@ -137,18 +136,6 @@ ENTRY(__novec_getcontext) li r3,SIG_BLOCK bl JUMPTARGET(__sigprocmask) nop -#else - /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ - mflr r0 - std r0,FRAME_LR_SAVE(r1) - cfi_offset (lr, FRAME_LR_SAVE) - stdu r1,-128(r1) - cfi_adjust_cfa_offset(128) - li r3,ENOSYS - bl JUMPTARGET(__syscall_error) - nop - li r3,-1 -#endif ld r0,128+FRAME_LR_SAVE(r1) addi r1,r1,128 @@ -172,7 +159,6 @@ compat_symbol (libc, __novec_getcontext, getcontext, GLIBC_2_3) .machine "altivec" ENTRY(__getcontext) CALL_MCOUNT 1 -#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3) std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3) mflr r0 @@ -388,18 +374,6 @@ L(has_no_vec): li r3,SIG_BLOCK bl JUMPTARGET(__sigprocmask) nop -#else - /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ - mflr r0 - std r0,FRAME_LR_SAVE(r1) - cfi_offset (lr, FRAME_LR_SAVE) - stdu r1,-128(r1) - cfi_adjust_cfa_offset (128) - li r3,ENOSYS - bl JUMPTARGET(__syscall_error) - nop - li r3,-1 -#endif ld r0,128+FRAME_LR_SAVE(r1) addi r1,r1,128 diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S index 9d5898c058..ded2a35e01 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S @@ -1,5 +1,5 @@ /* Create new context. - Copyright (C) 2002, 2004, 2006 Free Software Foundation, Inc. + Copyright (C) 2002-2012 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 @@ -26,7 +26,6 @@ ENTRY(__makecontext) CALL_MCOUNT 3 -#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL /* Save parameters into the parameter save area of callers frame. */ std r3,FRAME_PARM1_SAVE(r1) /* ucontext_t *ucp */ std r4,FRAME_PARM2_SAVE(r1) /* void (*func)(void) */ @@ -166,22 +165,6 @@ L(gotexitcodeaddr): addi r1,r1,128 mtlr r0 blr -#else - /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ - mflr r0 - std r0,FRAME_LR_SAVE(r1) - cfi_offset (lr, FRAME_LR_SAVE) - stdu r1,-128(r1) - cfi_adjust_cfa_offset (128) - li r3,ENOSYS - bl JUMPTARGET(__syscall_error) - nop - li r3,-1 - ld r0,128+FRAME_LR_SAVE(r1) - addi r1,r1,128 - mtlr r0 - blr -#endif END(__makecontext) weak_alias (__makecontext, makecontext) diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S index 988ea3a7b2..a7192a6236 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S @@ -1,6 +1,5 @@ /* Switch to context. - Copyright (C) 2002, 2004, 2005, 2006, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 2002-2012 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 @@ -39,7 +38,6 @@ #if SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4) ENTRY(__novec_setcontext) CALL_MCOUNT 1 -#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL mflr r0 std r31,-8(1) cfi_offset(r31,-8) @@ -200,22 +198,6 @@ L(nv_do_sigret): li r0,SYS_ify(rt_sigreturn) sc /* No return. */ -#else - /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ - mflr r0 - std r0,FRAME_LR_SAVE(r1) - cfi_offset(lr,FRAME_LR_SAVE) - stdu r1,-128(r1) - cfi_adjust_cfa_offset(128) - li r3,ENOSYS - bl JUMPTARGET(__syscall_error) - nop - li r3,-1 - ld r0,128+FRAME_LR_SAVE(r1) - addi r1,r1,128 - mtlr r0 - blr -#endif PSEUDO_END(__novec_setcontext) @@ -227,7 +209,6 @@ compat_symbol (libc, __novec_setcontext, setcontext, GLIBC_2_3) .machine "altivec" ENTRY(__setcontext) CALL_MCOUNT 1 -#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL mflr r0 std r31,-8(1) cfi_offset(r31,-8) @@ -491,22 +472,6 @@ L(do_sigret): li r0,SYS_ify(rt_sigreturn) sc /* No return. */ -#else - /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ - mflr r0 - std r0,FRAME_LR_SAVE(r1) - cfi_offset (lr, FRAME_LR_SAVE) - stdu r1,-128(r1) - cfi_adjust_cfa_offset (128) - li r3,ENOSYS - bl JUMPTARGET(__syscall_error) - nop - li r3,-1 - ld r0,128+FRAME_LR_SAVE(r1) - addi r1,r1,128 - mtlr r0 - blr -#endif PSEUDO_END(__setcontext) diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S b/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S index 6b007a5953..f20e9a9bea 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S @@ -1,6 +1,5 @@ /* Save current context and install the given one. - Copyright (C) 2002, 2004, 2005, 2006, 2008, 2009 - Free Software Foundation, Inc. + Copyright (C) 2002-2012 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 @@ -39,7 +38,6 @@ .section ".text" ENTRY(__novec_swapcontext) CALL_MCOUNT 2 -#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3) std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3) mflr r0 @@ -294,21 +292,6 @@ L(nv_do_sigret): li r0,SYS_ify(rt_sigreturn) sc /* No return. */ -#else - /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ - mflr r0 - std r0,FRAME_LR_SAVE(r1) - cfi_offset(lr,FRAME_LR_SAVE) - stdu r1,-128(r1) - li r3,ENOSYS - bl JUMPTARGET(__syscall_error) - nop - li r3,-1 - ld r0,128+FRAME_LR_SAVE(r1) - addi r1,r1,128 - mtlr r0 - blr -#endif PSEUDO_END(__novec_swapcontext) @@ -320,7 +303,6 @@ compat_symbol (libc, __novec_swapcontext, swapcontext, GLIBC_2_3) .machine "altivec" ENTRY(__swapcontext) CALL_MCOUNT 2 -#ifdef __ASSUME_NEW_RT_SIGRETURN_SYSCALL std r0,(SIGCONTEXT_GP_REGS+(PT_R0*8))(r3) std r1,(SIGCONTEXT_GP_REGS+(PT_R1*8))(r3) mflr r0 @@ -789,22 +771,6 @@ L(do_sigret): li r0,SYS_ify(rt_sigreturn) sc /* No return. */ -#else - /* If the kernel is not at least 2.4.21 then generate a ENOSYS stub. */ - mflr r0 - std r0,FRAME_LR_SAVE(r1) - cfi_offset (lr, FRAME_LR_SAVE) - stdu r1,-128(r1) - cfi_adjust_cfa_offset (128) - li r3,ENOSYS - bl JUMPTARGET(__syscall_error) - nop - li r3,-1 - ld r0,128+FRAME_LR_SAVE(r1) - addi r1,r1,128 - mtlr r0 - blr -#endif PSEUDO_END(__swapcontext) |