about summary refs log tree commit diff
path: root/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h')
-rw-r--r--sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h73
1 files changed, 45 insertions, 28 deletions
diff --git a/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h b/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
index c10741cf53..b460f23bc9 100644
--- a/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h
@@ -25,19 +25,28 @@
 #include <bits/types/stack_t.h>
 
 
+#ifdef __USE_MISC
+# define __ctx(fld) fld
+#else
+# define __ctx(fld) __ ## fld
+#endif
+
 #if __WORDSIZE == 32
 
 /* Number of general registers.  */
-# define NGREG	48
+# define __NGREG	48
+# ifdef __USE_MISC
+#  define NGREG	__NGREG
+# endif
 
 /* Container for all general registers.  */
-typedef unsigned long gregset_t[NGREG];
+typedef unsigned long gregset_t[__NGREG];
 
 /* Container for floating-point registers and status */
 typedef struct _libc_fpstate
 {
-	double fpregs[32];
-	double fpscr;
+	double __ctx(fpregs)[32];
+	double __ctx(fpscr);
 	unsigned int _pad[2];
 } fpregset_t;
 
@@ -45,18 +54,18 @@ typedef struct _libc_fpstate
    Needs to be aligned on a 16-byte boundary. */
 typedef struct _libc_vrstate
 {
-	unsigned int vrregs[32][4];
-	unsigned int vrsave;
+	unsigned int __ctx(vrregs)[32][4];
+	unsigned int __ctx(vrsave);
 	unsigned int _pad[2];
-	unsigned int vscr;
+	unsigned int __ctx(vscr);
 } vrregset_t;
 
 /* Context to describe whole processor state.  */
 typedef struct
 {
-	gregset_t gregs;
-	fpregset_t fpregs;
-	vrregset_t vrregs __attribute__((__aligned__(16)));
+	gregset_t __ctx(gregs);
+	fpregset_t __ctx(fpregs);
+	vrregset_t __ctx(vrregs) __attribute__((__aligned__(16)));
 } mcontext_t;
 
 #else
@@ -70,12 +79,18 @@ typedef struct
  * is set in AT_HWCAP.  */
 
 /* Number of general registers.  */
-# define NGREG	48	/* includes r0-r31, nip, msr, lr, etc.   */
-# define NFPREG	33	/* includes fp0-fp31 &fpscr.  */
-# define NVRREG	34	/* includes v0-v31, vscr, & vrsave in split vectors */
-
-typedef unsigned long gregset_t[NGREG];
-typedef double fpregset_t[NFPREG];
+# define __NGREG	48	/* includes r0-r31, nip, msr, lr, etc.   */
+# define __NFPREG	33	/* includes fp0-fp31 &fpscr.  */
+# define __NVRREG	34	/* includes v0-v31, vscr, & vrsave in
+				   split vectors */
+# ifdef __USE_MISC
+#  define NGREG	__NGREG
+#  define NFPREG	__NFPREG
+#  define NVRREG	__NVRREG
+# endif
+
+typedef unsigned long gregset_t[__NGREG];
+typedef double fpregset_t[__NFPREG];
 
 /* Container for Altivec/VMX Vector Status and Control Register.  Only 32-bits
    but can only be copied to/from a 128-bit vector register.  So we allocated
@@ -83,28 +98,28 @@ typedef double fpregset_t[NFPREG];
 typedef struct _libc_vscr
 {
 	unsigned int __pad[3];
-	unsigned int vscr_word;
+	unsigned int __ctx(vscr_word);
 } vscr_t;
 
 /* Container for Altivec/VMX registers and status.
    Must to be aligned on a 16-byte boundary. */
 typedef struct _libc_vrstate
 {
-	unsigned int	vrregs[32][4];
-	vscr_t		vscr;
-	unsigned int	vrsave;
+	unsigned int	__ctx(vrregs)[32][4];
+	vscr_t		__ctx(vscr);
+	unsigned int	__ctx(vrsave);
 	unsigned int	__pad[3];
 } vrregset_t  __attribute__((__aligned__(16)));
 
 typedef struct {
 	unsigned long	__glibc_reserved[4];
-	int		signal;
+	int		__ctx(signal);
 	int		__pad0;
-	unsigned long	handler;
-	unsigned long	oldmask;
-	struct pt_regs	*regs;
-	gregset_t	gp_regs;
-	fpregset_t	fp_regs;
+	unsigned long	__ctx(handler);
+	unsigned long	__ctx(oldmask);
+	struct pt_regs	*__ctx(regs);
+	gregset_t	__ctx(gp_regs);
+	fpregset_t	__ctx(fp_regs);
 /*
  * To maintain compatibility with current implementations the sigcontext is
  * extended by appending a pointer (v_regs) to a quadword type (elf_vrreg_t)
@@ -124,12 +139,14 @@ typedef struct {
  * The entry with index 33 contains the vrsave as the first word (offset 0)
  * within the quadword.
  */
-	vrregset_t	*v_regs;
-	long		vmx_reserve[NVRREG+NVRREG+1];
+	vrregset_t	*__ctx(v_regs);
+	long		__ctx(vmx_reserve)[__NVRREG+__NVRREG+1];
 } mcontext_t;
 
 #endif
 
+#undef __ctx
+
 /* Userlevel context.  */
 typedef struct ucontext
   {