From b2bcd249bf2ada6ad1212c91e4a152b5366b6fd8 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sat, 3 Jan 2009 20:36:44 +0000 Subject: [PATCH] * sysdeps/unix/sysv/linux/i386/sysdep.h: Describe 6th argument handling. --- ChangeLog | 5 +++++ nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S | 4 ++-- sysdeps/unix/sysv/linux/i386/sysdep.h | 4 +++- 3 files changed, 10 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9bc0afced4..c553c8102d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2009-01-03 Ulrich Drepper + + * sysdeps/unix/sysv/linux/i386/sysdep.h: Describe 6th argument + handling. + 2009-01-02 Ulrich Drepper * sysdeps/unix/sysv/linux/kernel-features.h diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S index 72c3858238..8de9cf461a 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S @@ -170,8 +170,8 @@ __lll_timedlock_wait: # endif pushq %r9 - cfi_adjust_cfa_offset(9) - cfi_offset(%r9, -16) + cfi_adjust_cfa_offset(8) + cfi_rel_offset(%r9, 0) movq %rdx, %r10 movl $0xffffffff, %r9d LOAD_FUTEX_WAIT_ABS (%esi) diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h index 89d5b12043..77e6bad105 100644 --- a/sysdeps/unix/sysv/linux/i386/sysdep.h +++ b/sysdeps/unix/sysv/linux/i386/sysdep.h @@ -204,9 +204,11 @@ arg 3 %edx call-clobbered arg 4 %esi call-saved arg 5 %edi call-saved + arg 6 %ebp call-saved The stack layout upon entering the function is: + 24(%esp) Arg# 6 20(%esp) Arg# 5 16(%esp) Arg# 4 12(%esp) Arg# 3 @@ -215,7 +217,7 @@ (%esp) Return address (Of course a function with say 3 arguments does not have entries for - arguments 4 and 5.) + arguments 4, 5, and 6.) The following code tries hard to be optimal. A general assumption (which is true according to the data books I have) is that