[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/arm/include/frame.h

Version: -  FREEBSD  -  FREEBSD7  -  FREEBSD71  -  FREEBSD70  -  FREEBSD6  -  FREEBSD64  -  FREEBSD63  -  FREEBSD62  -  FREEBSD61  -  FREEBSD60  -  FREEBSD5  -  FREEBSD55  -  FREEBSD54  -  FREEBSD53  -  FREEBSD52  -  FREEBSD51  -  FREEBSD50  -  FREEBSD4  -  FREEBSD3  -  FREEBSD22  -  linux-2.6  -  linux-2.4.22  -  MK83  -  MK84  -  PLAN9  -  DFBSD  -  NETBSD  -  NETBSD5  -  NETBSD4  -  NETBSD3  -  NETBSD20  -  OPENBSD  -  xnu-517  -  xnu-792  -  xnu-792.6.70  -  xnu-1228  -  OPENSOLARIS  -  minix-3-1-1  -  TRUSTEDBSD-SEBSD  -  FREEBSD-LIBC  -  FREEBSD7-LIBC  -  FREEBSD6-LIBC  -  GLIBC27 
SearchContext: -  none  -  excerpts  -  bigexcerpts 

  1 /*      $NetBSD: frame.h,v 1.5 2002/10/19 00:10:54 bjh21 Exp $  */
  2 
  3 /*-
  4  * Copyright (c) 1994-1997 Mark Brinicombe.
  5  * Copyright (c) 1994 Brini.
  6  * All rights reserved.
  7  *
  8  * This code is derived from software written for Brini by Mark Brinicombe
  9  *
 10  * Redistribution and use in source and binary forms, with or without
 11  * modification, are permitted provided that the following conditions
 12  * are met:
 13  * 1. Redistributions of source code must retain the above copyright
 14  *    notice, this list of conditions and the following disclaimer.
 15  * 2. Redistributions in binary form must reproduce the above copyright
 16  *    notice, this list of conditions and the following disclaimer in the
 17  *    documentation and/or other materials provided with the distribution.
 18  * 3. All advertising materials mentioning features or use of this software
 19  *    must display the following acknowledgement:
 20  *      This product includes software developed by Brini.
 21  * 4. The name of the company nor the name of the author may be used to
 22  *    endorse or promote products derived from this software without specific
 23  *    prior written permission.
 24  *
 25  * THIS SOFTWARE IS PROVIDED BY BRINI ``AS IS'' AND ANY EXPRESS OR IMPLIED
 26  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 27  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 28  * IN NO EVENT SHALL BRINI OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
 29  * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 30  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 31  * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
 32  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 33  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 34  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 35  * SUCH DAMAGE.
 36  *
 37  * RiscBSD kernel project
 38  *
 39  * frame.h
 40  *
 41  * Stack frames structures
 42  *
 43  * Created      : 30/09/94
 44  *
 45  * $FreeBSD: src/sys/arm/include/frame.h,v 1.4 2005/12/22 22:16:06 jhb Exp $
 46  *
 47  */
 48 
 49 #ifndef _MACHINE_FRAME_H_
 50 #define _MACHINE_FRAME_H_
 51 
 52 #ifndef _LOCORE
 53 
 54 #include <sys/signal.h>
 55 #include <sys/ucontext.h>
 56 
 57 
 58 /*
 59  * Trap frame.  Pushed onto the kernel stack on a trap (synchronous exception).
 60  */
 61 
 62 typedef struct trapframe {
 63         register_t tf_spsr; /* Zero on arm26 */
 64         register_t tf_r0;
 65         register_t tf_r1;
 66         register_t tf_r2;
 67         register_t tf_r3;
 68         register_t tf_r4;
 69         register_t tf_r5;
 70         register_t tf_r6;
 71         register_t tf_r7;
 72         register_t tf_r8;
 73         register_t tf_r9;
 74         register_t tf_r10;
 75         register_t tf_r11;
 76         register_t tf_r12;
 77         register_t tf_usr_sp;
 78         register_t tf_usr_lr;
 79         register_t tf_svc_sp; /* Not used on arm26 */
 80         register_t tf_svc_lr; /* Not used on arm26 */
 81         register_t tf_pc;
 82 } trapframe_t;
 83 
 84 /* Register numbers */
 85 #define tf_r13 tf_usr_sp
 86 #define tf_r14 tf_usr_lr
 87 #define tf_r15 tf_pc
 88 /*
 89  *  * Scheduler activations upcall frame.  Pushed onto user stack before
 90  *   * calling an SA upcall.
 91  *    */
 92 
 93 struct saframe {
 94 #if 0 /* in registers on entry to upcall */
 95         int             sa_type;
 96         struct sa_t **  sa_sas;
 97         int             sa_events;
 98         int             sa_interrupted;
 99 #endif
100         void *          sa_arg;
101 };
102 
103 /*
104  *  * Signal frame.  Pushed onto user stack before calling sigcode.
105  *   */
106 
107 /* the pointers are use in the trampoline code to locate the ucontext */
108 struct sigframe {
109         siginfo_t       sf_si;          /* actual saved siginfo */
110         ucontext_t      sf_uc;          /* actual saved ucontext */
111 };
112 
113 /*
114  * System stack frames.
115  */
116 
117 
118 typedef struct irqframe {
119         unsigned int if_spsr;
120         unsigned int if_r0;
121         unsigned int if_r1;
122         unsigned int if_r2;
123         unsigned int if_r3;
124         unsigned int if_r4;
125         unsigned int if_r5;
126         unsigned int if_r6;
127         unsigned int if_r7;
128         unsigned int if_r8;
129         unsigned int if_r9;
130         unsigned int if_r10;
131         unsigned int if_r11;
132         unsigned int if_r12;
133         unsigned int if_usr_sp;
134         unsigned int if_usr_lr;
135         unsigned int if_svc_sp;
136         unsigned int if_svc_lr;
137         unsigned int if_pc;
138 } irqframe_t;
139 
140 /*
141  * Switch frame
142  */
143 
144 struct switchframe {
145         u_int   sf_r4;
146         u_int   sf_r5;
147         u_int   sf_r6;
148         u_int   sf_r7;
149         u_int   sf_pc;
150 };
151  
152 /*
153  * Stack frame. Used during stack traces (db_trace.c)
154  */
155 struct frame {
156         u_int   fr_fp;
157         u_int   fr_sp;
158         u_int   fr_lr;
159         u_int   fr_pc;
160 };
161 
162 #endif /* !_LOCORE */
163 
164 #endif /* _MACHINE_FRAME_H_ */
165   
166 /* End of frame.h */
167 

Cache object: c17e1811a788d000d3621e0e89b0296a


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.