1 /*- 2 * SPDX-License-Identifier: BSD-4-Clause 3 * 4 * Copyright (C) 1995, 1996 Wolfgang Solfrank. 5 * Copyright (C) 1995, 1996 TooLs GmbH. 6 * All rights reserved. 7 * 8 * Redistribution and use in source and binary forms, with or without 9 * modification, are permitted provided that the following conditions 10 * are met: 11 * 1. Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * 2. Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in the 15 * documentation and/or other materials provided with the distribution. 16 * 3. All advertising materials mentioning features or use of this software 17 * must display the following acknowledgement: 18 * This product includes software developed by TooLs GmbH. 19 * 4. The name of TooLs GmbH may not be used to endorse or promote products 20 * derived from this software without specific prior written permission. 21 * 22 * THIS SOFTWARE IS PROVIDED BY TOOLS GMBH ``AS IS'' AND ANY EXPRESS OR 23 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 24 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 25 * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 26 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 27 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 28 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 29 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 30 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 31 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32 * 33 * $NetBSD: frame.h,v 1.2 1999/01/10 10:13:15 tsubai Exp $ 34 * $FreeBSD$ 35 */ 36 37 #ifndef _MACHINE_FRAME_H_ 38 #define _MACHINE_FRAME_H_ 39 40 #include <sys/types.h> 41 42 /* 43 * We have to save all registers on every trap, because 44 * 1. user could attach this process every time 45 * 2. we must be able to restore all user registers in case of fork 46 * Actually, we do not save the fp registers on trap, since 47 * these are not used by the kernel. They are saved only when switching 48 * between processes using the FPU. 49 * 50 * Change ordering to cluster together these register_t's. XXX 51 */ 52 struct trapframe { 53 register_t fixreg[32]; 54 register_t lr; 55 register_t cr; 56 register_t xer; 57 register_t ctr; 58 register_t srr0; 59 register_t srr1; 60 register_t exc; 61 register_t dar; /* DAR/DEAR filled in on DSI traps */ 62 union { 63 struct { 64 /* dsisr only filled on a DSI trap */ 65 register_t dsisr; 66 } aim; 67 struct { 68 register_t esr; 69 register_t dbcr0; 70 } booke; 71 } cpu; 72 }; 73 74 /* 75 * FRAMELEN is the size of the stack region used by the low-level trap 76 * handler. It is the size of its data (trapframe) plus the callframe 77 * header (sizeof(struct callframe) - 3 register widths). It must also 78 * be 16-byte aligned. 79 */ 80 #define FRAMELEN roundup(sizeof(struct trapframe) + \ 81 sizeof(struct callframe) - 3*sizeof(register_t), 16) 82 #define trapframe(td) ((td)->td_frame) 83 84 /* 85 * Call frame for PowerPC used during fork. 86 */ 87 #ifdef __powerpc64__ 88 struct callframe { 89 register_t cf_dummy_fp; /* dummy frame pointer */ 90 register_t cf_cr; 91 register_t cf_lr; 92 register_t cf_compiler; 93 register_t cf_linkeditor; 94 register_t cf_toc; 95 register_t cf_func; 96 register_t cf_arg0; 97 register_t cf_arg1; 98 register_t _padding; /* Maintain 16-byte alignment */ 99 }; 100 #else 101 struct callframe { 102 register_t cf_dummy_fp; /* dummy frame pointer */ 103 register_t cf_lr; /* space for link register save */ 104 register_t cf_func; 105 register_t cf_arg0; 106 register_t cf_arg1; 107 register_t _padding; /* Maintain 16-byte alignment */ 108 }; 109 #endif 110 111 /* Definitions for syscalls */ 112 #define FIRSTARG 3 /* first arg in reg 3 */ 113 #define NARGREG 8 /* 8 args in regs */ 114 115 #endif /* _MACHINE_FRAME_H_ */ 116