Linux-2.6.12-rc2
[linux-flexiantxendom0-natty.git] / include / asm-m68knommu / traps.h
1 /*
2  *  linux/include/asm/traps.h
3  *
4  *  Copyright (C) 1993        Hamish Macdonald
5  *
6  * This file is subject to the terms and conditions of the GNU General Public
7  * License.  See the file COPYING in the main directory of this archive
8  * for more details.
9  */
10
11 #ifndef _M68KNOMMU_TRAPS_H
12 #define _M68KNOMMU_TRAPS_H
13
14 #ifndef __ASSEMBLY__
15
16 typedef void (*e_vector)(void);
17
18 extern e_vector vectors[];
19
20 #endif
21
22 #define VEC_BUSERR  (2)
23 #define VEC_ADDRERR (3)
24 #define VEC_ILLEGAL (4)
25 #define VEC_ZERODIV (5)
26 #define VEC_CHK     (6)
27 #define VEC_TRAP    (7)
28 #define VEC_PRIV    (8)
29 #define VEC_TRACE   (9)
30 #define VEC_LINE10  (10)
31 #define VEC_LINE11  (11)
32 #define VEC_RESV1   (12)
33 #define VEC_COPROC  (13)
34 #define VEC_FORMAT  (14)
35 #define VEC_UNINT   (15)
36 #define VEC_SPUR    (24)
37 #define VEC_INT1    (25)
38 #define VEC_INT2    (26)
39 #define VEC_INT3    (27)
40 #define VEC_INT4    (28)
41 #define VEC_INT5    (29)
42 #define VEC_INT6    (30)
43 #define VEC_INT7    (31)
44 #define VEC_SYS     (32)
45 #define VEC_TRAP1   (33)
46 #define VEC_TRAP2   (34)
47 #define VEC_TRAP3   (35)
48 #define VEC_TRAP4   (36)
49 #define VEC_TRAP5   (37)
50 #define VEC_TRAP6   (38)
51 #define VEC_TRAP7   (39)
52 #define VEC_TRAP8   (40)
53 #define VEC_TRAP9   (41)
54 #define VEC_TRAP10  (42)
55 #define VEC_TRAP11  (43)
56 #define VEC_TRAP12  (44)
57 #define VEC_TRAP13  (45)
58 #define VEC_TRAP14  (46)
59 #define VEC_TRAP15  (47)
60 #define VEC_FPBRUC  (48)
61 #define VEC_FPIR    (49)
62 #define VEC_FPDIVZ  (50)
63 #define VEC_FPUNDER (51)
64 #define VEC_FPOE    (52)
65 #define VEC_FPOVER  (53)
66 #define VEC_FPNAN   (54)
67 #define VEC_FPUNSUP (55)
68 #define VEC_UNIMPEA (60)
69 #define VEC_UNIMPII (61)
70 #define VEC_USER    (64)
71
72 #define VECOFF(vec) ((vec)<<2)
73
74 #ifndef __ASSEMBLY__
75
76 /* Status register bits */
77 #define PS_T  (0x8000)
78 #define PS_S  (0x2000)
79 #define PS_M  (0x1000)
80 #define PS_C  (0x0001)
81
82 /* structure for stack frames */
83
84 struct frame {
85     struct pt_regs ptregs;
86     union {
87             struct {
88                     unsigned long  iaddr;    /* instruction address */
89             } fmt2;
90             struct {
91                     unsigned long  effaddr;  /* effective address */
92             } fmt3;
93             struct {
94                     unsigned long  effaddr;  /* effective address */
95                     unsigned long  pc;       /* pc of faulted instr */
96             } fmt4;
97             struct {
98                     unsigned long  effaddr;  /* effective address */
99                     unsigned short ssw;      /* special status word */
100                     unsigned short wb3s;     /* write back 3 status */
101                     unsigned short wb2s;     /* write back 2 status */
102                     unsigned short wb1s;     /* write back 1 status */
103                     unsigned long  faddr;    /* fault address */
104                     unsigned long  wb3a;     /* write back 3 address */
105                     unsigned long  wb3d;     /* write back 3 data */
106                     unsigned long  wb2a;     /* write back 2 address */
107                     unsigned long  wb2d;     /* write back 2 data */
108                     unsigned long  wb1a;     /* write back 1 address */
109                     unsigned long  wb1dpd0;  /* write back 1 data/push data 0*/
110                     unsigned long  pd1;      /* push data 1*/
111                     unsigned long  pd2;      /* push data 2*/
112                     unsigned long  pd3;      /* push data 3*/
113             } fmt7;
114             struct {
115                     unsigned long  iaddr;    /* instruction address */
116                     unsigned short int1[4];  /* internal registers */
117             } fmt9;
118             struct {
119                     unsigned short int1;
120                     unsigned short ssw;      /* special status word */
121                     unsigned short isc;      /* instruction stage c */
122                     unsigned short isb;      /* instruction stage b */
123                     unsigned long  daddr;    /* data cycle fault address */
124                     unsigned short int2[2];
125                     unsigned long  dobuf;    /* data cycle output buffer */
126                     unsigned short int3[2];
127             } fmta;
128             struct {
129                     unsigned short int1;
130                     unsigned short ssw;     /* special status word */
131                     unsigned short isc;     /* instruction stage c */
132                     unsigned short isb;     /* instruction stage b */
133                     unsigned long  daddr;   /* data cycle fault address */
134                     unsigned short int2[2];
135                     unsigned long  dobuf;   /* data cycle output buffer */
136                     unsigned short int3[4];
137                     unsigned long  baddr;   /* stage B address */
138                     unsigned short int4[2];
139                     unsigned long  dibuf;   /* data cycle input buffer */
140                     unsigned short int5[3];
141                     unsigned       ver : 4; /* stack frame version # */
142                     unsigned       int6:12;
143                     unsigned short int7[18];
144             } fmtb;
145     } un;
146 };
147
148 #endif /* __ASSEMBLY__ */
149
150 #endif /* _M68KNOMMU_TRAPS_H */