summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/powerpc/bits
diff options
context:
space:
mode:
authorAdhemerval Zanella <azanella@linux.vnet.ibm.com>2013-03-15 10:58:56 -0300
committerAdhemerval Zanella <azanella@linux.vnet.ibm.com>2013-03-15 10:58:56 -0300
commitef26eece6331a1f6d959818e37c438cc7ce68e53 (patch)
tree4c7afee3a37857c9e8a92d801bf1b630c433dad6 /sysdeps/unix/sysv/linux/powerpc/bits
parent8cfdb7e0560ab27e70a1d2e898fb4a0a67a13c70 (diff)
downloadglibc-ef26eece6331a1f6d959818e37c438cc7ce68e53.tar.gz
glibc-ef26eece6331a1f6d959818e37c438cc7ce68e53.tar.xz
glibc-ef26eece6331a1f6d959818e37c438cc7ce68e53.zip
PowerPC: gettimeofday optimization by using IFUNC
Diffstat (limited to 'sysdeps/unix/sysv/linux/powerpc/bits')
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h b/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h
index 545fda462a..5f5fc1eb3a 100644
--- a/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h
+++ b/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h
@@ -32,6 +32,16 @@ extern void *__vdso_get_tbfreq;
 
 extern void *__vdso_getcpu;
 
+/* This macro is needed for PPC64 to return a skeleton OPD entry of a vDSO
+   symbol.  This works because _dl_vdso_vsym always return the function
+   address, and no vDSO symbols use the TOC or chain pointers from the OPD
+   so we can allow them to be garbage.  */
+#if defined(__PPC64__) || defined(__powerpc64__)
+#define VDSO_IFUNC_RET(value)  &value
+#else
+#define VDSO_IFUNC_RET(value)  value
+#endif
+
 #endif
 
 #endif /* _LIBC_VDSO_H */