2024-01-01 18:12:26 +00:00
|
|
|
/* Copyright (C) 1999-2024 Free Software Foundation, Inc.
|
1999-10-10 20:36:40 +00:00
|
|
|
This file is part of the GNU C Library.
|
|
|
|
|
|
|
|
The GNU C Library is free software; you can redistribute it and/or
|
2001-07-06 04:58:11 +00:00
|
|
|
modify it under the terms of the GNU Lesser General Public
|
|
|
|
License as published by the Free Software Foundation; either
|
|
|
|
version 2.1 of the License, or (at your option) any later version.
|
1999-10-10 20:36:40 +00:00
|
|
|
|
|
|
|
The GNU C Library is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
2001-07-06 04:58:11 +00:00
|
|
|
Lesser General Public License for more details.
|
1999-10-10 20:36:40 +00:00
|
|
|
|
2001-07-06 04:58:11 +00:00
|
|
|
You should have received a copy of the GNU Lesser General Public
|
2012-02-09 23:18:22 +00:00
|
|
|
License along with the GNU C Library; if not, see
|
Prefer https to http for gnu.org and fsf.org URLs
Also, change sources.redhat.com to sourceware.org.
This patch was automatically generated by running the following shell
script, which uses GNU sed, and which avoids modifying files imported
from upstream:
sed -ri '
s,(http|ftp)(://(.*\.)?(gnu|fsf|sourceware)\.org($|[^.]|\.[^a-z])),https\2,g
s,(http|ftp)(://(.*\.)?)sources\.redhat\.com($|[^.]|\.[^a-z]),https\2sourceware.org\4,g
' \
$(find $(git ls-files) -prune -type f \
! -name '*.po' \
! -name 'ChangeLog*' \
! -path COPYING ! -path COPYING.LIB \
! -path manual/fdl-1.3.texi ! -path manual/lgpl-2.1.texi \
! -path manual/texinfo.tex ! -path scripts/config.guess \
! -path scripts/config.sub ! -path scripts/install-sh \
! -path scripts/mkinstalldirs ! -path scripts/move-if-change \
! -path INSTALL ! -path locale/programs/charmap-kw.h \
! -path po/libc.pot ! -path sysdeps/gnu/errlist.c \
! '(' -name configure \
-execdir test -f configure.ac -o -f configure.in ';' ')' \
! '(' -name preconfigure \
-execdir test -f preconfigure.ac ';' ')' \
-print)
and then by running 'make dist-prepare' to regenerate files built
from the altered files, and then executing the following to cleanup:
chmod a+x sysdeps/unix/sysv/linux/riscv/configure
# Omit irrelevant whitespace and comment-only changes,
# perhaps from a slightly-different Autoconf version.
git checkout -f \
sysdeps/csky/configure \
sysdeps/hppa/configure \
sysdeps/riscv/configure \
sysdeps/unix/sysv/linux/csky/configure
# Omit changes that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/powerpc/powerpc64/ppc-mcount.S: trailing lines
git checkout -f \
sysdeps/powerpc/powerpc64/ppc-mcount.S \
sysdeps/unix/sysv/linux/s390/s390-64/syscall.S
# Omit change that caused a pre-commit check to fail like this:
# remote: *** error: sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S: last line does not end in newline
git checkout -f sysdeps/sparc/sparc64/multiarch/memcpy-ultra3.S
2019-09-07 05:40:42 +00:00
|
|
|
<https://www.gnu.org/licenses/>. */
|
1999-10-10 20:36:40 +00:00
|
|
|
|
2013-06-05 20:44:03 +00:00
|
|
|
/*
|
|
|
|
* Powerpc Feature masks for the Aux Vector Hardware Capabilities (AT_HWCAP).
|
2004-05-26 04:47:00 +00:00
|
|
|
* This entry is copied to _dl_hwcap or rtld_global._dl_hwcap during startup.
|
|
|
|
*/
|
2014-02-21 07:24:03 +00:00
|
|
|
#define _SYSDEPS_SYSDEP_H 1
|
2012-05-20 17:34:00 +00:00
|
|
|
#include <bits/hwcap.h>
|
|
|
|
|
2005-11-18 00:12:44 +00:00
|
|
|
#define PPC_FEATURE_970 (PPC_FEATURE_POWER4 + PPC_FEATURE_HAS_ALTIVEC)
|
2004-05-26 04:47:00 +00:00
|
|
|
|
1999-10-10 20:36:40 +00:00
|
|
|
#ifdef __ASSEMBLER__
|
|
|
|
|
|
|
|
/* Symbolic names for the registers. The only portable way to write asm
|
|
|
|
code is to use number but this produces really unreadable code.
|
|
|
|
Therefore these symbolic names. */
|
|
|
|
|
|
|
|
/* Integer registers. */
|
|
|
|
#define r0 0
|
|
|
|
#define r1 1
|
|
|
|
#define r2 2
|
|
|
|
#define r3 3
|
|
|
|
#define r4 4
|
|
|
|
#define r5 5
|
|
|
|
#define r6 6
|
|
|
|
#define r7 7
|
|
|
|
#define r8 8
|
|
|
|
#define r9 9
|
|
|
|
#define r10 10
|
|
|
|
#define r11 11
|
|
|
|
#define r12 12
|
|
|
|
#define r13 13
|
|
|
|
#define r14 14
|
|
|
|
#define r15 15
|
|
|
|
#define r16 16
|
|
|
|
#define r17 17
|
|
|
|
#define r18 18
|
|
|
|
#define r19 19
|
|
|
|
#define r20 20
|
|
|
|
#define r21 21
|
|
|
|
#define r22 22
|
|
|
|
#define r23 23
|
|
|
|
#define r24 24
|
|
|
|
#define r25 25
|
|
|
|
#define r26 26
|
|
|
|
#define r27 27
|
|
|
|
#define r28 28
|
|
|
|
#define r29 29
|
|
|
|
#define r30 30
|
|
|
|
#define r31 31
|
|
|
|
|
|
|
|
/* Floating-point registers. */
|
|
|
|
#define fp0 0
|
|
|
|
#define fp1 1
|
|
|
|
#define fp2 2
|
|
|
|
#define fp3 3
|
|
|
|
#define fp4 4
|
|
|
|
#define fp5 5
|
|
|
|
#define fp6 6
|
|
|
|
#define fp7 7
|
|
|
|
#define fp8 8
|
|
|
|
#define fp9 9
|
|
|
|
#define fp10 10
|
|
|
|
#define fp11 11
|
|
|
|
#define fp12 12
|
|
|
|
#define fp13 13
|
|
|
|
#define fp14 14
|
|
|
|
#define fp15 15
|
|
|
|
#define fp16 16
|
|
|
|
#define fp17 17
|
|
|
|
#define fp18 18
|
|
|
|
#define fp19 19
|
|
|
|
#define fp20 20
|
|
|
|
#define fp21 21
|
|
|
|
#define fp22 22
|
|
|
|
#define fp23 23
|
|
|
|
#define fp24 24
|
|
|
|
#define fp25 25
|
|
|
|
#define fp26 26
|
|
|
|
#define fp27 27
|
|
|
|
#define fp28 28
|
|
|
|
#define fp29 29
|
|
|
|
#define fp30 30
|
|
|
|
#define fp31 31
|
|
|
|
|
|
|
|
/* Condition code registers. */
|
|
|
|
#define cr0 0
|
|
|
|
#define cr1 1
|
|
|
|
#define cr2 2
|
|
|
|
#define cr3 3
|
|
|
|
#define cr4 4
|
|
|
|
#define cr5 5
|
|
|
|
#define cr6 6
|
|
|
|
#define cr7 7
|
|
|
|
|
Update.
2004-01-14 Steven Munroe <sjmunroe@us.ibm.com>
* include/libc-symbols.h [HAVE_ASM_GLOBAL_DOT_NAME]
(_symbol_version): Use C_SYMBOL_DOT_NAME to create '.'ed symbols.
(_default_symbol_version): Use C_SYMBOL_DOT_NAME to create '.'ed
symbols.
* sysdeps/powerpc/Makefile: Add rtld-global-offsets.sym to
gen-as-const-headers.
* sysdeps/powerpc/elf/rtld-global-offsets.sym: New file.
* sysdeps/powerpc/sysdep.h: Define v# symbols for vector registers.
Define PPC_FEATURE_* masks for Aux Vector AT_HWCAP.
* sysdeps/unix/sysv/linux/kernel-features.h
(__ASSUME_SWAPCONTEXT_SYSCALL): Define for PPC and 2.6.0 kernels.
* sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h [!__WORDSIZE == 32]:
Declare mcontext_t inline and include altivec state for 64-bit.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions: Add GLIBC_2.3.4
versions for setcontext, getcontext, and swapcontext.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/Versions: Add GLIBC_2.3.4
versions for setcontext, getcontext, swapcontext, and makecontext.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S
(__getcontext): Upgrade to save Altivec regs and version GLIBC_2_3_4.
[SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)](__novec_getcontext):
Compatible with GLIBC_2.3.3 release.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S
(__makecontext): Use parm save area instead of compiler_dw to hold
context pointer.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S
(__setcontext): Upgrade to restore Altivec regs and version
GLIBC_2_3_4.
[SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)](__novec_setcontext):
Compatible with GLIBC_2.3.3 release.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S
(__swapcontext): Upgrade to swap Altivec regs and version GLIBC_2_3_4.
[SHLIB_COMPAT (libc, GLIBC_2_3, GLIBC_2_3_4)](__novec_swapcontext):
Compatible with GLIBC_2.3.3 release.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.h
(SIGCONTEXT_V_REGS_PTR, SIGCONTEXT_V_RESERVE): Defined.
2004-01-12 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/unix/sysv/linux/powerpc/powerpc32/Versions: Add GLIBC_2.3.4
versions for setcontext, getcontext, swapcontext, and makecontext.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext.S
(__getcontext): Upgrade to save Altivec regs and version GLIBC_2_3_4.
[SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)](__novec_getcontext):
Compatible with GLIBC_2.3.3 release.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S
(__makecontext): Upgrade to align for Altivec regs and version
GLIBC_2_3_4.
[SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)](__novec_makecontext):
Compatible with GLIBC_2.3.3 release.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext.S
(__setcontext): Upgrade to restore Altivec regs and version
GLIBC_2_3_4.
[SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)](__novec_setcontext):
Compatible with GLIBC_2.3.3 release.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext.S
(__swapcontext): Upgrade to swap Altivec regs and version GLIBC_2_3_4.
[SHLIB_COMPAT (libc, GLIBC_2_3_3, GLIBC_2_3_4)]
(__novec_swapcontext): Compatible with GLIBC_2.3.3 release.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h:
(_UC_VSCR, _UC_VRSAVE): Define.
(_FRAME_BACKCHAIN, _FRAME_LR_SAVE,_FRAME_PARM_SAVE1,_FRAME_PARM_SAVE2,
_FRAME_PARM_SAVE3, _FRAME_PARM_SAVE4): Defined.
2004-01-16 04:50:59 +00:00
|
|
|
/* Vector registers. */
|
|
|
|
#define v0 0
|
|
|
|
#define v1 1
|
|
|
|
#define v2 2
|
|
|
|
#define v3 3
|
|
|
|
#define v4 4
|
|
|
|
#define v5 5
|
|
|
|
#define v6 6
|
|
|
|
#define v7 7
|
|
|
|
#define v8 8
|
|
|
|
#define v9 9
|
|
|
|
#define v10 10
|
|
|
|
#define v11 11
|
|
|
|
#define v12 12
|
|
|
|
#define v13 13
|
|
|
|
#define v14 14
|
|
|
|
#define v15 15
|
|
|
|
#define v16 16
|
|
|
|
#define v17 17
|
|
|
|
#define v18 18
|
|
|
|
#define v19 19
|
|
|
|
#define v20 20
|
|
|
|
#define v21 21
|
|
|
|
#define v22 22
|
|
|
|
#define v23 23
|
|
|
|
#define v24 24
|
|
|
|
#define v25 25
|
|
|
|
#define v26 26
|
|
|
|
#define v27 27
|
|
|
|
#define v28 28
|
|
|
|
#define v29 29
|
|
|
|
#define v30 30
|
|
|
|
#define v31 31
|
|
|
|
|
|
|
|
#define VRSAVE 256
|
|
|
|
|
2013-08-17 09:01:45 +00:00
|
|
|
/* The 32-bit words of a 64-bit dword are at these offsets in memory. */
|
|
|
|
#if defined __LITTLE_ENDIAN__ || defined _LITTLE_ENDIAN
|
|
|
|
# define LOWORD 0
|
|
|
|
# define HIWORD 4
|
|
|
|
#else
|
|
|
|
# define LOWORD 4
|
|
|
|
# define HIWORD 0
|
|
|
|
#endif
|
|
|
|
|
|
|
|
/* The high 16-bit word of a 64-bit dword is at this offset in memory. */
|
|
|
|
#if defined __LITTLE_ENDIAN__ || defined _LITTLE_ENDIAN
|
|
|
|
# define HISHORT 6
|
|
|
|
#else
|
|
|
|
# define HISHORT 0
|
|
|
|
#endif
|
2001-11-05 Roland McGrath <roland@frob.com>
* sysdeps/powerpc/elf/sysdep.h: Remove this file, because it overrides
the more-specific unix/sysv/linux/powerpc file and breaks everything.
* sysdeps/powerpc/sysdep.h (ALIGNARG, ASM_TYPE_DIRECTIVE,
ASM_SIZE_DIRECTIVE, CALL_MCOUNT, ENTRY, EALIGN, DO_CALL, JUMPTARGET,
PSEUDO, PSEUDO_RET, PSEUDO_END, L, C_TEXT): These macros moved here
here, put under [__ELF__].
2001-11-05 09:30:21 +00:00
|
|
|
|
|
|
|
/* This seems to always be the case on PPC. */
|
|
|
|
#define ALIGNARG(log2) log2
|
|
|
|
#define ASM_SIZE_DIRECTIVE(name) .size name,.-name
|
|
|
|
|
|
|
|
#endif /* __ASSEMBLER__ */
|