Remove custom pthread_once implementation on sh.
authorTorvald Riegel <triegel@redhat.com>
Mon, 8 Dec 2014 17:29:18 +0000 (18:29 +0100)
committerTorvald Riegel <triegel@redhat.com>
Tue, 9 Dec 2014 13:32:29 +0000 (14:32 +0100)
ChangeLog
sysdeps/unix/sysv/linux/sh/pthread_once.S [deleted file]

index ea4e555..7cd1a45 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2014-12-09  Torvald Riegel  <triegel@redhat.com>
+
+       * sysdeps/unix/sysv/linux/sh/pthread_once.S: Remove file.
+
 2014-12-08  Adhemerval Zanella  <azanella@linux.vnet.ibm.com>
 
        * libio/tst-ftell-active-handler.c (do_ftell_test): Fix wide-character
diff --git a/sysdeps/unix/sysv/linux/sh/pthread_once.S b/sysdeps/unix/sysv/linux/sh/pthread_once.S
deleted file mode 100644 (file)
index b22cf44..0000000
+++ /dev/null
@@ -1,257 +0,0 @@
-/* Copyright (C) 2003-2014 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
-   modify it under the terms of the GNU Lesser General Public
-   License as published by the Free Software Foundation; either
-   version 2.1 of the License, or (at your option) any later version.
-
-   The GNU C Library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, see
-   <http://www.gnu.org/licenses/>.  */
-
-#include <unwindbuf.h>
-#include <sysdep.h>
-#include <kernel-features.h>
-#include <lowlevellock.h>
-#include "lowlevel-atomic.h"
-
-
-       .comm   __fork_generation, 4, 4
-
-       .text
-       .globl  __pthread_once
-       .type   __pthread_once,@function
-       .align  5
-       cfi_startproc
-__pthread_once:
-       mov.l   @r4, r0
-       tst     #2, r0
-       bt      1f
-       rts
-        mov    #0, r0
-
-1:
-       mov.l   r12, @-r15
-       cfi_adjust_cfa_offset (4)
-       cfi_rel_offset (r12, 0)
-       mov.l   r9, @-r15
-       cfi_adjust_cfa_offset (4)
-       cfi_rel_offset (r9, 0)
-       mov.l   r8, @-r15
-       cfi_adjust_cfa_offset (4)
-       cfi_rel_offset (r8, 0)
-       sts.l   pr, @-r15
-       cfi_adjust_cfa_offset (4)
-       cfi_rel_offset (pr, 0)
-       mov     r5, r8
-       mov     r4, r9
-
-       /* Not yet initialized or initialization in progress.
-          Get the fork generation counter now.  */
-6:
-       mov.l   @r4, r1
-       mova    .Lgot, r0
-       mov.l   .Lgot, r12
-       add     r0, r12
-
-5:
-       mov     r1, r0
-
-       tst     #2, r0
-       bf      4f
-
-       and     #3, r0
-       mov.l   .Lfgen, r2
-#ifdef PIC
-       add     r12, r2
-#endif
-       mov.l   @r2, r3
-       or      r3, r0
-       or      #1, r0
-       mov     r0, r3
-       mov     r1, r5
-
-       CMPXCHG (r5, @r4, r3, r2)
-       bf      5b
-
-       /* Check whether another thread already runs the initializer.  */
-       mov     r2, r0
-       tst     #1, r0
-       bt      3f      /* No -> do it.  */
-
-       /* Check whether the initializer execution was interrupted
-          by a fork.  */
-       xor     r3, r0
-       mov     #-4, r1 /* -4 = 0xfffffffc */
-       tst     r1, r0
-       bf      3f      /* Different for generation -> run initializer.  */
-
-       /* Somebody else got here first.  Wait.  */
-#ifdef __ASSUME_PRIVATE_FUTEX
-       mov     #(FUTEX_PRIVATE_FLAG|FUTEX_WAIT), r5
-       extu.b  r5, r5
-#else
-       stc     gbr, r1
-       mov.w   .Lpfoff, r2
-       add     r2, r1
-       mov.l   @r1, r5
-# if FUTEX_WAIT != 0
-       mov     #FUTEX_WAIT, r0
-       or      r0, r5
-# endif
-#endif
-       mov     r3, r6
-       mov     #0, r7
-       mov     #SYS_futex, r3
-       extu.b  r3, r3
-       trapa   #0x14
-       SYSCALL_INST_PAD
-       bra     6b
-        nop
-
-       .align  2
-.Lgot:
-       .long   _GLOBAL_OFFSET_TABLE_
-#ifdef PIC
-.Lfgen:
-       .long   __fork_generation@GOTOFF
-#else
-.Lfgen:
-       .long   __fork_generation
-#endif
-
-3:
-       /* Call the initializer function after setting up the
-          cancellation handler.  Note that it is not possible here
-          to use the unwind-based cleanup handling.  This would require
-          that the user-provided function and all the code it calls
-          is compiled with exceptions.  Unfortunately this cannot be
-          guaranteed.  */
-       add     #-UNWINDBUFSIZE, r15
-       cfi_adjust_cfa_offset (UNWINDBUFSIZE)
-
-       mov.l   .Lsigsetjmp, r1
-       mov     #UWJMPBUF, r4
-       add     r15, r4
-       bsrf    r1
-        mov    #0, r5
-.Lsigsetjmp0:
-       tst     r0, r0
-       bf      7f
-
-       mov.l   .Lcpush, r1
-       bsrf    r1
-        mov    r15, r4
-.Lcpush0:
-
-       /* Call the user-provided initialization function.  */
-       jsr     @r8
-        nop
-
-       /* Pop the cleanup handler.  */
-       mov.l   .Lcpop, r1
-       bsrf    r1
-        mov    r15, r4
-.Lcpop0:
-
-       add     #UNWINDBUFSIZE, r15
-       cfi_adjust_cfa_offset (-UNWINDBUFSIZE)
-
-       /* Sucessful run of the initializer.  Signal that we are done.  */
-       INC (@r9, r2)
-       /* Wake up all other threads.  */
-       mov     r9, r4
-#ifdef __ASSUME_PRIVATE_FUTEX
-       mov     #(FUTEX_PRIVATE_FLAG|FUTEX_WAKE), r5
-       extu.b  r5, r5
-#else
-       stc     gbr, r1
-       mov.w   .Lpfoff, r2
-       add     r2, r1
-       mov.l   @r1, r5
-       mov     #FUTEX_WAKE, r0
-       or      r0, r5
-#endif
-       mov     #-1, r6
-       shlr    r6              /* r6 = 0x7fffffff */
-       mov     #0, r7
-       mov     #SYS_futex, r3
-       extu.b  r3, r3
-       trapa   #0x14
-       SYSCALL_INST_PAD
-
-4:
-       lds.l   @r15+, pr
-       cfi_adjust_cfa_offset (-4)
-       cfi_restore (pr)
-       mov.l   @r15+, r8
-       cfi_adjust_cfa_offset (-4)
-       cfi_restore (r8)
-       mov.l   @r15+, r9
-       cfi_adjust_cfa_offset (-4)
-       cfi_restore (r9)
-       mov.l   @r15+, r12
-       cfi_adjust_cfa_offset (-4)
-       cfi_restore (r12)
-       rts
-        mov    #0, r0
-
-7:
-       /* __sigsetjmp returned for the second time.  */
-       cfi_adjust_cfa_offset (UNWINDBUFSIZE+16)
-       cfi_offset (r12, -4)
-       cfi_offset (r9, -8)
-       cfi_offset (r8, -12)
-       cfi_offset (pr, -16)
-       mov     #0, r7
-       mov.l   r7, @r9
-       mov     r9, r4
-#ifdef __ASSUME_PRIVATE_FUTEX
-       mov     #(FUTEX_PRIVATE_FLAG|FUTEX_WAKE), r5
-#else
-       stc     gbr, r1
-       mov.w   .Lpfoff, r2
-       add     r2, r1
-       mov.l   @r1, r5
-       mov     #FUTEX_WAKE, r0
-       or      r0, r5
-#endif
-       extu.b  r5, r5
-       mov     #-1, r6
-       shlr    r6              /* r6 = 0x7fffffff */
-       mov     #SYS_futex, r3
-       extu.b  r3, r3
-       trapa   #0x14
-       SYSCALL_INST_PAD
-
-       mov.l   .Lunext, r1
-       bsrf    r1
-        mov    r15, r4
-.Lunext0:
-       /* NOTREACHED */
-       sleep
-       cfi_endproc
-
-#ifndef __ASSUME_PRIVATE_FUTEX
-.Lpfoff:
-       .word   PRIVATE_FUTEX - TLS_PRE_TCB_SIZE
-#endif
-       .align  2
-.Lsigsetjmp:
-       .long   __sigsetjmp@PLT-(.Lsigsetjmp0-.)
-.Lcpush:
-       .long   HIDDEN_JUMPTARGET(__pthread_register_cancel)-.Lcpush0
-.Lcpop:
-       .long   HIDDEN_JUMPTARGET(__pthread_unregister_cancel)-.Lcpop0
-.Lunext:
-       .long   HIDDEN_JUMPTARGET(__pthread_unwind_next)-.Lunext0
-       .size   __pthread_once,.-__pthread_once
-
-hidden_def (__pthread_once)
-strong_alias (__pthread_once, pthread_once)