diff options
author | Dinakar Guniguntala <dino@in.ibm.com> | 2009-11-18 06:33:23 -0800 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2009-11-18 06:33:23 -0800 |
commit | dd7106b3c68328f7d4b3794e989e86cb0b0d6461 (patch) | |
tree | 841222369461ac7b92633e45a107b3290704712c /nptl/sysdeps/unix/sysv/linux/i386 | |
parent | 7429b1970e8736cdbaab796be3bb891ac2d2b307 (diff) | |
download | glibc-dd7106b3c68328f7d4b3794e989e86cb0b0d6461.tar.gz glibc-dd7106b3c68328f7d4b3794e989e86cb0b0d6461.tar.xz glibc-dd7106b3c68328f7d4b3794e989e86cb0b0d6461.zip |
Update cfi offsets for pthread_cond_broadcast and signal fir x86.
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/i386')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S | 41 | ||||
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S | 13 |
2 files changed, 16 insertions, 38 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S index f46b4b874a..1a55e522d3 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S @@ -35,16 +35,17 @@ __pthread_cond_broadcast: cfi_startproc pushl %ebx cfi_adjust_cfa_offset(4) + cfi_rel_offset(%ebx, 0) pushl %esi cfi_adjust_cfa_offset(4) + cfi_rel_offset(%esi, 0) pushl %edi cfi_adjust_cfa_offset(4) + cfi_rel_offset(%edi, 0) pushl %ebp cfi_adjust_cfa_offset(4) - cfi_offset(%ebx, -8) - cfi_offset(%esi, -12) - cfi_offset(%edi, -16) - cfi_offset(%ebp, -20) + cfi_rel_offset(%ebp, 0) + cfi_remember_state movl 20(%esp), %ebx @@ -120,7 +121,7 @@ __pthread_cond_broadcast: cmpl $0xfffff001, %eax jae 9f -10: xorl %eax, %eax +6: xorl %eax, %eax popl %ebp cfi_adjust_cfa_offset(-4) cfi_restore(%ebp) @@ -135,37 +136,15 @@ __pthread_cond_broadcast: cfi_restore(%ebx) ret - cfi_adjust_cfa_offset(16) - cfi_offset(%ebx, -8) - cfi_offset(%esi, -12) - cfi_offset(%edi, -16) - cfi_offset(%ebp, -20) + cfi_restore_state + .align 16 /* Unlock. */ 4: LOCK subl $1, cond_lock-cond_futex(%ebx) jne 5f + jmp 6b -6: xorl %eax, %eax - popl %ebp - cfi_adjust_cfa_offset(-4) - cfi_restore(%ebp) - popl %edi - cfi_adjust_cfa_offset(-4) - cfi_restore(%edi) - popl %esi - cfi_adjust_cfa_offset(-4) - cfi_restore(%esi) - popl %ebx - cfi_adjust_cfa_offset(-4) - cfi_restore(%ebx) - ret - - cfi_adjust_cfa_offset(16) - cfi_offset(%ebx, -8) - cfi_offset(%esi, -12) - cfi_offset(%edi, -16) - cfi_offset(%ebp, -20) /* Initial locking failed. */ 1: #if cond_lock == 0 @@ -232,7 +211,7 @@ __pthread_cond_broadcast: addl $FUTEX_WAKE, %ecx movl $SYS_futex, %eax ENTER_KERNEL - jmp 10b + jmp 6b cfi_endproc .size __pthread_cond_broadcast, .-__pthread_cond_broadcast versioned_symbol (libpthread, __pthread_cond_broadcast, pthread_cond_broadcast, diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S index 4909f49107..ad42fb7c75 100644 --- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S +++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S @@ -36,10 +36,11 @@ __pthread_cond_signal: cfi_startproc pushl %ebx cfi_adjust_cfa_offset(4) + cfi_rel_offset(%ebx, 0) pushl %edi cfi_adjust_cfa_offset(4) - cfi_offset(%ebx, -8) - cfi_offset(%edi, -12) + cfi_rel_offset(%edi, 0) + cfi_remember_state movl 12(%esp), %edi @@ -75,10 +76,10 @@ __pthread_cond_signal: /* Wake up one thread. */ pushl %esi cfi_adjust_cfa_offset(4) + cfi_rel_offset(%esi, 0) pushl %ebp cfi_adjust_cfa_offset(4) - cfi_offset(%esi, -16) - cfi_offset(%ebp, -20) + cfi_rel_offset(%ebp, 0) #if FUTEX_PRIVATE_FLAG > 255 xorl %ecx, %ecx @@ -121,9 +122,7 @@ __pthread_cond_signal: cfi_restore(%ebx) ret - cfi_adjust_cfa_offset(8) - cfi_offset(%ebx, -8) - cfi_offset(%edi, -12) + cfi_restore_state 7: /* %ecx should be either FUTEX_WAKE_OP or FUTEX_WAKE_OP|FUTEX_PRIVATE_FLAG from the previous syscall. */ |