mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-30 22:43:12 +03:00
007-03-20 Jakub Jelinek <jakub@redhat.com>
* 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.
This commit is contained in:
20
ChangeLog
20
ChangeLog
@ -1,3 +1,23 @@
|
|||||||
|
007-03-20 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
|
* 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 <jakub@redhat.com>
|
2007-03-26 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
[BZ #4276]
|
[BZ #4276]
|
||||||
|
@ -26,10 +26,9 @@
|
|||||||
#include <dl-machine.h>
|
#include <dl-machine.h>
|
||||||
#include <stdio-common/_itoa.h>
|
#include <stdio-common/_itoa.h>
|
||||||
|
|
||||||
/* 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. */
|
by _dl_sysdep_start via DL_PLATFORM_INIT. */
|
||||||
extern int __cache_line_size;
|
extern int __cache_line_size attribute_hidden;
|
||||||
weak_extern (__cache_line_size)
|
|
||||||
|
|
||||||
/* Because ld.so is now versioned, these functions can be in their own file;
|
/* Because ld.so is now versioned, these functions can be in their own file;
|
||||||
no relocations need to be done to call them.
|
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. */
|
/* Default minimum 4 words per cache line. */
|
||||||
int line_size_words = 4;
|
int line_size_words = 4;
|
||||||
|
|
||||||
/* Don't try this until ld.so has relocated itself! */
|
if (lazy && __cache_line_size != 0)
|
||||||
int *line_size_ptr = &__cache_line_size;
|
/* Convert bytes to words. */
|
||||||
if (lazy && line_size_ptr != NULL)
|
line_size_words = __cache_line_size / 4;
|
||||||
{
|
|
||||||
/* 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;
|
|
||||||
}
|
|
||||||
|
|
||||||
size_modified = lazy ? rel_offset_words : 6;
|
size_modified = lazy ? rel_offset_words : 6;
|
||||||
for (i = 0; i < size_modified; i += line_size_words)
|
for (i = 0; i < size_modified; i += line_size_words)
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Optimized memset implementation for PowerPC.
|
/* 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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -21,14 +21,6 @@
|
|||||||
#include <bp-sym.h>
|
#include <bp-sym.h>
|
||||||
#include <bp-asm.h>
|
#include <bp-asm.h>
|
||||||
|
|
||||||
/* 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]));
|
/* __ptr_t [r3] memset (__ptr_t s [r3], int c [r4], size_t n [r5]));
|
||||||
Returns 's'.
|
Returns 's'.
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/* Optimized memset implementation for PowerPC64.
|
/* 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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -21,12 +22,6 @@
|
|||||||
#include <bp-sym.h>
|
#include <bp-sym.h>
|
||||||
#include <bp-asm.h>
|
#include <bp-asm.h>
|
||||||
|
|
||||||
/* 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"
|
.section ".toc","aw"
|
||||||
.LC0:
|
.LC0:
|
||||||
.tc __cache_line_size[TC],__cache_line_size
|
.tc __cache_line_size[TC],__cache_line_size
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
/* Operating system support for run-time dynamic linker. Linux/PPC version.
|
/* 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.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -21,8 +22,7 @@
|
|||||||
#include <kernel-features.h>
|
#include <kernel-features.h>
|
||||||
#include <ldsodefs.h>
|
#include <ldsodefs.h>
|
||||||
|
|
||||||
extern int __cache_line_size;
|
int __cache_line_size attribute_hidden;
|
||||||
weak_extern (__cache_line_size)
|
|
||||||
|
|
||||||
/* Scan the Aux Vector for the "Data Cache Block Size" entry. If found
|
/* 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
|
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. */
|
value to __cache_line_size. */
|
||||||
#define DL_PLATFORM_AUXV \
|
#define DL_PLATFORM_AUXV \
|
||||||
case AT_DCACHEBSIZE: \
|
case AT_DCACHEBSIZE: \
|
||||||
{ \
|
__cache_line_size = av->a_un.a_val; \
|
||||||
int *cls = & __cache_line_size; \
|
break;
|
||||||
if (cls != NULL) \
|
|
||||||
*cls = av->a_un.a_val; \
|
|
||||||
} \
|
|
||||||
break;
|
|
||||||
|
|
||||||
#ifndef __ASSUME_STD_AUXV
|
#ifndef __ASSUME_STD_AUXV
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user