mcontext.h revision 61679b0b6826b0ae7e3f751acd91412fcfa45d1e
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * CDDL HEADER START
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai *
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * The contents of this file are subject to the terms of the
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * Common Development and Distribution License (the "License").
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * You may not use this file except in compliance with the License.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai *
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * or http://www.opensolaris.org/os/licensing.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * See the License for the specific language governing permissions
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * and limitations under the License.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai *
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * When distributing Covered Code, include this CDDL HEADER in each
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * If applicable, add the following below this CDDL HEADER, with the
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * fields enclosed by brackets "[]" replaced with your own identifying
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * information: Portions Copyright [yyyy] [name of copyright owner]
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai *
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * CDDL HEADER END
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer/* All Rights Reserved */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * Use is subject to license terms.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#ifndef _SYS_REGSET_H
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define _SYS_REGSET_H
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#pragma ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.1 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#include <sys/feature_tests.h>
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if !defined(_ASM)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#include <sys/int_types.h>
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#ifdef __cplusplus
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaiextern "C" {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * Location of the users' stored registers relative to R0.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * Usage is as an index into a gregset_t array or as u.u_ar0[XX].
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if !defined(_XPG4_2) || defined(__EXTENSIONS__)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if defined(__sparcv9)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_CCR (0)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if defined(_SYSCALL32)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_PSR (0)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* _SYSCALL32 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#else
0f83d385c54b2d67790eb5ee77344de60f0966c8Rishi Srivatsavai#define REG_PSR (0)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* __sparcv9 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_PC (1)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_nPC (2)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_Y (3)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_G1 (4)
0f83d385c54b2d67790eb5ee77344de60f0966c8Rishi Srivatsavai#define REG_G2 (5)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_G3 (6)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_G4 (7)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_G5 (8)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_G6 (9)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_G7 (10)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_O0 (11)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_O1 (12)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_O2 (13)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_O3 (14)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_O4 (15)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_O5 (16)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_O6 (17)
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#define REG_O7 (18)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if defined(__sparcv9)
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#define REG_ASI (19)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_FPRS (20)
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#endif /* __sparcv9 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy/* the following defines are for portability */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if !defined(__sparcv9)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_PS REG_PSR
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* __sparcv9 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_SP REG_O6
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_R0 REG_O0
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define REG_R1 REG_O1
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* !defined(_XPG4_2) || defined(__EXTENSIONS__) */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * A gregset_t is defined as an array type for compatibility with the reference
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * source. This is important due to differences in the way the C language
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * treats arrays and structures as parameters.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai *
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * Note that NGREG is really (sizeof (struct regs) / sizeof (greg_t)),
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * but that the SPARC V8 ABI defines it absolutely to be 19.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if defined(__sparcv9)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define _NGREG 21
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#else /* __sparcv9 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define _NGREG 19
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* __sparcv9 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if !defined(_XPG4_2) || defined(__EXTENSIONS__)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define NGREG _NGREG
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#ifndef _ASM
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if defined(_LP64) || defined(_I32LPx)
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyertypedef long greg_t;
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer#else
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyertypedef int greg_t;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer#if defined(_SYSCALL32)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaitypedef int32_t greg32_t;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaitypedef int64_t greg64_t;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* _SYSCALL32 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaitypedef greg_t gregset_t[_NGREG];
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyer
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if defined(_SYSCALL32)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define _NGREG32 19
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define _NGREG64 21
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyertypedef greg32_t gregset32_t[_NGREG32];
0dc2366f7b9f9f36e10909b1e95edbf2a261c2acVenugopal Iyertypedef greg64_t gregset64_t[_NGREG64];
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* _SYSCALL32 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if !defined(_XPG4_2) || defined(__EXTENSIONS__)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * The following structures define how a register window can appear on the
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * stack. This structure is available (when required) through the `gwins'
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * field of an mcontext (nested within ucontext). SPARC_MAXWINDOW is the
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * maximum number of outstanding regiters window defined in the SPARC
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * architecture (*not* implementation).
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define SPARC_MAXREGWINDOW 31 /* max windows in SPARC arch. */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaistruct rwindow {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai greg_t rw_local[8]; /* locals */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai greg_t rw_in[8]; /* ins */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai};
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if defined(_SYSCALL32)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaistruct rwindow32 {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai greg32_t rw_local[8]; /* locals */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai greg32_t rw_in[8]; /* ins */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai};
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaistruct rwindow64 {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai greg64_t rw_local[8]; /* locals */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai greg64_t rw_in[8]; /* ins */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai};
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if defined(_KERNEL)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaiextern void rwindow_nto32(struct rwindow *, struct rwindow32 *);
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaiextern void rwindow_32ton(struct rwindow32 *, struct rwindow *);
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* _SYSCALL32 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define rw_fp rw_in[6] /* frame pointer */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define rw_rtn rw_in[7] /* return address */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaitypedef struct gwindows {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai int wbcnt;
0f83d385c54b2d67790eb5ee77344de60f0966c8Rishi Srivatsavai greg_t *spbuf[SPARC_MAXREGWINDOW];
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai struct rwindow wbuf[SPARC_MAXREGWINDOW];
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai} gwindows_t;
0f83d385c54b2d67790eb5ee77344de60f0966c8Rishi Srivatsavai
0f83d385c54b2d67790eb5ee77344de60f0966c8Rishi Srivatsavai#if defined(_SYSCALL32)
0f83d385c54b2d67790eb5ee77344de60f0966c8Rishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaitypedef struct gwindows32 {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai int32_t wbcnt;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai caddr32_t spbuf[SPARC_MAXREGWINDOW];
0f83d385c54b2d67790eb5ee77344de60f0966c8Rishi Srivatsavai struct rwindow32 wbuf[SPARC_MAXREGWINDOW];
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai} gwindows32_t;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaitypedef struct gwindows64 {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai int wbcnt;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai greg64_t *spbuf[SPARC_MAXREGWINDOW];
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai struct rwindow64 wbuf[SPARC_MAXREGWINDOW];
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai} gwindows64_t;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
0f83d385c54b2d67790eb5ee77344de60f0966c8Rishi Srivatsavai#endif /* _SYSCALL32 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * Floating point definitions.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define MAXFPQ 16 /* max # of fpu queue entries currently supported */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * struct fq defines the minimal format of a floating point instruction queue
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * entry. The size of entries in the floating point queue are implementation
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * dependent. The union FQu is guarenteed to be the first field in any ABI
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * conformant system implementation. Any additional fields provided by an
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * implementation should not be used applications designed to be ABI conformant.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaistruct fpq {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai unsigned int *fpq_addr; /* address */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai unsigned int fpq_instr; /* instruction */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai};
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaistruct fq {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai union { /* FPU inst/addr queue */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai double whole;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai struct fpq fpq;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai } FQu;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai};
0f83d385c54b2d67790eb5ee77344de60f0966c8Rishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if defined(_SYSCALL32)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaistruct fpq32 {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai caddr32_t fpq_addr; /* address */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint32_t fpq_instr; /* instruction */
0f83d385c54b2d67790eb5ee77344de60f0966c8Rishi Srivatsavai};
0f83d385c54b2d67790eb5ee77344de60f0966c8Rishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaistruct fq32 {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai union { /* FPU inst/addr queue */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai double whole;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai struct fpq32 fpq;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai } FQu;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai};
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* _SYSCALL32 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * struct fpu is the floating point processor state. struct fpu is the sum
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * total of all possible floating point state which includes the state of
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * external floating point hardware, fpa registers, etc..., if it exists.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai *
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * A floating point instuction queue may or may not be associated with
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * the floating point processor state. If a queue does exist, the field
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * fpu_q will point to an array of fpu_qcnt entries where each entry is
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * fpu_q_entrysize long. fpu_q_entry has a lower bound of sizeof (union FQu)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * and no upper bound. If no floating point queue entries are associated
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * with the processor state, fpu_qcnt will be zeo and fpu_q will be NULL.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * The following #define's are obsolete and may be removed in a future release.
0f83d385c54b2d67790eb5ee77344de60f0966c8Rishi Srivatsavai * The corresponding integer types should be used instead (i.e. uint64_t).
0f83d385c54b2d67790eb5ee77344de60f0966c8Rishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define FPU_REGS_TYPE uint32_t
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define FPU_DREGS_TYPE uint64_t
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define V7_FPU_FSR_TYPE uint32_t
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define V9_FPU_FSR_TYPE uint64_t
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define V9_FPU_FPRS_TYPE uint32_t
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if defined(__sparcv9)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaistruct fpu {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai union { /* FPU floating point regs */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint32_t fpu_regs[32]; /* 32 singles */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai double fpu_dregs[32]; /* 32 doubles */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai long double fpu_qregs[16]; /* 16 quads */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai } fpu_fr;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai struct fq *fpu_q; /* ptr to array of FQ entries */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint64_t fpu_fsr; /* FPU status register */
0f83d385c54b2d67790eb5ee77344de60f0966c8Rishi Srivatsavai uint8_t fpu_qcnt; /* # of entries in saved FQ */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint8_t fpu_q_entrysize; /* # of bytes per FQ entry */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint8_t fpu_en; /* flag specifying fpu in use */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai};
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#else /* __sparcv9 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaistruct fpu {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai union { /* FPU floating point regs */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint32_t fpu_regs[32]; /* 32 singles */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai double fpu_dregs[16]; /* 16 doubles */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai } fpu_fr;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai struct fq *fpu_q; /* ptr to array of FQ entries */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint32_t fpu_fsr; /* FPU status register */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint8_t fpu_qcnt; /* # of entries in saved FQ */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint8_t fpu_q_entrysize; /* # of bytes per FQ entry */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint8_t fpu_en; /* flag signifying fpu in use */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai};
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* __sparcv9 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaitypedef struct fpu fpregset_t;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if defined(_SYSCALL32)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/* Kernel view of user sparcv7/v8 fpu structure */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaistruct fpu32 {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai union { /* FPU floating point regs */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint32_t fpu_regs[32]; /* 32 singles */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai double fpu_dregs[16]; /* 16 doubles */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai } fpu_fr;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai caddr32_t fpu_q; /* ptr to array of FQ entries */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint32_t fpu_fsr; /* FPU status register */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint8_t fpu_qcnt; /* # of entries in saved FQ */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint8_t fpu_q_entrysize; /* # of bytes per FQ entry */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint8_t fpu_en; /* flag signifying fpu in use */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai};
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaitypedef struct fpu32 fpregset32_t;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* _SYSCALL32 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if defined(_KERNEL) || defined(_KMDB)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * The ABI uses struct fpu, so we use this to describe the kernel's view of the
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * fpu.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaitypedef struct {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai union _fpu_fr { /* V9 FPU floating point regs */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint32_t fpu_regs[32]; /* 32 singles */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint64_t fpu_dregs[32]; /* 32 doubles */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai long double fpu_qregs[16]; /* 16 quads */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai } fpu_fr;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint64_t fpu_fsr; /* FPU status register */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint32_t fpu_fprs; /* fprs register */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai struct fq *fpu_q;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint8_t fpu_qcnt;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint8_t fpu_q_entrysize;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint8_t fpu_en; /* flag signifying fpu in use */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai} kfpu_t;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* _KERNEL || _KMDB */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * The following structure is for associating extra register state with
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * the ucontext structure and is kept within the uc_mcontext filler area.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai *
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * If (xrs_id == XRS_ID) then the xrs_ptr field is a valid pointer to
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * extra register state. The exact format of the extra register state
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * pointed to by xrs_ptr is platform-dependent.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai *
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * Note: a platform may or may not manage extra register state.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaitypedef struct {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai unsigned int xrs_id; /* indicates xrs_ptr validity */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai caddr_t xrs_ptr; /* ptr to extra reg state */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai} xrs_t;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define XRS_ID 0x78727300 /* the string "xrs" */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if defined(_SYSCALL32)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaitypedef struct {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint32_t xrs_id; /* indicates xrs_ptr validity */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai caddr32_t xrs_ptr; /* ptr to extra reg state */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai} xrs32_t;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* _SYSCALL32 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if defined(__sparcv9)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * Ancillary State Registers
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai *
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * The SPARC V9 architecture defines 25 ASRs, numbered from 7 through 31.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * ASRs 16 through 31 are available to user programs, though the meaning
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * and content of these registers is implementation dependent.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaitypedef int64_t asrset_t[16]; /* %asr16 - > %asr31 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* __sparcv9 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * Structure mcontext defines the complete hardware machine state. If
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * the field `gwins' is non NULL, it points to a save area for register
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * window frames. If `gwins' is NULL, the register windows were saved
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * on the user's stack.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai *
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * The filler of 21 longs is historical (now filler[19] plus the xrs_t
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * field). The value was selected to provide binary compatibility with
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * statically linked ICL binaries. It is in the ABI (do not change). It
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * actually appears in the ABI as a single filler of 44 is in the field
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * uc_filler of struct ucontext. It is split here so that ucontext.h can
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * (hopefully) remain architecture independent.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai *
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * Note that 2 longs of the filler are used to hold extra register state info.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaitypedef struct {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai gregset_t gregs; /* general register set */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai gwindows_t *gwins; /* POSSIBLE pointer to register windows */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai fpregset_t fpregs; /* floating point register set */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai xrs_t xrs; /* POSSIBLE extra register state association */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if defined(__sparcv9)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai asrset_t asrs; /* ancillary registers */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai long filler[4]; /* room for expansion */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#else /* __sparcv9 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai long filler[19];
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* __sparcv9 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai} mcontext_t;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if defined(_SYSCALL32)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaitypedef struct {
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy gregset32_t gregs; /* general register set */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai caddr32_t gwins; /* POSSIBLE pointer to register windows */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai fpregset32_t fpregs; /* floating point register set */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai xrs32_t xrs; /* POSSIBLE extra register state association */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai int32_t filler[19];
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai} mcontext32_t;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* _SYSCALL32 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* !defined(_XPG4_2) || defined(__EXTENSIONS__) */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* _ASM */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * The version of privregs.h that is used on implementations that run
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * on processors that support the V9 instruction set is deliberately not
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * imported here.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai *
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * The V9 'struct regs' definition is -not- compatible with either 32-bit
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * or 64-bit core file contents, nor with the ucontext. As a result, the
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * 'regs' structure cannot be used portably by applications, and should
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * only be used by the kernel implementation.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai *
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * The inclusion of the SPARC V7 version of privregs.h allows for some
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * limited source compatibility with 32-bit applications who expect to use
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy * 'struct regs' to match the content of a 32-bit core file, or a ucontext_t.
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy *
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * Note that the ucontext_t actually describes the general registers in
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * terms of the gregset_t data type, as described in this file. Note also
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * that the core file content is defined by core(4) in terms of data types
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * defined by procfs -- see proc(4).
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if !defined(__sparcv9)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if !defined(_KERNEL) && !defined(_XPG4_2) || defined(__EXTENSIONS__)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#include <v7/sys/privregs.h>
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* !_KERNEL && !_XPG4_2 || __EXTENSIONS__ */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* __sparcv9 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * The following is here for XPG4.2 standards compliance.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * regset.h is included in ucontext.h for the definition of
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * mcontext_t, all of which breaks XPG4.2 namespace.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if defined(_XPG4_2) && !defined(__EXTENSIONS__)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * The following is here for UNIX 95 compliance (XPG Issue 4, Version 2
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * System Interfaces and Headers. The structures included here are identical
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * to those visible elsewhere in this header except that the structure
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * element names have been changed in accordance with the X/Open namespace
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * rules. Specifically, depending on the name and scope, the names have
0f83d385c54b2d67790eb5ee77344de60f0966c8Rishi Srivatsavai * been prepended with a single or double underscore (_ or __). See the
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * structure definitions in the non-X/Open namespace for more detailed
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * comments describing each of these structures.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#ifndef _ASM
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * The following structures define how a register window can appear on the
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * stack.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define _SPARC_MAXREGWINDOW 31 /* max windows in SPARC arch. */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaistruct __rwindow {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai greg_t __rw_local[8]; /* locals */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai greg_t __rw_in[8]; /* ins */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai};
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define __rw_fp __rw_in[6] /* frame pointer */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define __rw_rtn __rw_in[7] /* return address */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaistruct __gwindows {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai int __wbcnt;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai greg_t *__spbuf[_SPARC_MAXREGWINDOW];
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai struct __rwindow __wbuf[_SPARC_MAXREGWINDOW];
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai};
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaitypedef struct __gwindows gwindows_t;
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy/*
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy * The fq structure defines the minimal format of a floating point
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy * instruction queue entry.
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy */
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaistruct __fpq {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai unsigned int *__fpq_addr; /* address */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai unsigned int __fpq_instr; /* instruction */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai};
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaistruct __fq {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai union { /* FPU inst/addr queue */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai double __whole;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai struct __fpq __fpq;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai } _FQu;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai};
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * The fpu structure is the floating point processor state.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy/*
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy * The following #define's are obsolete and may be removed in a future release.
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy * The corresponding integer types should be used instead (i.e. uint64_t).
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy */
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#define _FPU_REGS_TYPE uint32_t
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#define _FPU_DREGS_TYPE uint64_t
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#define _V7_FPU_FSR_TYPE uint32_t
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#define _V9_FPU_FSR_TYPE uint64_t
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#define _V9_FPU_FPRS_TYPE uint32_t
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#if defined(__sparcv9)
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy/*
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy * SPARC Version 9 floating point
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaistruct __fpu {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai union { /* FPU floating point regs */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint32_t __fpu_regs[32]; /* 32 singles */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai double __fpu_dregs[32]; /* 32 doubles */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai long double __fpu_qregs[16]; /* 16 quads */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai } __fpu_fr;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai struct __fq *__fpu_q; /* ptr to array of FQ entries */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint64_t __fpu_fsr; /* FPU status register */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint8_t __fpu_qcnt; /* # of entries in saved FQ */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint8_t __fpu_q_entrysize; /* # of bytes per FQ entry */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint8_t __fpu_en; /* flag signifying fpu in use */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai};
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#else /* __sparcv9 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * SPARC Version 7 and 8 floating point
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaistruct __fpu {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai union { /* FPU floating point regs */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint32_t __fpu_regs[32]; /* 32 singles */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai double __fpu_dregs[16]; /* 16 doubles */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai } __fpu_fr;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai struct __fq *__fpu_q; /* ptr to array of FQ entries */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint32_t __fpu_fsr; /* FPU status register */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint8_t __fpu_qcnt; /* # of entries in saved FQ */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint8_t __fpu_q_entrysize; /* # of bytes per FQ entry */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai uint8_t __fpu_en; /* flag signifying fpu in use */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai};
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* __sparcv9 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaitypedef struct __fpu fpregset_t;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy * The xrs_t structure is for associating extra register state with
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy * the ucontext structure and is kept within the uc_mcontext filler area.
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy */
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roytypedef struct {
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy unsigned int __xrs_id; /* indicates xrs_ptr validity */
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy caddr_t __xrs_ptr; /* ptr to extra reg state */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai} xrs_t;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#define _XRS_ID 0x78727300 /* the string "xrs" */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if defined(__sparcv9)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * Ancillary State Registers
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai *
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * The SPARC V9 architecture defines 25 ASRs, numbered from 7 through 31.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * ASRs 16 through 31 are available to user programs, though the meaning
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * and content of these registers is implementation dependent.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaitypedef int64_t asrset_t[16]; /* %asr16 - > %asr31 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* __sparcv9 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai/*
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai * Structure mcontext defines the complete hardware machine state.
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavaitypedef struct {
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai gregset_t __gregs; /* general register set */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai gwindows_t *__gwins; /* POSSIBLE pointer to register windows */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai fpregset_t __fpregs; /* floating point register set */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai xrs_t __xrs; /* POSSIBLE extra register state association */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#if defined(__sparcv9)
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai asrset_t __asrs; /* ancillary registers */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai long __filler[4]; /* room for expansion */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#else /* __sparcv9 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai long __filler[19];
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* __sparcv9 */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai} mcontext_t;
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* _ASM */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* defined(_XPG4_2) && !defined(__EXTENSIONS__) */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy#ifdef __cplusplus
2b24ab6b3865caeede9eeb9db6b83e1d89dcd1eaSebastien Roy}
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai#endif /* _SYS_REGSET_H */
b509e89b2befbaa42939abad9da1d7f5a8c6aaaeRishi Srivatsavai