summaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/sparc/sys/ucontext.h')
-rw-r--r--sysdeps/unix/sysv/linux/sparc/sys/ucontext.h291
1 files changed, 163 insertions, 128 deletions
diff --git a/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h b/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h
index d7bf2aedb9..adab2d9715 100644
--- a/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h
+++ b/sysdeps/unix/sysv/linux/sparc/sys/ucontext.h
@@ -1,4 +1,4 @@
-/* Copyright (C) 1998-2016 Free Software Foundation, Inc.
+/* Copyright (C) 1998-2018 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
@@ -19,71 +19,85 @@
#define _SYS_UCONTEXT_H 1
#include <features.h>
-#include <signal.h>
+
+#include <bits/types/sigset_t.h>
+#include <bits/types/stack_t.h>
+
#include <bits/wordsize.h>
+
+#ifdef __USE_MISC
+# define __ctx(fld) fld
+#else
+# define __ctx(fld) __ ## fld
+#endif
+
#if __WORDSIZE == 64
-#define MC_TSTATE 0
-#define MC_PC 1
-#define MC_NPC 2
-#define MC_Y 3
-#define MC_G1 4
-#define MC_G2 5
-#define MC_G3 6
-#define MC_G4 7
-#define MC_G5 8
-#define MC_G6 9
-#define MC_G7 10
-#define MC_O0 11
-#define MC_O1 12
-#define MC_O2 13
-#define MC_O3 14
-#define MC_O4 15
-#define MC_O5 16
-#define MC_O6 17
-#define MC_O7 18
-#define MC_NGREG 19
+#define __MC_NGREG 19
+#ifdef __USE_MISC
+# define MC_TSTATE 0
+# define MC_PC 1
+# define MC_NPC 2
+# define MC_Y 3
+# define MC_G1 4
+# define MC_G2 5
+# define MC_G3 6
+# define MC_G4 7
+# define MC_G5 8
+# define MC_G6 9
+# define MC_G7 10
+# define MC_O0 11
+# define MC_O1 12
+# define MC_O2 13
+# define MC_O3 14
+# define MC_O4 15
+# define MC_O5 16
+# define MC_O6 17
+# define MC_O7 18
+# define MC_NGREG __MC_NGREG
+#endif
typedef unsigned long mc_greg_t;
-typedef mc_greg_t mc_gregset_t[MC_NGREG];
-
-#define MC_MAXFPQ 16
-struct mc_fq {
- unsigned long *mcfq_addr;
- unsigned int mcfq_insn;
+typedef mc_greg_t mc_gregset_t[__MC_NGREG];
+
+#ifdef __USE_MISC
+# define MC_MAXFPQ 16
+#endif
+struct __mc_fq {
+ unsigned long *__ctx(mcfq_addr);
+ unsigned int __ctx(mcfq_insn);
};
-struct mc_fpu {
+typedef struct {
union {
- unsigned int sregs[32];
- unsigned long dregs[32];
- long double qregs[16];
- } mcfpu_fregs;
- unsigned long mcfpu_fsr;
- unsigned long mcfpu_fprs;
- unsigned long mcfpu_gsr;
- struct mc_fq *mcfpu_fq;
- unsigned char mcfpu_qcnt;
- unsigned char mcfpu_qentsz;
- unsigned char mcfpu_enab;
-};
-typedef struct mc_fpu mc_fpu_t;
+ unsigned int __ctx(sregs)[32];
+ unsigned long __ctx(dregs)[32];
+ long double __ctx(qregs)[16];
+ } __ctx(mcfpu_fregs);
+ unsigned long __ctx(mcfpu_fsr);
+ unsigned long __ctx(mcfpu_fprs);
+ unsigned long __ctx(mcfpu_gsr);
+ struct __mc_fq *__ctx(mcfpu_fq);
+ unsigned char __ctx(mcfpu_qcnt);
+ unsigned char __ctx(mcfpu_qentsz);
+ unsigned char __ctx(mcfpu_enab);
+} mc_fpu_t;
typedef struct {
- mc_gregset_t mc_gregs;
- mc_greg_t mc_fp;
- mc_greg_t mc_i7;
- mc_fpu_t mc_fpregs;
+ mc_gregset_t __ctx(mc_gregs);
+ mc_greg_t __ctx(mc_fp);
+ mc_greg_t __ctx(mc_i7);
+ mc_fpu_t __ctx(mc_fpregs);
} mcontext_t;
-typedef struct ucontext {
- struct ucontext *uc_link;
- unsigned long uc_flags;
+typedef struct ucontext_t {
+ struct ucontext_t *uc_link;
+ unsigned long __ctx(uc_flags);
unsigned long __uc_sigmask;
mcontext_t uc_mcontext;
stack_t uc_stack;
- __sigset_t uc_sigmask;
+ sigset_t uc_sigmask;
} ucontext_t;
#endif /* __WORDISIZE == 64 */
@@ -92,25 +106,27 @@ typedef struct ucontext {
* Location of the users' stored registers relative to R0.
* Usage is as an index into a gregset_t array or as u.u_ar0[XX].
*/
-#define REG_PSR (0)
-#define REG_PC (1)
-#define REG_nPC (2)
-#define REG_Y (3)
-#define REG_G1 (4)
-#define REG_G2 (5)
-#define REG_G3 (6)
-#define REG_G4 (7)
-#define REG_G5 (8)
-#define REG_G6 (9)
-#define REG_G7 (10)
-#define REG_O0 (11)
-#define REG_O1 (12)
-#define REG_O2 (13)
-#define REG_O3 (14)
-#define REG_O4 (15)
-#define REG_O5 (16)
-#define REG_O6 (17)
-#define REG_O7 (18)
+#ifdef __USE_MISC
+# define REG_PSR (0)
+# define REG_PC (1)
+# define REG_nPC (2)
+# define REG_Y (3)
+# define REG_G1 (4)
+# define REG_G2 (5)
+# define REG_G3 (6)
+# define REG_G4 (7)
+# define REG_G5 (8)
+# define REG_G6 (9)
+# define REG_G7 (10)
+# define REG_O0 (11)
+# define REG_O1 (12)
+# define REG_O2 (13)
+# define REG_O3 (14)
+# define REG_O4 (15)
+# define REG_O5 (16)
+# define REG_O6 (17)
+# define REG_O7 (18)
+#endif
/*
* A gregset_t is defined as an array type for compatibility with the reference
@@ -123,20 +139,26 @@ typedef struct ucontext {
#if __WORDSIZE == 64
-#define REG_ASI (19)
-#define REG_FPRS (20)
+# define __NGREG 21
+# ifdef __USE_MISC
+# define REG_ASI (19)
+# define REG_FPRS (20)
-#define NGREG 21
+# define NGREG __NGREG
+# endif
typedef long greg_t;
#else /* __WORDSIZE == 32 */
-#define NGREG 19
+# define __NGREG 19
+# ifdef __USE_MISC
+# define NGREG __NGREG
+# endif
typedef int greg_t;
#endif /* __WORDSIZE == 32 */
-typedef greg_t gregset_t[NGREG];
+typedef greg_t gregset_t[__NGREG];
/*
* The following structures define how a register window can appear on the
@@ -145,28 +167,35 @@ typedef greg_t gregset_t[NGREG];
* maximum number of outstanding regiters window defined in the SPARC
* architecture (*not* implementation).
*/
-#define SPARC_MAXREGWINDOW 31 /* max windows in SPARC arch. */
-struct rwindow
+# define __SPARC_MAXREGWINDOW 31 /* max windows in SPARC arch. */
+#ifdef __USE_MISC
+# define SPARC_MAXREGWINDOW __SPARC_MAXREGWINDOW
+#endif
+struct __rwindow
{
- greg_t rw_local[8]; /* locals */
- greg_t rw_in[8]; /* ins */
+ greg_t __ctx(rw_local)[8]; /* locals */
+ greg_t __ctx(rw_in)[8]; /* ins */
};
-#define rw_fp rw_in[6] /* frame pointer */
-#define rw_rtn rw_in[7] /* return address */
+#ifdef __USE_MISC
+# define rw_fp __ctx(rw_in)[6] /* frame pointer */
+# define rw_rtn __ctx(rw_in)[7] /* return address */
+#endif
-typedef struct gwindows
+typedef struct
{
- int wbcnt;
- int *spbuf[SPARC_MAXREGWINDOW];
- struct rwindow wbuf[SPARC_MAXREGWINDOW];
+ int __ctx(wbcnt);
+ int *__ctx(spbuf)[__SPARC_MAXREGWINDOW];
+ struct __rwindow __ctx(wbuf)[__SPARC_MAXREGWINDOW];
} gwindows_t;
/*
* Floating point definitions.
*/
-#define MAXFPQ 16 /* max # of fpu queue entries currently supported */
+#ifdef __USE_MISC
+# define MAXFPQ 16 /* max # of fpu queue entries currently supported */
+#endif
/*
* struct fq defines the minimal format of a floating point instruction queue
@@ -175,56 +204,58 @@ typedef struct gwindows
* conformant system implementation. Any additional fields provided by an
* implementation should not be used applications designed to be ABI conformant. */
-struct fpq
+struct __fpq
{
- unsigned long *fpq_addr; /* address */
- unsigned long fpq_instr; /* instruction */
+ unsigned long *__ctx(fpq_addr); /* address */
+ unsigned long __ctx(fpq_instr); /* instruction */
};
-struct fq
+struct __fq
{
union /* FPU inst/addr queue */
{
- double whole;
- struct fpq fpq;
- } FQu;
+ double __ctx(whole);
+ struct __fpq __ctx(fpq);
+ } __ctx(FQu);
};
-#define FPU_REGS_TYPE unsigned
-#define FPU_DREGS_TYPE unsigned long long
-#define V7_FPU_FSR_TYPE unsigned
-#define V9_FPU_FSR_TYPE unsigned long long
-#define V9_FPU_FPRS_TYPE unsigned
+#ifdef __USE_MISC
+# define FPU_REGS_TYPE unsigned
+# define FPU_DREGS_TYPE unsigned long long
+# define V7_FPU_FSR_TYPE unsigned
+# define V9_FPU_FSR_TYPE unsigned long long
+# define V9_FPU_FPRS_TYPE unsigned
+#endif
#if __WORDSIZE == 64
-typedef struct fpu
+typedef struct
{
union { /* FPU floating point regs */
- unsigned fpu_regs[32]; /* 32 singles */
- double fpu_dregs[32]; /* 32 doubles */
- long double fpu_qregs[16]; /* 16 quads */
- } fpu_fr;
- struct fq *fpu_q; /* ptr to array of FQ entries */
- unsigned long fpu_fsr; /* FPU status register */
- unsigned char fpu_qcnt; /* # of entries in saved FQ */
- unsigned char fpu_q_entrysize; /* # of bytes per FQ entry */
- unsigned char fpu_en; /* flag signifying fpu in use */
+ unsigned __ctx(fpu_regs)[32]; /* 32 singles */
+ double __ctx(fpu_dregs)[32]; /* 32 doubles */
+ long double __ctx(fpu_qregs)[16]; /* 16 quads */
+ } __ctx(fpu_fr);
+ struct __fq *__ctx(fpu_q); /* ptr to array of FQ entries */
+ unsigned long __ctx(fpu_fsr); /* FPU status register */
+ unsigned char __ctx(fpu_qcnt); /* # of entries in saved FQ */
+ unsigned char __ctx(fpu_q_entrysize); /* # of bytes per FQ entry */
+ unsigned char __ctx(fpu_en); /* flag signifying fpu in use */
} fpregset_t;
#else /* __WORDSIZE == 32 */
-typedef struct fpu
+typedef struct
{
union { /* FPU floating point regs */
- __extension__ unsigned long long fpu_regs[32]; /* 32 singles */
- double fpu_dregs[16]; /* 16 doubles */
- } fpu_fr;
- struct fq *fpu_q; /* ptr to array of FQ entries */
- unsigned fpu_fsr; /* FPU status register */
- unsigned char fpu_qcnt; /* # of entries in saved FQ */
- unsigned char fpu_q_entrysize; /* # of bytes per FQ entry */
- unsigned char fpu_en; /* flag signifying fpu in use */
+ __extension__ unsigned long long __ctx(fpu_regs)[32]; /* 32 singles */
+ double __ctx(fpu_dregs)[16]; /* 16 doubles */
+ } __ctx(fpu_fr);
+ struct __fq *__ctx(fpu_q); /* ptr to array of FQ entries */
+ unsigned __ctx(fpu_fsr); /* FPU status register */
+ unsigned char __ctx(fpu_qcnt); /* # of entries in saved FQ */
+ unsigned char __ctx(fpu_q_entrysize); /* # of bytes per FQ entry */
+ unsigned char __ctx(fpu_en); /* flag signifying fpu in use */
} fpregset_t;
/*
@@ -239,28 +270,32 @@ typedef struct fpu
*/
typedef struct
{
- unsigned int xrs_id; /* indicates xrs_ptr validity */
- void * xrs_ptr; /* ptr to extra reg state */
+ unsigned int __ctx(xrs_id); /* indicates xrs_ptr validity */
+ void * __ctx(xrs_ptr); /* ptr to extra reg state */
} xrs_t;
-#define XRS_ID 0x78727300 /* the string "xrs" */
+#ifdef __USE_MISC
+# define XRS_ID 0x78727300 /* the string "xrs" */
+#endif
typedef struct
{
- gregset_t gregs; /* general register set */
- gwindows_t *gwins; /* POSSIBLE pointer to register windows */
- fpregset_t fpregs; /* floating point register set */
- xrs_t xrs; /* POSSIBLE extra register state association */
- long filler[19];
+ gregset_t __ctx(gregs); /* general register set */
+ gwindows_t *__ctx(gwins); /* POSSIBLE pointer to register
+ windows */
+ fpregset_t __ctx(fpregs); /* floating point register set */
+ xrs_t __ctx(xrs); /* POSSIBLE extra register state
+ association */
+ long __glibc_reserved1[19];
} mcontext_t;
/* Userlevel context. */
-typedef struct ucontext
+typedef struct ucontext_t
{
- unsigned long uc_flags;
- struct ucontext *uc_link;
- __sigset_t uc_sigmask;
+ unsigned long __ctx(uc_flags);
+ struct ucontext_t *uc_link;
+ sigset_t uc_sigmask;
stack_t uc_stack;
mcontext_t uc_mcontext;
} ucontext_t;