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