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
16typedef void (*e_vector)(void);
17
18extern 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
84struct 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 */
151