about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/powerpc
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/powerpc')
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/Makefile4
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h62
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.sym34
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.h75
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.sym50
5 files changed, 88 insertions, 137 deletions
diff --git a/sysdeps/unix/sysv/linux/powerpc/Makefile b/sysdeps/unix/sysv/linux/powerpc/Makefile
index 671370ede0..55d2d0d273 100644
--- a/sysdeps/unix/sysv/linux/powerpc/Makefile
+++ b/sysdeps/unix/sysv/linux/powerpc/Makefile
@@ -2,3 +2,7 @@
 ifeq ($(subdir),rt)
 librt-routines += rt-sysdep
 endif
+
+ifeq ($(subdir),stdlib)
+gen-as-const-headers += ucontext_i.sym
+endif
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h
deleted file mode 100644
index f65b0ed58c..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/* Offsets and other constants needed in the *context() function
-   implementation.
-   Copyright (C) 2002 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
-   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.
-
-   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
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#define SIG_BLOCK	0
-#define SIG_SETMASK	2
-
-#define _FRAME_BACKCHAIN	0
-#define _FRAME_LR_SAVE	4
-#define _FRAME_PARM_SAVE1	8
-#define _FRAME_PARM_SAVE2	12
-#define _FRAME_PARM_SAVE3	16
-#define _FRAME_PARM_SAVE4	20
-
-#define _UC_LINK	4
-#define _UC_STACK_SP	8
-#define _UC_STACK_SIZE	16
-#define _UC_REGS_PTR	48
-#define _UC_SIGMASK	52
-#define _UC_REG_SPACE	180
-
-/* offsets within mcontext_t */
-#define _UC_GREGS	0
-#define _UC_FREGS	192
-#define _UC_VREGS	464
-#define _UC_VSCR	976
-#define _UC_VRSAVE	980
-
-/* The registers don't have a fixed offset within ucontext because the
-   orginal ucontext only contained the regs pointer.  Also with the
-   addition of VMX to the register state the mcontext may require
-   stronger alignment (16) then the containing ucontext (4).  All access
-   to register state (pt_regs/mcontext) must be indirect via the regs
-   (uc_regs) pointer.  This means we can't test the PPC32 mcontext
-   register offsets here.  */
-
-/* Tests run in stdlib/tst-ucontext-off.  */
-#define TESTS \
-  TEST (uc_link, _UC_LINK);					\
-  TEST (uc_stack.ss_sp, _UC_STACK_SP);				\
-  TEST (uc_stack.ss_size, _UC_STACK_SIZE);			\
-  TEST (uc_mcontext.regs, _UC_REGS_PTR);			\
-  TEST (uc_mcontext.uc_regs, _UC_REGS_PTR);			\
-  TEST (uc_sigmask, _UC_SIGMASK);				\
-  TEST (uc_reg_space, _UC_REG_SPACE);
-
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.sym b/sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.sym
new file mode 100644
index 0000000000..662c693303
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.sym
@@ -0,0 +1,34 @@
+#include <stddef.h>
+#include <signal.h>
+#include <sys/ucontext.h>
+
+--
+
+SIG_BLOCK
+SIG_SETMASK
+
+-- XXX Do these correspond to some struct?
+_FRAME_BACKCHAIN	0
+_FRAME_LR_SAVE		4
+_FRAME_PARM_SAVE1	8
+_FRAME_PARM_SAVE2	12
+_FRAME_PARM_SAVE3	16
+_FRAME_PARM_SAVE4	20
+
+-- Offsets in ucontext_t.
+#define ucontext(member)	offsetof (ucontext_t, member)
+_UC_LINK		ucontext (uc_link)
+_UC_STACK_SP		ucontext (uc_stack.ss_sp)
+_UC_STACK_SIZE		ucontext (uc_stack.ss_size)
+_UC_REGS_PTR		ucontext (uc_mcontext.uc_regs)
+_UC_SIGMASK		ucontext (uc_sigmask)
+_UC_REG_SPACE		ucontext (uc_reg_space)
+
+-- Offsets in mcontext_t.
+#define mcontext(member)	offsetof (mcontext_t, member)
+_UC_GREGS		mcontext (gregs)
+_UC_FREGS		mcontext (fpregs)
+_UC_VREGS		mcontext (vrregs)
+_UC_VREGS		mcontext (vrregs)
+_UC_VSCR		mcontext (vrregs.vscr)
+_UC_VRSAVE		mcontext (vrregs.vrsave)
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.h
deleted file mode 100644
index d540cfeaf1..0000000000
--- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.h
+++ /dev/null
@@ -1,75 +0,0 @@
-/* Offsets and other constants needed in the *context() function
-   implementation.
-   Copyright (C) 2002 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
-   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.
-
-   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
-   Lesser General Public License for more details.
-
-   You should have received a copy of the GNU Lesser General Public
-   License along with the GNU C Library; if not, write to the Free
-   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
-   02111-1307 USA.  */
-
-#define SIG_BLOCK	0
-#define SIG_SETMASK	2
-
-/* Offsets of the fields in the powerpc64 ABI stack frame.  */
-
-#define FRAME_BACKCHAIN 0
-#define FRAME_CR_SAVE 8
-#define FRAME_LR_SAVE 16
-#define FRAME_COMPILER_DW 24
-#define FRAME_LINKER_DW 32
-#define FRAME_TOC_SAVE 40
-#define FRAME_PARM_SAVE 48
-#define FRAME_PARM1_SAVE 48
-#define FRAME_PARM2_SAVE 56
-#define FRAME_PARM3_SAVE 64
-#define FRAME_PARM4_SAVE 72
-#define FRAME_PARM5_SAVE 80
-#define FRAME_PARM6_SAVE 88
-#define FRAME_PARM7_SAVE 96
-#define FRAME_PARM8_SAVE 104
-#define FRAME_PARM9_SAVE 112
-
-
-/* Offsets of the fields in the ucontext_t structure.  */
-
-#define UCONTEXT_LINK 8
-#define UCONTEXT_STACK 16
-#define UCONTEXT_STACK_SP 16
-#define UCONTEXT_STACK_FLAGS 24
-#define UCONTEXT_STACK_SIZE 32
-#define UCONTEXT_SIGMASK 40
-#define UCONTEXT_MCONTEXT 168
-#define SIGCONTEXT_SIGNAL 200
-#define SIGCONTEXT_HANDLER 208
-#define SIGCONTEXT_OLDMASK 216
-#define SIGCONTEXT_PT_REGS 224
-#define SIGCONTEXT_GP_REGS 232
-#define SIGCONTEXT_FP_REGS 616
-#define SIGCONTEXT_V_REGS_PTR 880
-#define SIGCONTEXT_V_RESERVE 888
-
-/* Tests run in stdlib/tst-ucontext-off.  */
-#define TESTS \
-  TEST (uc_link, UCONTEXT_LINK);				\
-  TEST (uc_stack.ss_sp, UCONTEXT_STACK_SP);			\
-  TEST (uc_stack.ss_size, UCONTEXT_STACK_SIZE);			\
-  TEST (uc_sigmask, UCONTEXT_SIGMASK);				\
-  TEST (uc_mcontext.signal, SIGCONTEXT_SIGNAL);			\
-  TEST (uc_mcontext.handler, SIGCONTEXT_HANDLER);		\
-  TEST (uc_mcontext.oldmask, SIGCONTEXT_OLDMASK);		\
-  TEST (uc_mcontext.regs, SIGCONTEXT_PT_REGS);			\
-  TEST (uc_mcontext.gp_regs, SIGCONTEXT_GP_REGS);		\
-  TEST (uc_mcontext.fp_regs, SIGCONTEXT_FP_REGS);		\
-  TEST (uc_mcontext.v_regs, SIGCONTEXT_V_REGS_PTR);		\
-  TEST (uc_mcontext.vmx_reserve, SIGCONTEXT_V_RESERVE);
diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.sym b/sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.sym
new file mode 100644
index 0000000000..a35418d9d4
--- /dev/null
+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.sym
@@ -0,0 +1,50 @@
+#include <stddef.h>
+#include <signal.h>
+#include <sys/ucontext.h>
+
+--
+
+SIG_BLOCK
+SIG_SETMASK
+
+
+-- Offsets of the fields in the powerpc64 ABI stack frame.
+-- XXX Do these correspond to some struct?
+
+FRAME_BACKCHAIN		0
+FRAME_CR_SAVE		8
+FRAME_LR_SAVE		16
+FRAME_COMPILER_DW	24
+FRAME_LINKER_DW		32
+FRAME_TOC_SAVE		40
+FRAME_PARM_SAVE		48
+FRAME_PARM1_SAVE	48
+FRAME_PARM2_SAVE	56
+FRAME_PARM3_SAVE	64
+FRAME_PARM4_SAVE	72
+FRAME_PARM5_SAVE	80
+FRAME_PARM6_SAVE	88
+FRAME_PARM7_SAVE	96
+FRAME_PARM8_SAVE	104
+FRAME_PARM9_SAVE	112
+
+
+-- Offsets of the fields in the ucontext_t structure.
+#define ucontext(member)	offsetof (ucontext_t, member)
+#define mcontext(member)	ucontext (uc_mcontext.member)
+
+UCONTEXT_LINK			ucontext (uc_link)
+UCONTEXT_STACK			ucontext (uc_stack)
+UCONTEXT_STACK_SP		ucontext (uc_stack.ss_sp)
+UCONTEXT_STACK_FLAGS		ucontext (uc_stack.ss_flags)
+UCONTEXT_STACK_SIZE		ucontext (uc_stack.ss_size)
+UCONTEXT_SIGMASK		ucontext (uc_sigmask)
+UCONTEXT_MCONTEXT		ucontext (uc_mcontext)
+SIGCONTEXT_SIGNAL		mcontext (signal)
+SIGCONTEXT_HANDLER		mcontext (handler)
+SIGCONTEXT_OLDMASK		mcontext (oldmask)
+SIGCONTEXT_PT_REGS		mcontext (regs)
+SIGCONTEXT_GP_REGS		mcontext (gp_regs)
+SIGCONTEXT_FP_REGS		mcontext (fp_regs)
+SIGCONTEXT_V_REGS_PTR		mcontext (v_regs)
+SIGCONTEXT_V_RESERVE		mcontext (vmx_reserve)