trap.h revision 1.1.102.1 1 1.1 fredette /* $NetBSD: trap.h,v 1.1.102.1 2008/01/02 21:48:07 bouyer Exp $ */
2 1.1 fredette
3 1.1 fredette /* $OpenBSD: trap.h,v 1.8 2000/02/10 20:05:39 mickey Exp $ */
4 1.1 fredette
5 1.1 fredette /*
6 1.1 fredette * Copyright (c) 1999 Michael Shalayeff
7 1.1 fredette * All rights reserved.
8 1.1 fredette *
9 1.1 fredette * Redistribution and use in source and binary forms, with or without
10 1.1 fredette * modification, are permitted provided that the following conditions
11 1.1 fredette * are met:
12 1.1 fredette * 1. Redistributions of source code must retain the above copyright
13 1.1 fredette * notice, this list of conditions and the following disclaimer.
14 1.1 fredette * 2. Redistributions in binary form must reproduce the above copyright
15 1.1 fredette * notice, this list of conditions and the following disclaimer in the
16 1.1 fredette * documentation and/or other materials provided with the distribution.
17 1.1 fredette * 3. All advertising materials mentioning features or use of this software
18 1.1 fredette * must display the following acknowledgement:
19 1.1 fredette * This product includes software developed by Michael Shalayeff.
20 1.1 fredette * 4. The name of the author may not be used to endorse or promote products
21 1.1 fredette * derived from this software without specific prior written permission.
22 1.1 fredette *
23 1.1 fredette * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
24 1.1 fredette * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
25 1.1 fredette * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
26 1.1 fredette * IN NO EVENT SHALL THE AUTHOR OR HIS RELATIVES BE LIABLE FOR ANY DIRECT,
27 1.1 fredette * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
28 1.1 fredette * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
29 1.1 fredette * SERVICES; LOSS OF MIND, USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
30 1.1 fredette * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
31 1.1 fredette * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
32 1.1 fredette * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
33 1.1 fredette * THE POSSIBILITY OF SUCH DAMAGE.
34 1.1 fredette */
35 1.1 fredette
36 1.1 fredette #ifndef _HPPA_TRAP_H_
37 1.1 fredette #define _HPPA_TRAP_H_
38 1.1 fredette
39 1.1 fredette /*
40 1.1 fredette * This is PA-RISC trap types per 1.1 specs, see .c files for references.
41 1.1 fredette */
42 1.1 fredette #define T_NONEXIST 0 /* invalid interrupt vector */
43 1.1 fredette #define T_HPMC 1 /* high priority machine check */
44 1.1 fredette #define T_POWERFAIL 2 /* power failure */
45 1.1 fredette #define T_RECOVERY 3 /* recovery counter */
46 1.1 fredette #define T_INTERRUPT 4 /* external interrupt */
47 1.1 fredette #define T_LPMC 5 /* low-priority machine check */
48 1.1 fredette #define T_ITLBMISS 6 /* instruction TLB miss fault */
49 1.1 fredette #define T_IPROT 7 /* instruction protection */
50 1.1 fredette #define T_ILLEGAL 8 /* Illegal instruction */
51 1.1 fredette #define T_IBREAK 9 /* break instruction */
52 1.1 fredette #define T_PRIV_OP 10 /* privileged operation */
53 1.1 fredette #define T_PRIV_REG 11 /* privileged register */
54 1.1 fredette #define T_OVERFLOW 12 /* overflow */
55 1.1 fredette #define T_CONDITION 13 /* conditional */
56 1.1 fredette #define T_EXCEPTION 14 /* assist exception */
57 1.1 fredette #define T_DTLBMISS 15 /* data TLB miss */
58 1.1 fredette #define T_ITLBMISSNA 16 /* ITLB non-access miss */
59 1.1 fredette #define T_DTLBMISSNA 17 /* DTLB non-access miss */
60 1.1 fredette #define T_DPROT 18 /* data protection/rights/alignment <7100 */
61 1.1 fredette #define T_DBREAK 19 /* data break */
62 1.1 fredette #define T_TLB_DIRTY 20 /* TLB dirty bit */
63 1.1 fredette #define T_PAGEREF 21 /* page reference */
64 1.1 fredette #define T_EMULATION 22 /* assist emulation */
65 1.1 fredette #define T_HIGHERPL 23 /* higher-privelege transfer */
66 1.1 fredette #define T_LOWERPL 24 /* lower-privilege transfer */
67 1.1 fredette #define T_TAKENBR 25 /* taken branch */
68 1.1 fredette #define T_DATACC 26 /* data access rights >=7100 */
69 1.1 fredette #define T_DATAPID 27 /* data protection ID >=7100 */
70 1.1 fredette #define T_DATALIGN 28 /* unaligned data ref */
71 1.1.102.1 bouyer #define T_PERFMON 29 /* performance monitor interrupt */
72 1.1.102.1 bouyer #define T_IDEBUG 30 /* debug SFU interrupt */
73 1.1.102.1 bouyer #define T_DDEBUG 31 /* debug SFU interrupt */
74 1.1 fredette
75 1.1 fredette /*
76 1.1 fredette * Reserved range for traps is 0-63, place user flag at 6th bit
77 1.1 fredette */
78 1.1 fredette #define T_USER_POS 25
79 1.1 fredette #define T_USER (1 << (31 - T_USER_POS))
80 1.1 fredette
81 1.1 fredette /*
82 1.1 fredette * Various trap frame flags.
83 1.1 fredette */
84 1.1 fredette #define TFF_LAST_POS 0
85 1.1 fredette #define TFF_ITLB_POS 1
86 1.1 fredette #define TFF_SYS_POS 2
87 1.1 fredette #define TFF_INTR_POS 3
88 1.1 fredette
89 1.1 fredette #define TFF_LAST (1 << (31 - TFF_LAST_POS))
90 1.1 fredette #define TFF_ITLB (1 << (31 - TFF_ITLB_POS))
91 1.1 fredette #define TFF_SYS (1 << (31 - TFF_SYS_POS))
92 1.1 fredette #define TFF_INTR (1 << (31 - TFF_INTR_POS))
93 1.1 fredette
94 1.1 fredette /*
95 1.1 fredette * Define this for pretty printings of trapflags.
96 1.1 fredette */
97 1.1 fredette #define T_BITS "\020\07user\036intr\037itlb\040last"
98 1.1 fredette
99 1.1 fredette /*
100 1.1 fredette * These are break instruction entry points.
101 1.1 fredette */
102 1.1 fredette /* im5 */
103 1.1 fredette #define HPPA_BREAK_KERNEL 0
104 1.1 fredette /* im13 */
105 1.1.102.1 bouyer #define HPPA_BREAK_SS 4
106 1.1 fredette #define HPPA_BREAK_KGDB 5
107 1.1 fredette #define HPPA_BREAK_GET_PSW 9
108 1.1 fredette #define HPPA_BREAK_SET_PSW 10
109 1.1 fredette
110 1.1 fredette /*
111 1.1 fredette * break instruction decoding.
112 1.1 fredette */
113 1.1 fredette #define break5(i) ((i) & 0x1f)
114 1.1 fredette #define break13(i) (((i) >> 13) & 0x1fff)
115 1.1 fredette
116 1.1 fredette #endif /* _HPPA_TRAP_H_ */
117 1.1 fredette
118