mirror of
git://sourceware.org/git/glibc.git
synced 2025-01-18 12:16:13 +08:00
* sysdeps/unix/sysv/linux/arm/dl-procinfo.c (_dl_arm_cap_flags):
Add "java" and "iwmmxt". * sysdeps/unix/sysv/linux/arm/dl-procinfo.h: Use <sysdep.h> for HWCAP values. (_DL_HWCAP_COUNT): Increase to 10. * sysdeps/unix/sysv/linux/arm/sysdep.h (HWCAP_ARM_SWP, HWCAP_ARM_HALF, HWCAP_ARM_THUMB, HWCAP_ARM_26BIT, HWCAP_ARM_FAST_MULT, HWCAP_ARM_FPA, HWCAP_ARM_VFP, HWCAP_ARM_EDSP, HWCAP_ARM_JAVA, HWCAP_ARM_IWMMXT): Define. * sysdeps/arm/eabi/setjmp.S (__sigsetjmp): Save iWMMXt registers if HWCAP_ARM_IWMMXT set. Don't include <asm/procinfo.h>. Use HWCAP_ARM_VFP instead of HWCAP_VFP. * sysdeps/arm/eabi/__longjmp.S (__longjmp): Restore iWMMXt registers if HWCAP_ARM_IWMMXT set. Don't include <asm/procinfo.h>. Use HWCAP_ARM_VFP instead of HWCAP_VFP.
This commit is contained in:
parent
56865130d0
commit
4b860fb9c0
@ -1,3 +1,21 @@
|
|||||||
|
2006-09-21 Joseph Myers <joseph@codesourcery.com>
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/arm/dl-procinfo.c (_dl_arm_cap_flags):
|
||||||
|
Add "java" and "iwmmxt".
|
||||||
|
* sysdeps/unix/sysv/linux/arm/dl-procinfo.h: Use <sysdep.h> for
|
||||||
|
HWCAP values.
|
||||||
|
(_DL_HWCAP_COUNT): Increase to 10.
|
||||||
|
* sysdeps/unix/sysv/linux/arm/sysdep.h (HWCAP_ARM_SWP,
|
||||||
|
HWCAP_ARM_HALF, HWCAP_ARM_THUMB, HWCAP_ARM_26BIT,
|
||||||
|
HWCAP_ARM_FAST_MULT, HWCAP_ARM_FPA, HWCAP_ARM_VFP, HWCAP_ARM_EDSP,
|
||||||
|
HWCAP_ARM_JAVA, HWCAP_ARM_IWMMXT): Define.
|
||||||
|
* sysdeps/arm/eabi/setjmp.S (__sigsetjmp): Save iWMMXt registers
|
||||||
|
if HWCAP_ARM_IWMMXT set. Don't include <asm/procinfo.h>. Use
|
||||||
|
HWCAP_ARM_VFP instead of HWCAP_VFP.
|
||||||
|
* sysdeps/arm/eabi/__longjmp.S (__longjmp): Restore iWMMXt
|
||||||
|
registers if HWCAP_ARM_IWMMXT set. Don't include
|
||||||
|
<asm/procinfo.h>. Use HWCAP_ARM_VFP instead of HWCAP_VFP.
|
||||||
|
|
||||||
2006-09-21 Daniel Jacobowitz <dan@codesourcery.com>
|
2006-09-21 Daniel Jacobowitz <dan@codesourcery.com>
|
||||||
|
|
||||||
* sysdeps/arm/dl-machine.h (elf_machine_rel): Handle undefined
|
* sysdeps/arm/dl-machine.h (elf_machine_rel): Handle undefined
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* longjmp for ARM.
|
/* longjmp for ARM.
|
||||||
Copyright (C) 1997, 1998, 2005 Free Software Foundation, Inc.
|
Copyright (C) 1997, 1998, 2005, 2006 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 +21,6 @@
|
|||||||
#define _SETJMP_H
|
#define _SETJMP_H
|
||||||
#define _ASM
|
#define _ASM
|
||||||
#include <bits/setjmp.h>
|
#include <bits/setjmp.h>
|
||||||
#define __ASSEMBLY__
|
|
||||||
#include <asm/procinfo.h>
|
|
||||||
#include <rtld-global-offsets.h>
|
#include <rtld-global-offsets.h>
|
||||||
|
|
||||||
/* __longjmp(jmpbuf, val) */
|
/* __longjmp(jmpbuf, val) */
|
||||||
@ -53,7 +51,7 @@ ENTRY (__longjmp)
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
tst a2, #HWCAP_VFP
|
tst a2, #HWCAP_ARM_VFP
|
||||||
beq Lno_vfp
|
beq Lno_vfp
|
||||||
|
|
||||||
/* Restore the VFP registers. */
|
/* Restore the VFP registers. */
|
||||||
@ -65,6 +63,19 @@ ENTRY (__longjmp)
|
|||||||
mcr p10, 7, r1, cr1, cr0, 0
|
mcr p10, 7, r1, cr1, cr0, 0
|
||||||
Lno_vfp:
|
Lno_vfp:
|
||||||
|
|
||||||
|
tst a2, #HWCAP_ARM_IWMMXT
|
||||||
|
beq Lno_iwmmxt
|
||||||
|
|
||||||
|
/* Restore the call-preserved iWMMXt registers. */
|
||||||
|
/* Following instructions are wldrd wr10, [ip], #8 (etc.) */
|
||||||
|
ldcl p1, cr10, [r12], #8
|
||||||
|
ldcl p1, cr11, [r12], #8
|
||||||
|
ldcl p1, cr12, [r12], #8
|
||||||
|
ldcl p1, cr13, [r12], #8
|
||||||
|
ldcl p1, cr14, [r12], #8
|
||||||
|
ldcl p1, cr15, [r12], #8
|
||||||
|
Lno_iwmmxt:
|
||||||
|
|
||||||
DO_RET(lr)
|
DO_RET(lr)
|
||||||
|
|
||||||
#ifdef IS_IN_rtld
|
#ifdef IS_IN_rtld
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* setjmp for ARM.
|
/* setjmp for ARM.
|
||||||
Copyright (C) 1997, 1998, 2005 Free Software Foundation, Inc.
|
Copyright (C) 1997, 1998, 2005, 2006 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 +21,6 @@
|
|||||||
#define _SETJMP_H
|
#define _SETJMP_H
|
||||||
#define _ASM
|
#define _ASM
|
||||||
#include <bits/setjmp.h>
|
#include <bits/setjmp.h>
|
||||||
#define __ASSEMBLY__
|
|
||||||
#include <asm/procinfo.h>
|
|
||||||
#include <rtld-global-offsets.h>
|
#include <rtld-global-offsets.h>
|
||||||
|
|
||||||
ENTRY (__sigsetjmp)
|
ENTRY (__sigsetjmp)
|
||||||
@ -51,7 +49,7 @@ ENTRY (__sigsetjmp)
|
|||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
tst a3, #HWCAP_VFP
|
tst a3, #HWCAP_ARM_VFP
|
||||||
beq Lno_vfp
|
beq Lno_vfp
|
||||||
|
|
||||||
/* Store the VFP registers. */
|
/* Store the VFP registers. */
|
||||||
@ -63,6 +61,19 @@ ENTRY (__sigsetjmp)
|
|||||||
str r2, [ip], #4
|
str r2, [ip], #4
|
||||||
Lno_vfp:
|
Lno_vfp:
|
||||||
|
|
||||||
|
tst a3, #HWCAP_ARM_IWMMXT
|
||||||
|
beq Lno_iwmmxt
|
||||||
|
|
||||||
|
/* Save the call-preserved iWMMXt registers. */
|
||||||
|
/* Following instructions are wstrd wr10, [ip], #8 (etc.) */
|
||||||
|
stcl p1, cr10, [r12], #8
|
||||||
|
stcl p1, cr11, [r12], #8
|
||||||
|
stcl p1, cr12, [r12], #8
|
||||||
|
stcl p1, cr13, [r12], #8
|
||||||
|
stcl p1, cr14, [r12], #8
|
||||||
|
stcl p1, cr15, [r12], #8
|
||||||
|
Lno_iwmmxt:
|
||||||
|
|
||||||
/* Make a tail call to __sigjmp_save; it takes the same args. */
|
/* Make a tail call to __sigjmp_save; it takes the same args. */
|
||||||
B PLTJMP(C_SYMBOL_NAME(__sigjmp_save))
|
B PLTJMP(C_SYMBOL_NAME(__sigjmp_save))
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Data for Linux/ARM version of processor capability information.
|
/* Data for Linux/ARM version of processor capability information.
|
||||||
Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
|
Copyright (C) 2001, 2002, 2003, 2006 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Philip Blundell <philb@gnu.org>, 2001.
|
Contributed by Philip Blundell <philb@gnu.org>, 2001.
|
||||||
|
|
||||||
@ -47,11 +47,12 @@
|
|||||||
#if !defined PROCINFO_DECL && defined SHARED
|
#if !defined PROCINFO_DECL && defined SHARED
|
||||||
._dl_arm_cap_flags
|
._dl_arm_cap_flags
|
||||||
#else
|
#else
|
||||||
PROCINFO_CLASS const char _dl_arm_cap_flags[8][10]
|
PROCINFO_CLASS const char _dl_arm_cap_flags[10][10]
|
||||||
#endif
|
#endif
|
||||||
#ifndef PROCINFO_DECL
|
#ifndef PROCINFO_DECL
|
||||||
= {
|
= {
|
||||||
"swp", "half", "thumb", "26bit", "fast-mult", "fpa", "vfp", "edsp",
|
"swp", "half", "thumb", "26bit", "fast-mult", "fpa", "vfp", "edsp",
|
||||||
|
"java", "iwmmxt",
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if !defined SHARED || defined PROCINFO_DECL
|
#if !defined SHARED || defined PROCINFO_DECL
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Linux/ARM version of processor capability information handling macros.
|
/* Linux/ARM version of processor capability information handling macros.
|
||||||
Copyright (C) 2001, 2002, 2004 Free Software Foundation, Inc.
|
Copyright (C) 2001, 2002, 2004, 2006 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Philip Blundell <philb@gnu.org>, 2001.
|
Contributed by Philip Blundell <philb@gnu.org>, 2001.
|
||||||
|
|
||||||
@ -22,8 +22,9 @@
|
|||||||
#define _DL_PROCINFO_H 1
|
#define _DL_PROCINFO_H 1
|
||||||
|
|
||||||
#include <ldsodefs.h>
|
#include <ldsodefs.h>
|
||||||
|
#include <sysdep.h>
|
||||||
|
|
||||||
#define _DL_HWCAP_COUNT 8
|
#define _DL_HWCAP_COUNT 10
|
||||||
|
|
||||||
/* The kernel provides platform data but it is not interesting. */
|
/* The kernel provides platform data but it is not interesting. */
|
||||||
#define _DL_HWCAP_PLATFORM 0
|
#define _DL_HWCAP_PLATFORM 0
|
||||||
@ -53,19 +54,7 @@ _dl_hwcap_string (int idx)
|
|||||||
return GLRO(dl_arm_cap_flags)[idx];
|
return GLRO(dl_arm_cap_flags)[idx];
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
#define HWCAP_IMPORTANT (HWCAP_ARM_HALF | HWCAP_ARM_FAST_MULT)
|
||||||
{
|
|
||||||
HWCAP_ARM_SWP = 1 << 0,
|
|
||||||
HWCAP_ARM_HALF = 1 << 1,
|
|
||||||
HWCAP_ARM_THUMB = 1 << 2,
|
|
||||||
HWCAP_ARM_26BIT = 1 << 3,
|
|
||||||
HWCAP_ARM_FAST_MULT = 1 << 4,
|
|
||||||
HWCAP_ARM_FPA = 1 << 5,
|
|
||||||
HWCAP_ARM_VFP = 1 << 6,
|
|
||||||
HWCAP_ARM_EDSP = 1 << 7,
|
|
||||||
|
|
||||||
HWCAP_IMPORTANT = (HWCAP_ARM_HALF | HWCAP_ARM_FAST_MULT)
|
|
||||||
};
|
|
||||||
|
|
||||||
static inline int
|
static inline int
|
||||||
__attribute__ ((unused))
|
__attribute__ ((unused))
|
||||||
|
@ -37,6 +37,18 @@
|
|||||||
#define SYS_ify(syscall_name) (__NR_##syscall_name)
|
#define SYS_ify(syscall_name) (__NR_##syscall_name)
|
||||||
|
|
||||||
|
|
||||||
|
/* The following must match the kernel's <asm/procinfo.h>. */
|
||||||
|
#define HWCAP_ARM_SWP 1
|
||||||
|
#define HWCAP_ARM_HALF 2
|
||||||
|
#define HWCAP_ARM_THUMB 4
|
||||||
|
#define HWCAP_ARM_26BIT 8
|
||||||
|
#define HWCAP_ARM_FAST_MULT 16
|
||||||
|
#define HWCAP_ARM_FPA 32
|
||||||
|
#define HWCAP_ARM_VFP 64
|
||||||
|
#define HWCAP_ARM_EDSP 128
|
||||||
|
#define HWCAP_ARM_JAVA 256
|
||||||
|
#define HWCAP_ARM_IWMMXT 512
|
||||||
|
|
||||||
#ifdef __ASSEMBLER__
|
#ifdef __ASSEMBLER__
|
||||||
|
|
||||||
/* Linux uses a negative return value to indicate syscall errors,
|
/* Linux uses a negative return value to indicate syscall errors,
|
||||||
|
Loading…
Reference in New Issue
Block a user