summaryrefslogtreecommitdiff
path: root/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
diff options
context:
space:
mode:
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S')
-rw-r--r--nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S40
1 files changed, 35 insertions, 5 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S b/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
index 7bd93553d3..fc1791b51f 100644
--- a/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
+++ b/nptl/sysdeps/unix/sysv/linux/sh/pthread_cond_broadcast.S
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2004, 2006, 2007 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,20 @@
.globl __pthread_cond_broadcast
.type __pthread_cond_broadcast, @function
.align 5
+ cfi_startproc
__pthread_cond_broadcast:
mov.l r10, @-r15
+ cfi_adjust_cfa_offset (4)
+ cfi_rel_offset (r10, 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 r4, r8
/* Get internal lock. */
@@ -136,12 +145,22 @@ __pthread_cond_broadcast:
add #cond_futex, r4
10:
- mov #0, r0
+ cfi_remember_state
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+, r10
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (r10)
rts
- mov.l @r15+, r10
+ mov #0, r0
+ cfi_restore_state
4:
/* Unlock. */
@@ -153,12 +172,22 @@ __pthread_cond_broadcast:
tst r2, r2
bf 5f
6:
- mov #0, r0
+ cfi_remember_state
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+, r10
+ cfi_adjust_cfa_offset (-4)
+ cfi_restore (r10)
rts
- mov.l @r15+, r10
+ mov #0, r0
+ cfi_restore_state
1:
/* Initial locking failed. */
@@ -244,6 +273,7 @@ __pthread_cond_broadcast:
SYSCALL_INST_PAD
bra 10b
nop
+ cfi_endproc
#ifndef __ASSUME_PRIVATE_FUTEX
.Lpfoff: