16fc729afSOlivier Houchard /* $NetBSD: mcontext.h,v 1.4 2003/10/08 22:43:01 thorpej Exp $ */ 26fc729afSOlivier Houchard 36fc729afSOlivier Houchard /*- 4*b61a5730SWarner Losh * SPDX-License-Identifier: BSD-2-Clause 5af3dc4a7SPedro F. Giffuni * 66fc729afSOlivier Houchard * Copyright (c) 2001, 2002 The NetBSD Foundation, Inc. 70aecb59bSDavid E. O'Brien * All rights reserved. 80aecb59bSDavid E. O'Brien * 96fc729afSOlivier Houchard * This code is derived from software contributed to The NetBSD Foundation 106fc729afSOlivier Houchard * by Klaus Klein and by Jason R. Thorpe of Wasabi Systems, Inc. 110aecb59bSDavid E. O'Brien * 120aecb59bSDavid E. O'Brien * Redistribution and use in source and binary forms, with or without 130aecb59bSDavid E. O'Brien * modification, are permitted provided that the following conditions 140aecb59bSDavid E. O'Brien * are met: 150aecb59bSDavid E. O'Brien * 1. Redistributions of source code must retain the above copyright 160aecb59bSDavid E. O'Brien * notice, this list of conditions and the following disclaimer. 170aecb59bSDavid E. O'Brien * 2. Redistributions in binary form must reproduce the above copyright 180aecb59bSDavid E. O'Brien * notice, this list of conditions and the following disclaimer in the 190aecb59bSDavid E. O'Brien * documentation and/or other materials provided with the distribution. 200aecb59bSDavid E. O'Brien * 216fc729afSOlivier Houchard * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 226fc729afSOlivier Houchard * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 236fc729afSOlivier Houchard * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 246fc729afSOlivier Houchard * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 256fc729afSOlivier Houchard * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 266fc729afSOlivier Houchard * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 276fc729afSOlivier Houchard * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 286fc729afSOlivier Houchard * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 296fc729afSOlivier Houchard * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 306fc729afSOlivier Houchard * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 316fc729afSOlivier Houchard * POSSIBILITY OF SUCH DAMAGE. 320aecb59bSDavid E. O'Brien */ 330aecb59bSDavid E. O'Brien 346fc729afSOlivier Houchard #ifndef _MACHINE_MCONTEXT_H_ 356fc729afSOlivier Houchard #define _MACHINE_MCONTEXT_H_ 360aecb59bSDavid E. O'Brien /* 376fc729afSOlivier Houchard * General register state 380aecb59bSDavid E. O'Brien */ 396fc729afSOlivier Houchard #define _NGREG 17 406fc729afSOlivier Houchard typedef unsigned int __greg_t; 416fc729afSOlivier Houchard typedef __greg_t __gregset_t[_NGREG]; 420aecb59bSDavid E. O'Brien 436fc729afSOlivier Houchard #define _REG_R0 0 446fc729afSOlivier Houchard #define _REG_R1 1 456fc729afSOlivier Houchard #define _REG_R2 2 466fc729afSOlivier Houchard #define _REG_R3 3 476fc729afSOlivier Houchard #define _REG_R4 4 486fc729afSOlivier Houchard #define _REG_R5 5 496fc729afSOlivier Houchard #define _REG_R6 6 506fc729afSOlivier Houchard #define _REG_R7 7 516fc729afSOlivier Houchard #define _REG_R8 8 526fc729afSOlivier Houchard #define _REG_R9 9 536fc729afSOlivier Houchard #define _REG_R10 10 546fc729afSOlivier Houchard #define _REG_R11 11 556fc729afSOlivier Houchard #define _REG_R12 12 566fc729afSOlivier Houchard #define _REG_R13 13 576fc729afSOlivier Houchard #define _REG_R14 14 586fc729afSOlivier Houchard #define _REG_R15 15 596fc729afSOlivier Houchard #define _REG_CPSR 16 606fc729afSOlivier Houchard /* Convenience synonyms */ 616fc729afSOlivier Houchard #define _REG_FP _REG_R11 626fc729afSOlivier Houchard #define _REG_SP _REG_R13 636fc729afSOlivier Houchard #define _REG_LR _REG_R14 646fc729afSOlivier Houchard #define _REG_PC _REG_R15 656fc729afSOlivier Houchard 666fc9f4dbSMichal Meloun /* 676fc9f4dbSMichal Meloun * Floating point register state 686fc9f4dbSMichal Meloun */ 696fc9f4dbSMichal Meloun typedef struct { 706fc9f4dbSMichal Meloun __uint64_t mcv_reg[32]; 716fc9f4dbSMichal Meloun __uint32_t mcv_fpscr; 726fc9f4dbSMichal Meloun } mcontext_vfp_t; 736fc9f4dbSMichal Meloun 746fc729afSOlivier Houchard typedef struct { 756fc729afSOlivier Houchard __gregset_t __gregs; 76dfe5f22fSMichal Meloun 77dfe5f22fSMichal Meloun /* 78dfe5f22fSMichal Meloun * Originally, rest of this structure was named __fpu, 35 * 4 bytes 79dfe5f22fSMichal Meloun * long, never accessed from kernel. 80dfe5f22fSMichal Meloun */ 81d6e4c56cSIan Lepore __size_t mc_vfp_size; 826fc9f4dbSMichal Meloun void *mc_vfp_ptr; 836fc9f4dbSMichal Meloun unsigned int mc_spare[33]; 840aecb59bSDavid E. O'Brien } mcontext_t; 850aecb59bSDavid E. O'Brien 866fc9f4dbSMichal Meloun #define UC_ 876fc729afSOlivier Houchard #endif /* !_MACHINE_MCONTEXT_H_ */ 88