diff options
author | Ulrich Drepper <drepper@redhat.com> | 2004-03-20 06:16:26 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2004-03-20 06:16:26 +0000 |
commit | 07bd2a3fda47e7cfa83e808eb99a0da9d1184a30 (patch) | |
tree | a0e41495d990b736c8981a58677bc28175621728 /nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S | |
parent | 3abb1ff7d1c7a2941df3c6234ec71b40a3879baa (diff) |
Update.
2004-03-17 Kaz Kojima <kkojima@rr.iij4u.or.jp>
* sysdeps/unix/sysv/linux/kernel-features.h
(__ASSUME_CLONE_THREAD_FLAGS ): Define for newer SH kernel.
(__ASSUME_TGKILL, __ASSUME_UTIMES): Likewise.
* sysdeps/unix/sysv/linux/sh/socket.S: Add unwind information.
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S b/nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S index 8a55394c29..28f78b015e 100644 --- a/nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S +++ b/nptl/sysdeps/unix/sysv/linux/sh/sem_wait.S @@ -1,4 +1,4 @@ -/* Copyright (C) 2003 Free Software Foundation, Inc. +/* Copyright (C) 2003, 2004 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 @@ -33,6 +33,7 @@ .globl __new_sem_wait .type __new_sem_wait,@function .align 5 + cfi_startproc __new_sem_wait: /* First check for cancellation. */ stc gbr, r0 @@ -44,9 +45,17 @@ __new_sem_wait: bt 5f mov.l r8, @-r15 + cfi_adjust_cfa_offset(4) + cfi_rel_offset (r8, 0) mov.l r10, @-r15 + cfi_adjust_cfa_offset(4) + cfi_rel_offset (r10, 0) mov.l r12, @-r15 + cfi_adjust_cfa_offset(4) + cfi_rel_offset (r12, 0) sts.l pr, @-r15 + cfi_adjust_cfa_offset(4) + cfi_rel_offset (pr, 0) mov r4, r8 3: mov.l @r8, r0 @@ -57,12 +66,9 @@ __new_sem_wait: mov r0, r4 add #-1, r3 CMPXCHG (r4, @r8, r3, r2) - bf 2b - lds.l @r15+, pr - mov.l @r15+, r12 - mov.l @r15+, r10 - mov.l @r15+, r8 - rts + bf/s 2b + mov r2, r0 + bra 9f mov #0, r0 1: @@ -112,13 +118,21 @@ __new_sem_wait: .Lerrloc0b: mov.l r8, @r0 #endif + mov #-1, r0 +9: lds.l @r15+, pr + cfi_adjust_cfa_offset (-4) + cfi_restore (pr) mov.l @r15+, r12 + cfi_adjust_cfa_offset (-4) + cfi_restore (r12) mov.l @r15+, r10 - mov.l @r15+, r8 + cfi_adjust_cfa_offset (-4) + cfi_restore (r10) rts - mov #-1, r0 - + mov.l @r15+, r8 + cfi_adjust_cfa_offset (-4) + cfi_restore (r8) 5: /* Canceled. */ stc gbr, r0 @@ -132,6 +146,7 @@ __new_sem_wait: mov.l .Lunwind, r2 jmp @r2 mov.l @(r0,r1), r4 + cfi_endproc .Lchand: .word CANCELHANDLING - TLS_PRE_TCB_SIZE |