1/*	$NetBSD: frame.h,v 1.3 2005/12/11 12:16:04 christos Exp $	*/
2
3/*
4 * Copyright (c) 1999 Ben Harris.
5 * Copyright (c) 1994-1997 Mark Brinicombe.
6 * Copyright (c) 1994 Brini.
7 * All rights reserved.
8 *
9 * This code is derived from software written for Brini by Mark Brinicombe
10 *
11 * Redistribution and use in source and binary forms, with or without
12 * modification, are permitted provided that the following conditions
13 * are met:
14 * 1. Redistributions of source code must retain the above copyright
15 *    notice, this list of conditions and the following disclaimer.
16 * 2. Redistributions in binary form must reproduce the above copyright
17 *    notice, this list of conditions and the following disclaimer in the
18 *    documentation and/or other materials provided with the distribution.
19 * 3. All advertising materials mentioning features or use of this software
20 *    must display the following acknowledgement:
21 *	This product includes software developed by Brini.
22 * 4. The name of the company nor the name of the author may be used to
23 *    endorse or promote products derived from this software without specific
24 *    prior written permission.
25 *
26 * THIS SOFTWARE IS PROVIDED BY BRINI ``AS IS'' AND ANY EXPRESS OR IMPLIED
27 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
28 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
29 * IN NO EVENT SHALL BRINI OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
30 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
31 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
32 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * SUCH DAMAGE.
37 */
38/*
39 * frame.h - Stack frames structures
40 */
41
42#ifndef _ARM26_FRAME_H_
43#define _ARM26_FRAME_H_
44
45#include <arm/frame.h>
46
47#ifndef _LOCORE
48
49#include <arm/armreg.h>
50
51/*
52 * System stack frames.
53 */
54
55/*
56 * irqframes just contain registers that APCS specifies the callee
57 * need not preserve.
58 */
59typedef struct irqframe {
60	union {
61		struct {
62			register_t if_r0;
63			register_t if_r1;
64			register_t if_r2;
65			register_t if_r3;
66			register_t if_r12;
67			register_t if_r14;
68		} svc;
69		struct {
70			register_t if_r0;
71			register_t if_r1;
72			register_t if_r2;
73			register_t if_r3;
74			register_t if_r11;
75			register_t if_r12;
76		} usr;
77	} if_mode;
78	register_t if_r15; /* Must be fixed so we know which branch to use */
79} irqframe_t;
80
81struct clockframe {
82	struct irqframe cf_if;
83};
84
85/*
86 * Switch frame
87 */
88
89struct switchframe {
90	register_t	sf_r4;  /* Callee-saved registers */
91	register_t	sf_r5;
92	register_t	sf_r6;
93	register_t	sf_r7;
94	register_t	sf_r8;
95	register_t	sf_r9;
96	register_t	sf_r10;
97	register_t	sf_r11; /* Frame pointer */
98	register_t	sf_r13; /* Stack pointer */
99	register_t	sf_pc;  /* Return address */
100};
101
102/*
103 * Floating-point frame.  Stores the state of the FPU.
104 */
105
106struct fpframe {
107	register_t	ff_fpsr;
108	register_t	ff_regs[8*3];
109};
110
111#endif /* _LOCORE */
112
113#endif /* _ARM26_FRAME_H_ */
114
115/* End of frame.h */
116