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
9253266Smarius *    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$
3080708Sjake */
3180708Sjake
3282902Sjake#ifndef _MACHINE_UCONTEXT_H_
3380708Sjake#define	_MACHINE_UCONTEXT_H_
3480708Sjake
35105733Sjakestruct __mcontext {
36295561Skib	__uint64_t mc_global[8];
37295561Skib	__uint64_t mc_out[8];
38295561Skib	__uint64_t mc_local[8];
39295561Skib	__uint64_t mc_in[8];
40295561Skib	__uint32_t mc_fp[64];
41105733Sjake} __aligned(64);
4280708Sjake
43105733Sjaketypedef struct __mcontext mcontext_t;
44105733Sjake
45253266Smarius#define	_mc_flags	mc_global[0]
46253266Smarius#define	_mc_sp		mc_out[6]
47253266Smarius#define	_mc_fprs	mc_local[0]
48253266Smarius#define	_mc_fsr		mc_local[1]
49253266Smarius#define	_mc_gsr		mc_local[2]
50253266Smarius#define	_mc_tnpc	mc_in[0]
51253266Smarius#define	_mc_tpc		mc_in[1]
52253266Smarius#define	_mc_tstate	mc_in[2]
53253266Smarius#define	_mc_y		mc_in[4]
54253266Smarius#define	_mc_wstate	mc_in[5]
55105733Sjake
56105733Sjake#define	_MC_VERSION_SHIFT	0
57105733Sjake#define	_MC_VERSION_BITS	32
58105733Sjake#define	_MC_VERSION		1L
59105733Sjake
60105733Sjake#define	_MC_FLAGS_SHIFT		32
61105733Sjake#define	_MC_FLAGS_BITS		32
62105733Sjake#define	_MC_VOLUNTARY		((1L << 0) << _MC_FLAGS_SHIFT)
63105733Sjake
6480708Sjake#endif /* !_MACHINE_UCONTEXT_H_ */
65