From c7693af7ef36972aa266030da26211db21fc82fb Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Mon, 26 Mar 2007 20:09:10 +0000 Subject: [PATCH] 007-03-20 Jakub Jelinek * sysdeps/unix/sysv/linux/powerpc/libc-start.c (__cache_line_size): Define the variable here. Add attribute_hidden, remove weak_extern. (__libc_start_main): Set __cache_line_size unconditionally. * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c (__cache_line_size): Define the variable here. Add attribute_hidden, remove weak_extern. (DL_PLATFORM_AUXV): Set __cache_line_size unconditionally. * sysdeps/powerpc/powerpc32/dl-machine.c (__cache_line_size): Remove weak_extern, add attribute_hidden. (__elf_machine_runtime_setup): Assume __cache_line_size is always defined in ld.so. * sysdeps/powerpc/powerpc32/memset.S (__cache_line_size): Remove definition. * sysdeps/powerpc/powerpc64/memset.S (__cache_line_size): Likewise. --- ChangeLog | 20 ++++++++++++++++++++ sysdeps/powerpc/powerpc32/dl-machine.c | 17 +++++------------ sysdeps/powerpc/powerpc32/memset.S | 10 +--------- sysdeps/powerpc/powerpc64/memset.S | 9 ++------- sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c | 14 +++++--------- 5 files changed, 33 insertions(+), 37 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9daefc35d2..1a5f369b2d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,23 @@ +007-03-20 Jakub Jelinek + + * sysdeps/unix/sysv/linux/powerpc/libc-start.c + (__cache_line_size): Define the variable here. Add + attribute_hidden, remove weak_extern. + (__libc_start_main): Set __cache_line_size + unconditionally. + * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c + (__cache_line_size): Define the variable here. Add + attribute_hidden, remove weak_extern. + (DL_PLATFORM_AUXV): Set __cache_line_size + unconditionally. + * sysdeps/powerpc/powerpc32/dl-machine.c (__cache_line_size): Remove + weak_extern, add attribute_hidden. + (__elf_machine_runtime_setup): Assume __cache_line_size is always + defined in ld.so. + * sysdeps/powerpc/powerpc32/memset.S (__cache_line_size): Remove + definition. + * sysdeps/powerpc/powerpc64/memset.S (__cache_line_size): Likewise. + 2007-03-26 Jakub Jelinek [BZ #4276] diff --git a/sysdeps/powerpc/powerpc32/dl-machine.c b/sysdeps/powerpc/powerpc32/dl-machine.c index fc460993b1..fc2ce7c1d9 100644 --- a/sysdeps/powerpc/powerpc32/dl-machine.c +++ b/sysdeps/powerpc/powerpc32/dl-machine.c @@ -26,10 +26,9 @@ #include #include -/* The value __cache_line_size is defined in memset.S and is initialised +/* The value __cache_line_size is defined in dl-sysdep.c and is initialised by _dl_sysdep_start via DL_PLATFORM_INIT. */ -extern int __cache_line_size; -weak_extern (__cache_line_size) +extern int __cache_line_size attribute_hidden; /* Because ld.so is now versioned, these functions can be in their own file; no relocations need to be done to call them. @@ -318,15 +317,9 @@ __elf_machine_runtime_setup (struct link_map *map, int lazy, int profile) /* Default minimum 4 words per cache line. */ int line_size_words = 4; - /* Don't try this until ld.so has relocated itself! */ - int *line_size_ptr = &__cache_line_size; - if (lazy && line_size_ptr != NULL) - { - /* Verify that __cache_line_size is defined and set. */ - if (*line_size_ptr != 0) - /* Convert bytes to words. */ - line_size_words = *line_size_ptr / 4; - } + if (lazy && __cache_line_size != 0) + /* Convert bytes to words. */ + line_size_words = __cache_line_size / 4; size_modified = lazy ? rel_offset_words : 6; for (i = 0; i < size_modified; i += line_size_words) diff --git a/sysdeps/powerpc/powerpc32/memset.S b/sysdeps/powerpc/powerpc32/memset.S index f09c294674..454abb2b65 100644 --- a/sysdeps/powerpc/powerpc32/memset.S +++ b/sysdeps/powerpc/powerpc32/memset.S @@ -1,5 +1,5 @@ /* Optimized memset implementation for PowerPC. - Copyright (C) 1997, 1999, 2000, 2003 Free Software Foundation, Inc. + Copyright (C) 1997, 1999, 2000, 2003, 2007 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 @@ -21,14 +21,6 @@ #include #include -/* Define a global static that can hold the cache line size. The - assumption is that startup code will access the "aux vector" to - to obtain the value set by the kernel and store it into this - variable. */ - - .globl __cache_line_size - .lcomm __cache_line_size,4,4 - /* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5])); Returns 's'. diff --git a/sysdeps/powerpc/powerpc64/memset.S b/sysdeps/powerpc/powerpc64/memset.S index 09c79fccd7..e0742ea73f 100644 --- a/sysdeps/powerpc/powerpc64/memset.S +++ b/sysdeps/powerpc/powerpc64/memset.S @@ -1,5 +1,6 @@ /* Optimized memset implementation for PowerPC64. - Copyright (C) 1997, 1999, 2000, 2002, 2003 Free Software Foundation, Inc. + Copyright (C) 1997, 1999, 2000, 2002, 2003, 2007 + 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 @@ -21,12 +22,6 @@ #include #include -/* Define a global static that can hold the cache line size. The - assumption is that startup code will access the "aux vector" to - to obtain the value set by the kernel and store it into this - variable. */ - .globl __cache_line_size - .lcomm __cache_line_size,4,4 .section ".toc","aw" .LC0: .tc __cache_line_size[TC],__cache_line_size diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c index 7c02c68985..9bb8ec3f61 100644 --- a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c +++ b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c @@ -1,5 +1,6 @@ /* Operating system support for run-time dynamic linker. Linux/PPC version. - Copyright (C) 1997, 1998, 2001, 2003, 2006 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 2001, 2003, 2006, 2007 + 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 @@ -21,8 +22,7 @@ #include #include -extern int __cache_line_size; -weak_extern (__cache_line_size) +int __cache_line_size attribute_hidden; /* Scan the Aux Vector for the "Data Cache Block Size" entry. If found verify that the static extern __cache_line_size is defined by checking @@ -30,12 +30,8 @@ weak_extern (__cache_line_size) value to __cache_line_size. */ #define DL_PLATFORM_AUXV \ case AT_DCACHEBSIZE: \ - { \ - int *cls = & __cache_line_size; \ - if (cls != NULL) \ - *cls = av->a_un.a_val; \ - } \ - break; + __cache_line_size = av->a_un.a_val; \ + break; #ifndef __ASSUME_STD_AUXV -- 2.43.5