ucontext.h revision 105733
180708Sjake/*-
282902Sjake * Copyright (c) 1999 Marcel Moolenaar
380708Sjake * All rights reserved.
480708Sjake *
580708Sjake * Redistribution and use in source and binary forms, with or without
680708Sjake * modification, are permitted provided that the following conditions
780708Sjake * are met:
880708Sjake * 1. Redistributions of source code must retain the above copyright
982902Sjake *    notice, this list of conditions and the following disclaimer
1082902Sjake *    in this position and unchanged.
1180708Sjake * 2. Redistributions in binary form must reproduce the above copyright
1280708Sjake *    notice, this list of conditions and the following disclaimer in the
1380708Sjake *    documentation and/or other materials provided with the distribution.
1482902Sjake * 3. The name of the author may not be used to endorse or promote products
1582902Sjake *    derived from this software without specific prior written permission.
1680708Sjake *
1782902Sjake * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
1882902Sjake * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
1982902Sjake * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
2082902Sjake * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
2182902Sjake * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
2282902Sjake * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
2382902Sjake * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
2482902Sjake * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2582902Sjake * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
2682902Sjake * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
2780708Sjake *
2882902Sjake *	from: FreeBSD: src/sys/alpha/include/ucontext.h,v 1.3 1999/10/08
2980708Sjake * $FreeBSD: head/sys/sparc64/include/ucontext.h 105733 2002-10-22 18:03:15Z jake $
3080708Sjake */
3180708Sjake
3282902Sjake#ifndef _MACHINE_UCONTEXT_H_
3380708Sjake#define	_MACHINE_UCONTEXT_H_
3480708Sjake
35105733Sjakestruct __mcontext {
36105733Sjake	uint64_t mc_global[8];
37105733Sjake	uint64_t mc_out[8];
38105733Sjake	uint64_t mc_local[8];
39105733Sjake	uint64_t mc_in[8];
40105733Sjake	uint32_t mc_fp[64];
41105733Sjake} __aligned(64);
4280708Sjake
43105733Sjaketypedef struct __mcontext mcontext_t;
44105733Sjake
45105733Sjake#define	mc_flags	mc_global[0]
46105733Sjake#define	mc_sp           mc_out[6]
47105733Sjake#define	mc_fprs         mc_local[0]
48105733Sjake#define	mc_fsr		mc_local[1]
49105733Sjake#define	mc_gsr		mc_local[2]
50105733Sjake#define	mc_tnpc         mc_in[0]
51105733Sjake#define	mc_tpc          mc_in[1]
52105733Sjake#define	mc_tstate       mc_in[2]
53105733Sjake#define	mc_y            mc_in[4]
54105733Sjake
55105733Sjake#define	_MC_VERSION_SHIFT	0
56105733Sjake#define	_MC_VERSION_BITS	32
57105733Sjake#define	_MC_VERSION		1L
58105733Sjake
59105733Sjake#define	_MC_FLAGS_SHIFT		32
60105733Sjake#define	_MC_FLAGS_BITS		32
61105733Sjake#define	_MC_VOLUNTARY		((1L << 0) << _MC_FLAGS_SHIFT)
62105733Sjake
6380708Sjake#endif /* !_MACHINE_UCONTEXT_H_ */
64