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 * $FreeBSD$ 340aecb59bSDavid E. O'Brien */ 350aecb59bSDavid E. O'Brien 366fc729afSOlivier Houchard #ifndef _MACHINE_MCONTEXT_H_ 376fc729afSOlivier Houchard #define _MACHINE_MCONTEXT_H_ 380aecb59bSDavid E. O'Brien /* 396fc729afSOlivier Houchard * General register state 400aecb59bSDavid E. O'Brien */ 416fc729afSOlivier Houchard #define _NGREG 17 426fc729afSOlivier Houchard typedef unsigned int __greg_t; 436fc729afSOlivier Houchard typedef __greg_t __gregset_t[_NGREG]; 440aecb59bSDavid E. O'Brien 456fc729afSOlivier Houchard #define _REG_R0 0 466fc729afSOlivier Houchard #define _REG_R1 1 476fc729afSOlivier Houchard #define _REG_R2 2 486fc729afSOlivier Houchard #define _REG_R3 3 496fc729afSOlivier Houchard #define _REG_R4 4 506fc729afSOlivier Houchard #define _REG_R5 5 516fc729afSOlivier Houchard #define _REG_R6 6 526fc729afSOlivier Houchard #define _REG_R7 7 536fc729afSOlivier Houchard #define _REG_R8 8 546fc729afSOlivier Houchard #define _REG_R9 9 556fc729afSOlivier Houchard #define _REG_R10 10 566fc729afSOlivier Houchard #define _REG_R11 11 576fc729afSOlivier Houchard #define _REG_R12 12 586fc729afSOlivier Houchard #define _REG_R13 13 596fc729afSOlivier Houchard #define _REG_R14 14 606fc729afSOlivier Houchard #define _REG_R15 15 616fc729afSOlivier Houchard #define _REG_CPSR 16 626fc729afSOlivier Houchard /* Convenience synonyms */ 636fc729afSOlivier Houchard #define _REG_FP _REG_R11 646fc729afSOlivier Houchard #define _REG_SP _REG_R13 656fc729afSOlivier Houchard #define _REG_LR _REG_R14 666fc729afSOlivier Houchard #define _REG_PC _REG_R15 676fc729afSOlivier Houchard 686fc9f4dbSMichal Meloun /* 696fc9f4dbSMichal Meloun * Floating point register state 706fc9f4dbSMichal Meloun */ 716fc9f4dbSMichal Meloun typedef struct { 726fc9f4dbSMichal Meloun __uint64_t mcv_reg[32]; 736fc9f4dbSMichal Meloun __uint32_t mcv_fpscr; 746fc9f4dbSMichal Meloun } mcontext_vfp_t; 756fc9f4dbSMichal Meloun 766fc729afSOlivier Houchard typedef struct { 776fc729afSOlivier Houchard __gregset_t __gregs; 78dfe5f22fSMichal Meloun 79dfe5f22fSMichal Meloun /* 80dfe5f22fSMichal Meloun * Originally, rest of this structure was named __fpu, 35 * 4 bytes 81dfe5f22fSMichal Meloun * long, never accessed from kernel. 82dfe5f22fSMichal Meloun */ 83d6e4c56cSIan Lepore __size_t mc_vfp_size; 846fc9f4dbSMichal Meloun void *mc_vfp_ptr; 856fc9f4dbSMichal Meloun unsigned int mc_spare[33]; 860aecb59bSDavid E. O'Brien } mcontext_t; 870aecb59bSDavid E. O'Brien 886fc9f4dbSMichal Meloun #define UC_ 896fc729afSOlivier Houchard #endif /* !_MACHINE_MCONTEXT_H_ */ 90