1178172Simp/* $OpenBSD: frame.h,v 1.3 1998/09/15 10:50:12 pefo Exp $ */ 2178172Simp 3178172Simp/*- 4178172Simp * Copyright (c) 1998 Per Fogelstrom, Opsycon AB 5178172Simp * 6178172Simp * Redistribution and use in source and binary forms, with or without 7178172Simp * modification, are permitted provided that the following conditions 8178172Simp * are met: 9178172Simp * 1. Redistributions of source code must retain the above copyright 10178172Simp * notice, this list of conditions and the following disclaimer. 11178172Simp * 2. Redistributions in binary form must reproduce the above copyright 12178172Simp * notice, this list of conditions and the following disclaimer in the 13178172Simp * documentation and/or other materials provided with the distribution. 14178172Simp * 3. All advertising materials mentioning features or use of this software 15178172Simp * must display the following acknowledgement: 16178172Simp * This product includes software developed under OpenBSD by 17178172Simp * Per Fogelstrom, Opsycon AB, Sweden. 18178172Simp * 4. The name of the author may not be used to endorse or promote products 19178172Simp * derived from this software without specific prior written permission. 20178172Simp * 21178172Simp * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS 22178172Simp * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED 23178172Simp * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24178172Simp * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY 25178172Simp * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 26178172Simp * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 27178172Simp * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 28178172Simp * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 29178172Simp * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 30178172Simp * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 31178172Simp * SUCH DAMAGE. 32178172Simp * 33178172Simp * JNPR: frame.h,v 1.6.2.1 2007/09/10 08:14:57 girish 34178172Simp * $FreeBSD$ 35178172Simp * 36178172Simp */ 37178172Simp#ifndef _MACHINE_FRAME_H_ 38178172Simp#define _MACHINE_FRAME_H_ 39178172Simp 40178172Simpstruct trapframe { 41178172Simp register_t zero; 42178172Simp register_t ast; 43178172Simp register_t v0; 44178172Simp register_t v1; 45178172Simp register_t a0; 46178172Simp register_t a1; 47178172Simp register_t a2; 48178172Simp register_t a3; 49178172Simp register_t t0; 50178172Simp register_t t1; 51178172Simp register_t t2; 52178172Simp register_t t3; 53178172Simp register_t t4; 54178172Simp register_t t5; 55178172Simp register_t t6; 56178172Simp register_t t7; 57178172Simp register_t s0; 58178172Simp register_t s1; 59178172Simp register_t s2; 60178172Simp register_t s3; 61178172Simp register_t s4; 62178172Simp register_t s5; 63178172Simp register_t s6; 64178172Simp register_t s7; 65178172Simp register_t t8; 66178172Simp register_t t9; 67178172Simp register_t k0; 68178172Simp register_t k1; 69178172Simp register_t gp; 70178172Simp register_t sp; 71178172Simp register_t s8; 72178172Simp register_t ra; 73178172Simp register_t sr; 74178172Simp register_t mullo; 75178172Simp register_t mulhi; 76178172Simp register_t badvaddr; 77178172Simp register_t cause; 78178172Simp register_t pc; 79178172Simp /* 80178172Simp * FREEBSD_DEVELOPERS_FIXME: 81178172Simp * Include any other registers which are CPU-Specific and 82178172Simp * need to be part of the frame here. 83178172Simp * 84178172Simp * Also, be sure this matches what is defined in regnum.h 85178172Simp */ 86178172Simp register_t ic; /* RM7k and RM9k specific */ 87178172Simp register_t dummy; /* Alignment for 32-bit case */ 88178172Simp 89178172Simp/* From here and on, only saved user processes. */ 90178172Simp 91178172Simp f_register_t f0; 92178172Simp f_register_t f1; 93178172Simp f_register_t f2; 94178172Simp f_register_t f3; 95178172Simp f_register_t f4; 96178172Simp f_register_t f5; 97178172Simp f_register_t f6; 98178172Simp f_register_t f7; 99178172Simp f_register_t f8; 100178172Simp f_register_t f9; 101178172Simp f_register_t f10; 102178172Simp f_register_t f11; 103178172Simp f_register_t f12; 104178172Simp f_register_t f13; 105178172Simp f_register_t f14; 106178172Simp f_register_t f15; 107178172Simp f_register_t f16; 108178172Simp f_register_t f17; 109178172Simp f_register_t f18; 110178172Simp f_register_t f19; 111178172Simp f_register_t f20; 112178172Simp f_register_t f21; 113178172Simp f_register_t f22; 114178172Simp f_register_t f23; 115178172Simp f_register_t f24; 116178172Simp f_register_t f25; 117178172Simp f_register_t f26; 118178172Simp f_register_t f27; 119178172Simp f_register_t f28; 120178172Simp f_register_t f29; 121178172Simp f_register_t f30; 122178172Simp f_register_t f31; 123178172Simp register_t fsr; 124178172Simp register_t fdummy; 125178172Simp /* 126178172Simp * COP2 registers may need to be saved here based on the CPU, and those 127178172Simp * might need to be per process, or even for the kernel, so we need 128178172Simp * some thought here. 129178172Simp */ 130178172Simp}; 131178172Simp 132178172Simp/* REVISIT */ 133188627Simpstruct frame *get_current_fp(void); 134178172Simp#define get_next_fp(fp) (0) 135178172Simp#define get_return_ptr(fp) (0) 136178172Simpvoid get_stack_trace(u_int32_t depth, u_int32_t *trace); 137178172Simp 138178172Simp#endif /* !_MACHINE_FRAME_H_ */ 139