mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-29 04:33:36 +08:00
Remove gettimeofday vsyscall use from x86-86 libpthread
This commit is contained in:
parent
e38ba7ab6a
commit
9e5c9dcd57
@ -2,6 +2,14 @@
|
||||
|
||||
* sysdeps/unix/sysv/linux/x86_64/sem_timedwait.S (sem_timedwait): Don't
|
||||
use gettimeofday vsyscall, just call gettimeofday.
|
||||
* sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/x86_64/lowlevelrobustlock.S: Likewise.
|
||||
* sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedrdlock.S:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/x86_64/pthread_rwlock_timedwrlock.S:
|
||||
Likewise.
|
||||
* sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
|
||||
Simplify __vdso_clock_gettime use.
|
||||
|
||||
2011-09-05 David S. Miller <davem@davemloft.net>
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2002-2006, 2007, 2009, 2010 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2002-2007, 2009, 2010, 2011 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
|
||||
|
||||
@ -68,10 +68,6 @@
|
||||
#endif
|
||||
|
||||
|
||||
/* For the calculation see asm/vsyscall.h. */
|
||||
#define VSYSCALL_ADDR_vgettimeofday 0xffffffffff600000
|
||||
|
||||
|
||||
.globl __lll_lock_wait_private
|
||||
.type __lll_lock_wait_private,@function
|
||||
.hidden __lll_lock_wait_private
|
||||
@ -250,10 +246,9 @@ __lll_timedlock_wait:
|
||||
/* Get current time. */
|
||||
movq %rsp, %rdi
|
||||
xorl %esi, %esi
|
||||
movq $VSYSCALL_ADDR_vgettimeofday, %rax
|
||||
/* This is a regular function call, all caller-save registers
|
||||
might be clobbered. */
|
||||
callq *%rax
|
||||
/* This call works because we directly jump to a system call entry
|
||||
which preserves all the registers. */
|
||||
call JUMPTARGET(__gettimeofday)
|
||||
|
||||
/* Compute relative timeout. */
|
||||
movq 8(%rsp), %rax
|
||||
@ -402,8 +397,9 @@ __lll_timedwait_tid:
|
||||
/* Get current time. */
|
||||
2: movq %rsp, %rdi
|
||||
xorl %esi, %esi
|
||||
movq $VSYSCALL_ADDR_vgettimeofday, %rax
|
||||
callq *%rax
|
||||
/* This call works because we directly jump to a system call entry
|
||||
which preserves all the registers. */
|
||||
call JUMPTARGET(__gettimeofday)
|
||||
|
||||
/* Compute relative timeout. */
|
||||
movq 8(%rsp), %rax
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2002=2007, 2009, 2010 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2002, 2011=2007, 2009, 2010 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
|
||||
|
||||
@ -50,9 +50,6 @@
|
||||
orl $FUTEX_WAIT_BITSET | FUTEX_CLOCK_REALTIME, reg
|
||||
#endif
|
||||
|
||||
/* For the calculation see asm/vsyscall.h. */
|
||||
#define VSYSCALL_ADDR_vgettimeofday 0xffffffffff600000
|
||||
|
||||
|
||||
.globl __lll_robust_lock_wait
|
||||
.type __lll_robust_lock_wait,@function
|
||||
@ -219,10 +216,9 @@ __lll_robust_timedlock_wait:
|
||||
/* Get current time. */
|
||||
movq %rsp, %rdi
|
||||
xorl %esi, %esi
|
||||
movq $VSYSCALL_ADDR_vgettimeofday, %rax
|
||||
/* This is a regular function call, all caller-save registers
|
||||
might be clobbered. */
|
||||
callq *%rax
|
||||
/* This call works because we directly jump to a system call entry
|
||||
which preserves all the registers. */
|
||||
call JUMPTARGET(__gettimeofday)
|
||||
|
||||
/* Compute relative timeout. */
|
||||
movq 8(%rsp), %rax
|
||||
|
@ -26,9 +26,6 @@
|
||||
|
||||
#include <kernel-features.h>
|
||||
|
||||
/* For the calculation see asm/vsyscall.h. */
|
||||
#define VSYSCALL_ADDR_vgettimeofday 0xffffffffff600000
|
||||
|
||||
|
||||
.text
|
||||
|
||||
@ -453,13 +450,11 @@ __pthread_cond_timedwait:
|
||||
movq __vdso_clock_gettime@GOTPCREL(%rip), %rax
|
||||
movq (%rax), %rax
|
||||
PTR_DEMANGLE (%rax)
|
||||
jz 26f
|
||||
call *%rax
|
||||
jmp 27f
|
||||
# endif
|
||||
26: movl $__NR_clock_gettime, %eax
|
||||
# else
|
||||
movl $__NR_clock_gettime, %eax
|
||||
syscall
|
||||
27:
|
||||
# endif
|
||||
# ifndef __ASSUME_POSIX_TIMERS
|
||||
cmpq $-ENOSYS, %rax
|
||||
je 19f
|
||||
@ -473,8 +468,9 @@ __pthread_cond_timedwait:
|
||||
# else
|
||||
leaq 24(%rsp), %rdi
|
||||
xorl %esi, %esi
|
||||
movq $VSYSCALL_ADDR_vgettimeofday, %rax
|
||||
callq *%rax
|
||||
/* This call works because we directly jump to a system call entry
|
||||
which preserves all the registers. */
|
||||
call JUMPTARGET(__gettimeofday)
|
||||
|
||||
/* Compute relative timeout. */
|
||||
movq 40(%rsp), %rax
|
||||
@ -611,8 +607,9 @@ __pthread_cond_timedwait:
|
||||
/* clock_gettime not available. */
|
||||
19: leaq 32(%rsp), %rdi
|
||||
xorl %esi, %esi
|
||||
movq $VSYSCALL_ADDR_vgettimeofday, %rax
|
||||
callq *%rax
|
||||
/* This call works because we directly jump to a system call entry
|
||||
which preserves all the registers. */
|
||||
call JUMPTARGET(__gettimeofday)
|
||||
|
||||
/* Compute relative timeout. */
|
||||
movq 40(%rsp), %rax
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 2002-2005, 2007, 2009, 2010 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2002-2005,2007,2009,2010,2011 Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
|
||||
|
||||
@ -23,10 +23,6 @@
|
||||
#include <pthread-errnos.h>
|
||||
#include <kernel-features.h>
|
||||
|
||||
|
||||
/* For the calculation see asm/vsyscall.h. */
|
||||
#define VSYSCALL_ADDR_vgettimeofday 0xffffffffff600000
|
||||
|
||||
.text
|
||||
|
||||
.globl pthread_rwlock_timedrdlock
|
||||
@ -123,8 +119,9 @@ pthread_rwlock_timedrdlock:
|
||||
/* Get current time. */
|
||||
movq %rsp, %rdi
|
||||
xorl %esi, %esi
|
||||
movq $VSYSCALL_ADDR_vgettimeofday, %rax
|
||||
callq *%rax
|
||||
/* This call works because we directly jump to a system call entry
|
||||
which preserves all the registers. */
|
||||
call JUMPTARGET(__gettimeofday)
|
||||
|
||||
/* Compute relative timeout. */
|
||||
movq 8(%rsp), %rax
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* Copyright (C) 2002, 2003, 2005, 2007, 2009, 2010 Free Software Foundation, Inc.
|
||||
/* Copyright (C) 2002, 2003, 2005, 2007, 2009, 2010, 2011
|
||||
Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
|
||||
|
||||
@ -23,10 +24,6 @@
|
||||
#include <pthread-errnos.h>
|
||||
#include <kernel-features.h>
|
||||
|
||||
|
||||
/* For the calculation see asm/vsyscall.h. */
|
||||
#define VSYSCALL_ADDR_vgettimeofday 0xffffffffff600000
|
||||
|
||||
.text
|
||||
|
||||
.globl pthread_rwlock_timedwrlock
|
||||
@ -120,8 +117,9 @@ pthread_rwlock_timedwrlock:
|
||||
/* Get current time. */
|
||||
movq %rsp, %rdi
|
||||
xorl %esi, %esi
|
||||
movq $VSYSCALL_ADDR_vgettimeofday, %rax
|
||||
callq *%rax
|
||||
/* This call works because we directly jump to a system call entry
|
||||
which preserves all the registers. */
|
||||
call JUMPTARGET(__gettimeofday)
|
||||
|
||||
/* Compute relative timeout. */
|
||||
movq 8(%rsp), %rax
|
||||
|
Loading…
Reference in New Issue
Block a user