1 /****************************************************************************
2 
3 		THIS SOFTWARE IS NOT COPYRIGHTED
4 
5    HP offers the following for use in the public domain.  HP makes no
6    warranty with regard to the software or it's performance and the
7    user accepts the software "AS IS" with all faults.
8 
9    HP DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED, WITH REGARD
10    TO THIS SOFTWARE INCLUDING BUT NOT LIMITED TO THE WARRANTIES
11    OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
12 
13 ****************************************************************************/
14 
15 		/* Interrupt Vector Table entry macros */
16 
17 #define	cstring(Len,String)	.byte	Len !\
18 				.string	String
19 
20 #define	cstringz(Len,String)	.byte	Len !\
21 				.stringz	String
22 
23 AdvancePCOQ	.macro
24 	mtctl	%r0,%pcoq	; throw away iiaoq head pointer, tail->head
25 	mfctl	%pcoq,%r1	; get tail pointer
26 	mtctl	%r1,%pcoq	; insert tail pointer
27 	ldo	4(%r1),%r1	; advance tail pointer
28 	mtctl	%r1,%pcoq	; insert new tail pointer, former tail->head
29 	.endm
30 
31 #ifdef	PRINTSTRING_LED
32 PrintString	.macro	NString,Num
33 	bl	put_led,%mrp
34 	ldi	Num+0xa0,%arg2
35 	addil	L%NString-$global$,%dp
36 	bl	puts,%rp
37 	ldo	R%NString-$global$(%r1),%arg0
38 	b,n	.
39 	nop
40 	.endm
41 #endif
42 
43 #ifdef	HALT
44 
45 PrintString	.macro	NString,Num
46 	bl,n	save_state,%r25
47 	nop
48 	bl	print_intr,%rp
49 	ldi	NString-Str01,%arg0
50 	bl	print_state,%rp
51 	nop
52 	b,n	halt
53 	nop
54 	.endm
55 
56 #endif
57 
58 #ifdef	RECOVER
59 
60 PrintString	.macro	NString,Num
61 	bl,n	save_state,%r25
62 	nop
63 	bl	print_intr,%rp
64 	ldi	NString-Str01,%arg0
65 	bl	print_state,%rp
66 	nop
67 	b,n	recover
68 	nop
69 	.endm
70 
71 #endif
72 
73 PrintString	.macro	NString,Num
74 	bl,n	save_state,%r25
75 	nop
76 	bl	print_intr,%rp
77 	ldi	NString-Str01,%arg0
78 #ifdef	FULL_REPORT
79 	bl	print_state,%rp
80 #else
81 	nop
82 #endif
83 	nop
84 	b	restore_to_STUB
85         ldi     Num,%r1
86 	.endm
87 
88 
89 	/* IVA register array offets */
90 
91 #define	R_sr0		  0
92 #define	R_sr1		  4
93 #define	R_sr2		  8
94 #define	R_sr3		 12
95 #define	R_sr4		 16
96 #define	R_sr5		 20
97 #define	R_sr6		 24
98 #define	R_sr7		 28
99 
100 #define	R_gr0		 32
101 #define	R_gr1		 36
102 #define	R_gr2		 40
103 #define	R_gr3		 44
104 #define	R_gr4		 48
105 #define	R_gr5		 52
106 #define	R_gr6		 56
107 #define	R_gr7		 60
108 #define	R_gr8		 64
109 #define	R_gr9		 68
110 #define	R_gr10		 72
111 #define	R_gr11		 76
112 #define	R_gr12		 80
113 #define	R_gr13		 84
114 #define	R_gr14		 88
115 #define	R_gr15		 92
116 #define	R_gr16		 96
117 #define	R_gr17		100
118 #define	R_gr18		104
119 #define	R_gr19		108
120 #define	R_gr20		112
121 #define	R_gr21		116
122 #define	R_gr22		120
123 #define	R_gr23		124
124 #define	R_gr24		128
125 #define	R_gr25		132
126 #define	R_gr26		136
127 #define	R_gr27		140
128 #define	R_gr28		144
129 #define	R_gr29		148
130 #define	R_gr30		152
131 #define	R_gr31		156
132 
133 #define	R_rctr		160
134 #define	R_cpu0		164
135 #define	R_pidr1		168
136 #define	R_pidr2		172
137 #define	R_ccr		176
138 #define	R_sar		180
139 #define	R_pidr3		184
140 #define	R_pidr4		188
141 #define	R_iva		192
142 #define	R_eiem		196
143 
144 #define	R_itmr		200
145 #define	R_pcsqH		204
146 #define	R_pcoqH		208
147 #define	R_iir		212
148 #define	R_pcsqT		216
149 #define	R_pcoqT		220
150 #define	R_isr		224
151 #define	R_ior		228
152 #define	R_ipsw		232
153 #define	R_eirr		236
154 
155 #define	R_tr0		240
156 #define	R_tr1		244
157 #define	R_tr2		248
158 #define	R_tr3		252
159 #define	R_tr4		256
160 #define	R_tr5		260
161 #define	R_tr6		264
162 #define	R_tr7		268
163 
164 #define	R_SIZE		272
165