1//Original:/proj/frio/dv/testcases/lmu/lmu_cplb_multiple0/lmu_cplb_multiple0.dsp
2// Description: Multiple CPLB Hit exceptions
3# mach: bfin
4# sim: --environment operating
5
6#include "test.h"
7.include "testutils.inc"
8start
9
10include(selfcheck.inc)
11include(std.inc)
12include(mmrs.inc)
13
14//-------------------------------------
15
16// Test LMU/CPLB exceptions
17
18// Basic outline:
19//   Set exception handler
20//   program CPLB Entries
21//   Enable CPLB in DMEM_CNTL
22//   perform access
23//   verify exception occurred
24
25CHECK_INIT(p5, 0xEFFFFFFC);
26
27//-------------------------
28// Zero the CPLB Address and Data regs.
29
30	LD32(p0, DCPLB_ADDR0);
31	R0 = 0;
32	[ P0 ++ ] = R0;	// 0
33	[ P0 ++ ] = R0;	// 1
34	[ P0 ++ ] = R0;	// 2
35	[ P0 ++ ] = R0;	// 3
36	[ P0 ++ ] = R0;	// 4
37	[ P0 ++ ] = R0;	// 5
38	[ P0 ++ ] = R0;	// 6
39	[ P0 ++ ] = R0;	// 7
40	[ P0 ++ ] = R0;	// 8
41	[ P0 ++ ] = R0;	// 9
42	[ P0 ++ ] = R0;	// 10
43	[ P0 ++ ] = R0;	// 11
44	[ P0 ++ ] = R0;	// 12
45	[ P0 ++ ] = R0;	// 13
46	[ P0 ++ ] = R0;	// 14
47	[ P0 ++ ] = R0;	// 15
48
49	LD32(p0, DCPLB_DATA0);
50	[ P0 ++ ] = R0;	// 0
51	[ P0 ++ ] = R0;	// 1
52	[ P0 ++ ] = R0;	// 2
53	[ P0 ++ ] = R0;	// 3
54	[ P0 ++ ] = R0;	// 4
55	[ P0 ++ ] = R0;	// 5
56	[ P0 ++ ] = R0;	// 6
57	[ P0 ++ ] = R0;	// 7
58	[ P0 ++ ] = R0;	// 8
59	[ P0 ++ ] = R0;	// 9
60	[ P0 ++ ] = R0;	// 10
61	[ P0 ++ ] = R0;	// 11
62	[ P0 ++ ] = R0;	// 12
63	[ P0 ++ ] = R0;	// 13
64	[ P0 ++ ] = R0;	// 14
65	[ P0 ++ ] = R0;	// 15
66
67	// Now set the CPLB entries we will need
68
69
70
71
72	// Data area for the desired error
73	WR_MMR(DCPLB_ADDR0,  0x10000000, p0, r0);
74	WR_MMR(DCPLB_ADDR1,  0x10000000, p0, r0);
75	WR_MMR(DCPLB_ADDR2,  0x10000000, p0, r0);
76	WR_MMR(DCPLB_ADDR3,  0x10000000, p0, r0);
77	WR_MMR(DCPLB_ADDR4,  0x10000000, p0, r0);
78	WR_MMR(DCPLB_ADDR5,  0x10000000, p0, r0);
79	WR_MMR(DCPLB_ADDR6,  0x10000000, p0, r0);
80	WR_MMR(DCPLB_ADDR7,  0x10000000, p0, r0);
81	WR_MMR(DCPLB_ADDR8,  0x10000000, p0, r0);
82	WR_MMR(DCPLB_ADDR9,  0x10000000, p0, r0);
83	WR_MMR(DCPLB_ADDR10, 0x10000000, p0, r0);
84	WR_MMR(DCPLB_ADDR11, 0x10000000, p0, r0);
85	WR_MMR(DCPLB_ADDR12, 0x10000000, p0, r0);
86	WR_MMR(DCPLB_ADDR13, 0x10000000, p0, r0);
87	WR_MMR(DCPLB_ADDR14, 0x10000000, p0, r0);
88
89	//  MMR space
90	WR_MMR(DCPLB_ADDR15, 0xFFC00000, p0, r0);
91	WR_MMR(DCPLB_DATA15, PAGE_SIZE_4M|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR, p0, r0);
92
93	// setup interrupt controller with exception handler address
94	WR_MMR_LABEL(EVT3,  handler, p0, r1);
95	WR_MMR_LABEL(EVT15, int_15, p0, r1);
96	WR_MMR(EVT_IMASK, 0xFFFFFFFF, p0, r0);
97	WR_MMR(EVT_OVERRIDE, 0x00000000, p0, r0);
98	CSYNC;
99
100	// go to user mode. and enable exceptions
101	LD32_LABEL(r0, User);
102	RETI = R0;
103
104	// But first raise interrupt 15 so we can do one test
105	// in supervisor mode.
106	RAISE 15;
107	NOP;
108
109	RTI;
110
111	// Nops to work around ICache bug
112	NOP;NOP;NOP;NOP;NOP;
113	NOP;NOP;NOP;NOP;NOP;
114
115handler:
116	// generic protection exception handler
117	// Inputs:
118	//	p2:	addr of CPLB entry to be modified	( current test)
119	//
120	// Outputs:
121	//	r4:	SEQSTAT
122	//	r5:	DCPLB_FAULT_ADDR
123	//	r6:	DCPLB_STATUS
124	//	r7:	RETX	(instruction addr where exception occurred)
125
126
127	R4 = SEQSTAT;	// Get exception cause
128	R4 <<= 24;	// Clear HWERRCAUSE + SFTRESET
129	R4 >>= 24;
130
131	// read data addr which caused exception
132	RD_MMR(DCPLB_FAULT_ADDR, p0, r5);
133
134	RD_MMR(DCPLB_STATUS, p0, r6);
135
136	R7 = RETX;	// get address of excepting instruction
137
138	// disable the offending CPLB entries
139	R2 = 0;
140	[ P2 ] = R2;
141
142	CSYNC;
143
144	// return from exception and re-execute offending instruction
145	RTX;
146
147	// Nops to work around ICache bug
148	NOP;NOP;NOP;NOP;NOP;
149	NOP;NOP;NOP;NOP;NOP;
150
151
152int_15:
153	// Interrupt 15 handler - test will run in supervisor mode
154
155	//-------------------------------------------------------
156	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
157
158	WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
159	WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
160	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
161	CSYNC;
162
163	LD32(i1, 0x10000000);
164	R1 = 0x41C6 (Z);
165	LD32(p2, DCPLB_DATA1);
166
167X0_1:	[ I1 ] = R1;		// Exception should occur here
168
169	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
170	CSYNC;
171	WR_MMR(DCPLB_DATA0, 0, p0, r0);
172
173	// Now check that handler read correct values
174	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
175	CHECKREG(r5, 0x10000000);
176	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB1));
177	CHECKREG_SYM(r7, X0_1, r0);		// RETX should be value of X0_1	(HARDCODED ADDR!!)
178
179	//-------------------------------------------------------
180	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
181
182	WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
183	WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
184	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
185	CSYNC;
186
187	LD32(i1, 0x10000000);
188	R1 = 0x167E (Z);
189	LD32(p2, DCPLB_DATA2);
190
191X0_2:	[ I1 ] = R1;		// Exception should occur here
192
193	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
194	CSYNC;
195	WR_MMR(DCPLB_DATA0, 0, p0, r0);
196
197	// Now check that handler read correct values
198	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
199	CHECKREG(r5, 0x10000000);
200	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB2));
201	CHECKREG_SYM(r7, X0_2, r0);		// RETX should be value of X0_2	(HARDCODED ADDR!!)
202
203	//-------------------------------------------------------
204	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
205
206	WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
207	WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
208	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
209	CSYNC;
210
211	LD32(i1, 0x10000000);
212	R1 = 0x2781 (Z);
213	LD32(p2, DCPLB_DATA3);
214
215X0_3:	[ I1 ] = R1;		// Exception should occur here
216
217	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
218	CSYNC;
219	WR_MMR(DCPLB_DATA0, 0, p0, r0);
220
221	// Now check that handler read correct values
222	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
223	CHECKREG(r5, 0x10000000);
224	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB3));
225	CHECKREG_SYM(r7, X0_3, r0);		// RETX should be value of X0_3	(HARDCODED ADDR!!)
226
227	//-------------------------------------------------------
228	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
229
230	WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
231	WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
232	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
233	CSYNC;
234
235	LD32(i1, 0x10000000);
236	R1 = 0x446B (Z);
237	LD32(p2, DCPLB_DATA4);
238
239X0_4:	[ I1 ] = R1;		// Exception should occur here
240
241	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
242	CSYNC;
243	WR_MMR(DCPLB_DATA0, 0, p0, r0);
244
245	// Now check that handler read correct values
246	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
247	CHECKREG(r5, 0x10000000);
248	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB4));
249	CHECKREG_SYM(r7, X0_4, r0);		// RETX should be value of X0_4	(HARDCODED ADDR!!)
250
251	//-------------------------------------------------------
252	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
253
254	WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
255	WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
256	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
257	CSYNC;
258
259	LD32(i1, 0x10000000);
260	R1 = 0x794B (Z);
261	LD32(p2, DCPLB_DATA5);
262
263X0_5:	[ I1 ] = R1;		// Exception should occur here
264
265	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
266	CSYNC;
267	WR_MMR(DCPLB_DATA0, 0, p0, r0);
268
269	// Now check that handler read correct values
270	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
271	CHECKREG(r5, 0x10000000);
272	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB5));
273	CHECKREG_SYM(r7, X0_5, r0);		// RETX should be value of X0_5	(HARDCODED ADDR!!)
274
275	//-------------------------------------------------------
276	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
277
278	WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
279	WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
280	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
281	CSYNC;
282
283	LD32(i1, 0x10000000);
284	R1 = 0x15FB (Z);
285	LD32(p2, DCPLB_DATA6);
286
287X0_6:	[ I1 ] = R1;		// Exception should occur here
288
289	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
290	CSYNC;
291	WR_MMR(DCPLB_DATA0, 0, p0, r0);
292
293	// Now check that handler read correct values
294	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
295	CHECKREG(r5, 0x10000000);
296	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB6));
297	CHECKREG_SYM(r7, X0_6, r0);		// RETX should be value of X0_6	(HARDCODED ADDR!!)
298
299	//-------------------------------------------------------
300	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
301
302	WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
303	WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
304	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
305	CSYNC;
306
307	LD32(i1, 0x10000000);
308	R1 = 0x59E2 (Z);
309	LD32(p2, DCPLB_DATA7);
310
311X0_7:	[ I1 ] = R1;		// Exception should occur here
312
313	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
314	CSYNC;
315	WR_MMR(DCPLB_DATA0, 0, p0, r0);
316
317	// Now check that handler read correct values
318	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
319	CHECKREG(r5, 0x10000000);
320	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB7));
321	CHECKREG_SYM(r7, X0_7, r0);		// RETX should be value of X0_7	(HARDCODED ADDR!!)
322
323	//-------------------------------------------------------
324	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
325
326	WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
327	WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
328	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
329	CSYNC;
330
331	LD32(i1, 0x10000000);
332	R1 = 0x1CFB (Z);
333	LD32(p2, DCPLB_DATA8);
334
335X0_8:	[ I1 ] = R1;		// Exception should occur here
336
337	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
338	CSYNC;
339	WR_MMR(DCPLB_DATA0, 0, p0, r0);
340
341	// Now check that handler read correct values
342	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
343	CHECKREG(r5, 0x10000000);
344	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB8));
345	CHECKREG_SYM(r7, X0_8, r0);		// RETX should be value of X0_8	(HARDCODED ADDR!!)
346
347	//-------------------------------------------------------
348	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
349
350	WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
351	WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
352	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
353	CSYNC;
354
355	LD32(i1, 0x10000000);
356	R1 = 0x3F54 (Z);
357	LD32(p2, DCPLB_DATA9);
358
359X0_9:	[ I1 ] = R1;		// Exception should occur here
360
361	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
362	CSYNC;
363	WR_MMR(DCPLB_DATA0, 0, p0, r0);
364
365	// Now check that handler read correct values
366	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
367	CHECKREG(r5, 0x10000000);
368	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB9));
369	CHECKREG_SYM(r7, X0_9, r0);		// RETX should be value of X0_9	(HARDCODED ADDR!!)
370
371	//-------------------------------------------------------
372	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
373
374	WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
375	WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
376	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
377	CSYNC;
378
379	LD32(i1, 0x10000000);
380	R1 = 0x0FF6 (Z);
381	LD32(p2, DCPLB_DATA10);
382
383X0_10:	[ I1 ] = R1;		// Exception should occur here
384
385	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
386	CSYNC;
387	WR_MMR(DCPLB_DATA0, 0, p0, r0);
388
389	// Now check that handler read correct values
390	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
391	CHECKREG(r5, 0x10000000);
392	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB10));
393	CHECKREG_SYM(r7, X0_10, r0);		// RETX should be value of X0_10	(HARDCODED ADDR!!)
394
395	//-------------------------------------------------------
396	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
397
398	WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
399	WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
400	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
401	CSYNC;
402
403	LD32(i1, 0x10000000);
404	R1 = 0x0ABD (Z);
405	LD32(p2, DCPLB_DATA11);
406
407X0_11:	[ I1 ] = R1;		// Exception should occur here
408
409	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
410	CSYNC;
411	WR_MMR(DCPLB_DATA0, 0, p0, r0);
412
413	// Now check that handler read correct values
414	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
415	CHECKREG(r5, 0x10000000);
416	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB11));
417	CHECKREG_SYM(r7, X0_11, r0);		// RETX should be value of X0_11	(HARDCODED ADDR!!)
418
419	//-------------------------------------------------------
420	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
421
422	WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
423	WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
424	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
425	CSYNC;
426
427	LD32(i1, 0x10000000);
428	R1 = 0x31DF (Z);
429	LD32(p2, DCPLB_DATA12);
430
431X0_12:	[ I1 ] = R1;		// Exception should occur here
432
433	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
434	CSYNC;
435	WR_MMR(DCPLB_DATA0, 0, p0, r0);
436
437	// Now check that handler read correct values
438	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
439	CHECKREG(r5, 0x10000000);
440	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB12));
441	CHECKREG_SYM(r7, X0_12, r0);		// RETX should be value of X0_12	(HARDCODED ADDR!!)
442
443	//-------------------------------------------------------
444	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
445
446	WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
447	WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
448	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
449	CSYNC;
450
451	LD32(i1, 0x10000000);
452	R1 = 0x237C (Z);
453	LD32(p2, DCPLB_DATA13);
454
455X0_13:	[ I1 ] = R1;		// Exception should occur here
456
457	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
458	CSYNC;
459	WR_MMR(DCPLB_DATA0, 0, p0, r0);
460
461	// Now check that handler read correct values
462	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
463	CHECKREG(r5, 0x10000000);
464	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB13));
465	CHECKREG_SYM(r7, X0_13, r0);		// RETX should be value of X0_13	(HARDCODED ADDR!!)
466
467	//-------------------------------------------------------
468	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
469
470	WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
471	WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
472	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
473	CSYNC;
474
475	LD32(i1, 0x10000000);
476	R1 = 0x2F1C (Z);
477	LD32(p2, DCPLB_DATA14);
478
479X0_14:	[ I1 ] = R1;		// Exception should occur here
480
481	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
482	CSYNC;
483	WR_MMR(DCPLB_DATA0, 0, p0, r0);
484
485	// Now check that handler read correct values
486	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
487	CHECKREG(r5, 0x10000000);
488	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB14));
489	CHECKREG_SYM(r7, X0_14, r0);		// RETX should be value of X0_14	(HARDCODED ADDR!!)
490
491	//-------------------------------------------------------
492	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
493
494	WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
495	WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
496	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
497	CSYNC;
498
499	LD32(i1, 0x10000000);
500	R1 = 0x7DE1 (Z);
501	LD32(p2, DCPLB_DATA2);
502
503X1_2:	[ I1 ] = R1;		// Exception should occur here
504
505	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
506	CSYNC;
507	WR_MMR(DCPLB_DATA1, 0, p0, r0);
508
509	// Now check that handler read correct values
510	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
511	CHECKREG(r5, 0x10000000);
512	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB2));
513	CHECKREG_SYM(r7, X1_2, r0);		// RETX should be value of X1_2	(HARDCODED ADDR!!)
514
515	//-------------------------------------------------------
516	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
517
518	WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
519	WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
520	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
521	CSYNC;
522
523	LD32(i1, 0x10000000);
524	R1 = 0x4487 (Z);
525	LD32(p2, DCPLB_DATA3);
526
527X1_3:	[ I1 ] = R1;		// Exception should occur here
528
529	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
530	CSYNC;
531	WR_MMR(DCPLB_DATA1, 0, p0, r0);
532
533	// Now check that handler read correct values
534	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
535	CHECKREG(r5, 0x10000000);
536	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB3));
537	CHECKREG_SYM(r7, X1_3, r0);		// RETX should be value of X1_3	(HARDCODED ADDR!!)
538
539	//-------------------------------------------------------
540	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
541
542	WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
543	WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
544	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
545	CSYNC;
546
547	LD32(i1, 0x10000000);
548	R1 = 0x6201 (Z);
549	LD32(p2, DCPLB_DATA4);
550
551X1_4:	[ I1 ] = R1;		// Exception should occur here
552
553	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
554	CSYNC;
555	WR_MMR(DCPLB_DATA1, 0, p0, r0);
556
557	// Now check that handler read correct values
558	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
559	CHECKREG(r5, 0x10000000);
560	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB4));
561	CHECKREG_SYM(r7, X1_4, r0);		// RETX should be value of X1_4	(HARDCODED ADDR!!)
562
563	//-------------------------------------------------------
564	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
565
566	WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
567	WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
568	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
569	CSYNC;
570
571	LD32(i1, 0x10000000);
572	R1 = 0x52BF (Z);
573	LD32(p2, DCPLB_DATA5);
574
575X1_5:	[ I1 ] = R1;		// Exception should occur here
576
577	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
578	CSYNC;
579	WR_MMR(DCPLB_DATA1, 0, p0, r0);
580
581	// Now check that handler read correct values
582	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
583	CHECKREG(r5, 0x10000000);
584	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB5));
585	CHECKREG_SYM(r7, X1_5, r0);		// RETX should be value of X1_5	(HARDCODED ADDR!!)
586
587	//-------------------------------------------------------
588	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
589
590	WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
591	WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
592	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
593	CSYNC;
594
595	LD32(i1, 0x10000000);
596	R1 = 0x6231 (Z);
597	LD32(p2, DCPLB_DATA6);
598
599X1_6:	[ I1 ] = R1;		// Exception should occur here
600
601	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
602	CSYNC;
603	WR_MMR(DCPLB_DATA1, 0, p0, r0);
604
605	// Now check that handler read correct values
606	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
607	CHECKREG(r5, 0x10000000);
608	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB6));
609	CHECKREG_SYM(r7, X1_6, r0);		// RETX should be value of X1_6	(HARDCODED ADDR!!)
610
611	//-------------------------------------------------------
612	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
613
614	WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
615	WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
616	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
617	CSYNC;
618
619	LD32(i1, 0x10000000);
620	R1 = 0x63DE (Z);
621	LD32(p2, DCPLB_DATA7);
622
623X1_7:	[ I1 ] = R1;		// Exception should occur here
624
625	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
626	CSYNC;
627	WR_MMR(DCPLB_DATA1, 0, p0, r0);
628
629	// Now check that handler read correct values
630	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
631	CHECKREG(r5, 0x10000000);
632	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB7));
633	CHECKREG_SYM(r7, X1_7, r0);		// RETX should be value of X1_7	(HARDCODED ADDR!!)
634
635	//-------------------------------------------------------
636	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
637
638	WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
639	WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
640	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
641	CSYNC;
642
643	LD32(i1, 0x10000000);
644	R1 = 0x6956 (Z);
645	LD32(p2, DCPLB_DATA8);
646
647X1_8:	[ I1 ] = R1;		// Exception should occur here
648
649	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
650	CSYNC;
651	WR_MMR(DCPLB_DATA1, 0, p0, r0);
652
653	// Now check that handler read correct values
654	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
655	CHECKREG(r5, 0x10000000);
656	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB8));
657	CHECKREG_SYM(r7, X1_8, r0);		// RETX should be value of X1_8	(HARDCODED ADDR!!)
658
659	//-------------------------------------------------------
660	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
661
662	WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
663	WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
664	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
665	CSYNC;
666
667	LD32(i1, 0x10000000);
668	R1 = 0x1372 (Z);
669	LD32(p2, DCPLB_DATA9);
670
671X1_9:	[ I1 ] = R1;		// Exception should occur here
672
673	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
674	CSYNC;
675	WR_MMR(DCPLB_DATA1, 0, p0, r0);
676
677	// Now check that handler read correct values
678	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
679	CHECKREG(r5, 0x10000000);
680	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB9));
681	CHECKREG_SYM(r7, X1_9, r0);		// RETX should be value of X1_9	(HARDCODED ADDR!!)
682
683	//-------------------------------------------------------
684	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
685
686	WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
687	WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
688	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
689	CSYNC;
690
691	LD32(i1, 0x10000000);
692	R1 = 0x500F (Z);
693	LD32(p2, DCPLB_DATA10);
694
695X1_10:	[ I1 ] = R1;		// Exception should occur here
696
697	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
698	CSYNC;
699	WR_MMR(DCPLB_DATA1, 0, p0, r0);
700
701	// Now check that handler read correct values
702	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
703	CHECKREG(r5, 0x10000000);
704	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB10));
705	CHECKREG_SYM(r7, X1_10, r0);		// RETX should be value of X1_10	(HARDCODED ADDR!!)
706
707	//-------------------------------------------------------
708	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
709
710	WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
711	WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
712	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
713	CSYNC;
714
715	LD32(i1, 0x10000000);
716	R1 = 0x2847 (Z);
717	LD32(p2, DCPLB_DATA11);
718
719X1_11:	[ I1 ] = R1;		// Exception should occur here
720
721	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
722	CSYNC;
723	WR_MMR(DCPLB_DATA1, 0, p0, r0);
724
725	// Now check that handler read correct values
726	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
727	CHECKREG(r5, 0x10000000);
728	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB11));
729	CHECKREG_SYM(r7, X1_11, r0);		// RETX should be value of X1_11	(HARDCODED ADDR!!)
730
731	//-------------------------------------------------------
732	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
733
734	WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
735	WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
736	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
737	CSYNC;
738
739	LD32(i1, 0x10000000);
740	R1 = 0x2C67 (Z);
741	LD32(p2, DCPLB_DATA12);
742
743X1_12:	[ I1 ] = R1;		// Exception should occur here
744
745	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
746	CSYNC;
747	WR_MMR(DCPLB_DATA1, 0, p0, r0);
748
749	// Now check that handler read correct values
750	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
751	CHECKREG(r5, 0x10000000);
752	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB12));
753	CHECKREG_SYM(r7, X1_12, r0);		// RETX should be value of X1_12	(HARDCODED ADDR!!)
754
755	//-------------------------------------------------------
756	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
757
758	WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
759	WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
760	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
761	CSYNC;
762
763	LD32(i1, 0x10000000);
764	R1 = 0x7566 (Z);
765	LD32(p2, DCPLB_DATA13);
766
767X1_13:	[ I1 ] = R1;		// Exception should occur here
768
769	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
770	CSYNC;
771	WR_MMR(DCPLB_DATA1, 0, p0, r0);
772
773	// Now check that handler read correct values
774	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
775	CHECKREG(r5, 0x10000000);
776	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB13));
777	CHECKREG_SYM(r7, X1_13, r0);		// RETX should be value of X1_13	(HARDCODED ADDR!!)
778
779	//-------------------------------------------------------
780	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
781
782	WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
783	WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
784	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
785	CSYNC;
786
787	LD32(i1, 0x10000000);
788	R1 = 0x4287 (Z);
789	LD32(p2, DCPLB_DATA14);
790
791X1_14:	[ I1 ] = R1;		// Exception should occur here
792
793	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
794	CSYNC;
795	WR_MMR(DCPLB_DATA1, 0, p0, r0);
796
797	// Now check that handler read correct values
798	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
799	CHECKREG(r5, 0x10000000);
800	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB14));
801	CHECKREG_SYM(r7, X1_14, r0);		// RETX should be value of X1_14	(HARDCODED ADDR!!)
802
803	//-------------------------------------------------------
804	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
805
806	WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
807	WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
808	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
809	CSYNC;
810
811	LD32(i1, 0x10000000);
812	R1 = 0x3359 (Z);
813	LD32(p2, DCPLB_DATA3);
814
815X2_3:	[ I1 ] = R1;		// Exception should occur here
816
817	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
818	CSYNC;
819	WR_MMR(DCPLB_DATA2, 0, p0, r0);
820
821	// Now check that handler read correct values
822	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
823	CHECKREG(r5, 0x10000000);
824	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB3));
825	CHECKREG_SYM(r7, X2_3, r0);		// RETX should be value of X2_3	(HARDCODED ADDR!!)
826
827	//-------------------------------------------------------
828	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
829
830	WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
831	WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
832	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
833	CSYNC;
834
835	LD32(i1, 0x10000000);
836	R1 = 0x4DAA (Z);
837	LD32(p2, DCPLB_DATA4);
838
839X2_4:	[ I1 ] = R1;		// Exception should occur here
840
841	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
842	CSYNC;
843	WR_MMR(DCPLB_DATA2, 0, p0, r0);
844
845	// Now check that handler read correct values
846	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
847	CHECKREG(r5, 0x10000000);
848	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB4));
849	CHECKREG_SYM(r7, X2_4, r0);		// RETX should be value of X2_4	(HARDCODED ADDR!!)
850
851	//-------------------------------------------------------
852	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
853
854	WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
855	WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
856	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
857	CSYNC;
858
859	LD32(i1, 0x10000000);
860	R1 = 0x6488 (Z);
861	LD32(p2, DCPLB_DATA5);
862
863X2_5:	[ I1 ] = R1;		// Exception should occur here
864
865	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
866	CSYNC;
867	WR_MMR(DCPLB_DATA2, 0, p0, r0);
868
869	// Now check that handler read correct values
870	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
871	CHECKREG(r5, 0x10000000);
872	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB5));
873	CHECKREG_SYM(r7, X2_5, r0);		// RETX should be value of X2_5	(HARDCODED ADDR!!)
874
875	//-------------------------------------------------------
876	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
877
878	WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
879	WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
880	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
881	CSYNC;
882
883	LD32(i1, 0x10000000);
884	R1 = 0x773C (Z);
885	LD32(p2, DCPLB_DATA6);
886
887X2_6:	[ I1 ] = R1;		// Exception should occur here
888
889	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
890	CSYNC;
891	WR_MMR(DCPLB_DATA2, 0, p0, r0);
892
893	// Now check that handler read correct values
894	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
895	CHECKREG(r5, 0x10000000);
896	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB6));
897	CHECKREG_SYM(r7, X2_6, r0);		// RETX should be value of X2_6	(HARDCODED ADDR!!)
898
899	//-------------------------------------------------------
900	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
901
902	WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
903	WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
904	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
905	CSYNC;
906
907	LD32(i1, 0x10000000);
908	R1 = 0x6F59 (Z);
909	LD32(p2, DCPLB_DATA7);
910
911X2_7:	[ I1 ] = R1;		// Exception should occur here
912
913	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
914	CSYNC;
915	WR_MMR(DCPLB_DATA2, 0, p0, r0);
916
917	// Now check that handler read correct values
918	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
919	CHECKREG(r5, 0x10000000);
920	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB7));
921	CHECKREG_SYM(r7, X2_7, r0);		// RETX should be value of X2_7	(HARDCODED ADDR!!)
922
923	//-------------------------------------------------------
924	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
925
926	WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
927	WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
928	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
929	CSYNC;
930
931	LD32(i1, 0x10000000);
932	R1 = 0x6EEA (Z);
933	LD32(p2, DCPLB_DATA8);
934
935X2_8:	[ I1 ] = R1;		// Exception should occur here
936
937	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
938	CSYNC;
939	WR_MMR(DCPLB_DATA2, 0, p0, r0);
940
941	// Now check that handler read correct values
942	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
943	CHECKREG(r5, 0x10000000);
944	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB8));
945	CHECKREG_SYM(r7, X2_8, r0);		// RETX should be value of X2_8	(HARDCODED ADDR!!)
946
947	//-------------------------------------------------------
948	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
949
950	WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
951	WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
952	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
953	CSYNC;
954
955	LD32(i1, 0x10000000);
956	R1 = 0x5656 (Z);
957	LD32(p2, DCPLB_DATA9);
958
959X2_9:	[ I1 ] = R1;		// Exception should occur here
960
961	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
962	CSYNC;
963	WR_MMR(DCPLB_DATA2, 0, p0, r0);
964
965	// Now check that handler read correct values
966	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
967	CHECKREG(r5, 0x10000000);
968	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB9));
969	CHECKREG_SYM(r7, X2_9, r0);		// RETX should be value of X2_9	(HARDCODED ADDR!!)
970
971	//-------------------------------------------------------
972	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
973
974	WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
975	WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
976	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
977	CSYNC;
978
979	LD32(i1, 0x10000000);
980	R1 = 0x6113 (Z);
981	LD32(p2, DCPLB_DATA10);
982
983X2_10:	[ I1 ] = R1;		// Exception should occur here
984
985	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
986	CSYNC;
987	WR_MMR(DCPLB_DATA2, 0, p0, r0);
988
989	// Now check that handler read correct values
990	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
991	CHECKREG(r5, 0x10000000);
992	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB10));
993	CHECKREG_SYM(r7, X2_10, r0);		// RETX should be value of X2_10	(HARDCODED ADDR!!)
994
995	//-------------------------------------------------------
996	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
997
998	WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
999	WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1000	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1001	CSYNC;
1002
1003	LD32(i1, 0x10000000);
1004	R1 = 0x4A7B (Z);
1005	LD32(p2, DCPLB_DATA11);
1006
1007X2_11:	[ I1 ] = R1;		// Exception should occur here
1008
1009	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1010	CSYNC;
1011	WR_MMR(DCPLB_DATA2, 0, p0, r0);
1012
1013	// Now check that handler read correct values
1014	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1015	CHECKREG(r5, 0x10000000);
1016	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB11));
1017	CHECKREG_SYM(r7, X2_11, r0);		// RETX should be value of X2_11	(HARDCODED ADDR!!)
1018
1019	//-------------------------------------------------------
1020	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1021
1022	WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1023	WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1024	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1025	CSYNC;
1026
1027	LD32(i1, 0x10000000);
1028	R1 = 0x31D2 (Z);
1029	LD32(p2, DCPLB_DATA12);
1030
1031X2_12:	[ I1 ] = R1;		// Exception should occur here
1032
1033	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1034	CSYNC;
1035	WR_MMR(DCPLB_DATA2, 0, p0, r0);
1036
1037	// Now check that handler read correct values
1038	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1039	CHECKREG(r5, 0x10000000);
1040	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB12));
1041	CHECKREG_SYM(r7, X2_12, r0);		// RETX should be value of X2_12	(HARDCODED ADDR!!)
1042
1043	//-------------------------------------------------------
1044	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1045
1046	WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1047	WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1048	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1049	CSYNC;
1050
1051	LD32(i1, 0x10000000);
1052	R1 = 0x2D85 (Z);
1053	LD32(p2, DCPLB_DATA13);
1054
1055X2_13:	[ I1 ] = R1;		// Exception should occur here
1056
1057	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1058	CSYNC;
1059	WR_MMR(DCPLB_DATA2, 0, p0, r0);
1060
1061	// Now check that handler read correct values
1062	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1063	CHECKREG(r5, 0x10000000);
1064	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB13));
1065	CHECKREG_SYM(r7, X2_13, r0);		// RETX should be value of X2_13	(HARDCODED ADDR!!)
1066
1067	//-------------------------------------------------------
1068	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1069
1070	WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1071	WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1072	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1073	CSYNC;
1074
1075	LD32(i1, 0x10000000);
1076	R1 = 0x19A1 (Z);
1077	LD32(p2, DCPLB_DATA14);
1078
1079X2_14:	[ I1 ] = R1;		// Exception should occur here
1080
1081	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1082	CSYNC;
1083	WR_MMR(DCPLB_DATA2, 0, p0, r0);
1084
1085	// Now check that handler read correct values
1086	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1087	CHECKREG(r5, 0x10000000);
1088	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB14));
1089	CHECKREG_SYM(r7, X2_14, r0);		// RETX should be value of X2_14	(HARDCODED ADDR!!)
1090
1091	//-------------------------------------------------------
1092	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1093
1094	WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1095	WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1096	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1097	CSYNC;
1098
1099	LD32(i1, 0x10000000);
1100	R1 = 0x69D8 (Z);
1101	LD32(p2, DCPLB_DATA4);
1102
1103X3_4:	[ I1 ] = R1;		// Exception should occur here
1104
1105	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1106	CSYNC;
1107	WR_MMR(DCPLB_DATA3, 0, p0, r0);
1108
1109	// Now check that handler read correct values
1110	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1111	CHECKREG(r5, 0x10000000);
1112	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB4));
1113	CHECKREG_SYM(r7, X3_4, r0);		// RETX should be value of X3_4	(HARDCODED ADDR!!)
1114
1115	//-------------------------------------------------------
1116	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1117
1118	WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1119	WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1120	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1121	CSYNC;
1122
1123	LD32(i1, 0x10000000);
1124	R1 = 0x353C (Z);
1125	LD32(p2, DCPLB_DATA5);
1126
1127X3_5:	[ I1 ] = R1;		// Exception should occur here
1128
1129	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1130	CSYNC;
1131	WR_MMR(DCPLB_DATA3, 0, p0, r0);
1132
1133	// Now check that handler read correct values
1134	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1135	CHECKREG(r5, 0x10000000);
1136	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB5));
1137	CHECKREG_SYM(r7, X3_5, r0);		// RETX should be value of X3_5	(HARDCODED ADDR!!)
1138
1139	//-------------------------------------------------------
1140	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1141
1142	WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1143	WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1144	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1145	CSYNC;
1146
1147	LD32(i1, 0x10000000);
1148	R1 = 0x3B54 (Z);
1149	LD32(p2, DCPLB_DATA6);
1150
1151X3_6:	[ I1 ] = R1;		// Exception should occur here
1152
1153	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1154	CSYNC;
1155	WR_MMR(DCPLB_DATA3, 0, p0, r0);
1156
1157	// Now check that handler read correct values
1158	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1159	CHECKREG(r5, 0x10000000);
1160	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB6));
1161	CHECKREG_SYM(r7, X3_6, r0);		// RETX should be value of X3_6	(HARDCODED ADDR!!)
1162
1163	//-------------------------------------------------------
1164	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1165
1166	WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1167	WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1168	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1169	CSYNC;
1170
1171	LD32(i1, 0x10000000);
1172	R1 = 0x7D55 (Z);
1173	LD32(p2, DCPLB_DATA7);
1174
1175X3_7:	[ I1 ] = R1;		// Exception should occur here
1176
1177	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1178	CSYNC;
1179	WR_MMR(DCPLB_DATA3, 0, p0, r0);
1180
1181	// Now check that handler read correct values
1182	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1183	CHECKREG(r5, 0x10000000);
1184	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB7));
1185	CHECKREG_SYM(r7, X3_7, r0);		// RETX should be value of X3_7	(HARDCODED ADDR!!)
1186
1187	//-------------------------------------------------------
1188	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1189
1190	WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1191	WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1192	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1193	CSYNC;
1194
1195	LD32(i1, 0x10000000);
1196	R1 = 0x102F (Z);
1197	LD32(p2, DCPLB_DATA8);
1198
1199X3_8:	[ I1 ] = R1;		// Exception should occur here
1200
1201	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1202	CSYNC;
1203	WR_MMR(DCPLB_DATA3, 0, p0, r0);
1204
1205	// Now check that handler read correct values
1206	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1207	CHECKREG(r5, 0x10000000);
1208	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB8));
1209	CHECKREG_SYM(r7, X3_8, r0);		// RETX should be value of X3_8	(HARDCODED ADDR!!)
1210
1211	//-------------------------------------------------------
1212	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1213
1214	WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1215	WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1216	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1217	CSYNC;
1218
1219	LD32(i1, 0x10000000);
1220	R1 = 0x1B37 (Z);
1221	LD32(p2, DCPLB_DATA9);
1222
1223X3_9:	[ I1 ] = R1;		// Exception should occur here
1224
1225	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1226	CSYNC;
1227	WR_MMR(DCPLB_DATA3, 0, p0, r0);
1228
1229	// Now check that handler read correct values
1230	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1231	CHECKREG(r5, 0x10000000);
1232	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB9));
1233	CHECKREG_SYM(r7, X3_9, r0);		// RETX should be value of X3_9	(HARDCODED ADDR!!)
1234
1235	//-------------------------------------------------------
1236	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1237
1238	WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1239	WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1240	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1241	CSYNC;
1242
1243	LD32(i1, 0x10000000);
1244	R1 = 0x7AAE (Z);
1245	LD32(p2, DCPLB_DATA10);
1246
1247X3_10:	[ I1 ] = R1;		// Exception should occur here
1248
1249	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1250	CSYNC;
1251	WR_MMR(DCPLB_DATA3, 0, p0, r0);
1252
1253	// Now check that handler read correct values
1254	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1255	CHECKREG(r5, 0x10000000);
1256	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB10));
1257	CHECKREG_SYM(r7, X3_10, r0);		// RETX should be value of X3_10	(HARDCODED ADDR!!)
1258
1259	//-------------------------------------------------------
1260	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1261
1262	WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1263	WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1264	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1265	CSYNC;
1266
1267	LD32(i1, 0x10000000);
1268	R1 = 0x5E65 (Z);
1269	LD32(p2, DCPLB_DATA11);
1270
1271X3_11:	[ I1 ] = R1;		// Exception should occur here
1272
1273	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1274	CSYNC;
1275	WR_MMR(DCPLB_DATA3, 0, p0, r0);
1276
1277	// Now check that handler read correct values
1278	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1279	CHECKREG(r5, 0x10000000);
1280	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB11));
1281	CHECKREG_SYM(r7, X3_11, r0);		// RETX should be value of X3_11	(HARDCODED ADDR!!)
1282
1283	//-------------------------------------------------------
1284	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1285
1286	WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1287	WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1288	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1289	CSYNC;
1290
1291	LD32(i1, 0x10000000);
1292	R1 = 0x345B (Z);
1293	LD32(p2, DCPLB_DATA12);
1294
1295X3_12:	[ I1 ] = R1;		// Exception should occur here
1296
1297	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1298	CSYNC;
1299	WR_MMR(DCPLB_DATA3, 0, p0, r0);
1300
1301	// Now check that handler read correct values
1302	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1303	CHECKREG(r5, 0x10000000);
1304	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB12));
1305	CHECKREG_SYM(r7, X3_12, r0);		// RETX should be value of X3_12	(HARDCODED ADDR!!)
1306
1307	//-------------------------------------------------------
1308	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1309
1310	WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1311	WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1312	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1313	CSYNC;
1314
1315	LD32(i1, 0x10000000);
1316	R1 = 0x63DA (Z);
1317	LD32(p2, DCPLB_DATA13);
1318
1319X3_13:	[ I1 ] = R1;		// Exception should occur here
1320
1321	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1322	CSYNC;
1323	WR_MMR(DCPLB_DATA3, 0, p0, r0);
1324
1325	// Now check that handler read correct values
1326	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1327	CHECKREG(r5, 0x10000000);
1328	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB13));
1329	CHECKREG_SYM(r7, X3_13, r0);		// RETX should be value of X3_13	(HARDCODED ADDR!!)
1330
1331	//-------------------------------------------------------
1332	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1333
1334	WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1335	WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1336	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1337	CSYNC;
1338
1339	LD32(i1, 0x10000000);
1340	R1 = 0x6102 (Z);
1341	LD32(p2, DCPLB_DATA14);
1342
1343X3_14:	[ I1 ] = R1;		// Exception should occur here
1344
1345	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1346	CSYNC;
1347	WR_MMR(DCPLB_DATA3, 0, p0, r0);
1348
1349	// Now check that handler read correct values
1350	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1351	CHECKREG(r5, 0x10000000);
1352	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB14));
1353	CHECKREG_SYM(r7, X3_14, r0);		// RETX should be value of X3_14	(HARDCODED ADDR!!)
1354
1355	//-------------------------------------------------------
1356	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1357
1358	WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1359	WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1360	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1361	CSYNC;
1362
1363	LD32(i1, 0x10000000);
1364	R1 = 0x7A79 (Z);
1365	LD32(p2, DCPLB_DATA5);
1366
1367X4_5:	[ I1 ] = R1;		// Exception should occur here
1368
1369	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1370	CSYNC;
1371	WR_MMR(DCPLB_DATA4, 0, p0, r0);
1372
1373	// Now check that handler read correct values
1374	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1375	CHECKREG(r5, 0x10000000);
1376	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB4|FAULT_CPLB5));
1377	CHECKREG_SYM(r7, X4_5, r0);		// RETX should be value of X4_5	(HARDCODED ADDR!!)
1378
1379	//-------------------------------------------------------
1380	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1381
1382	WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1383	WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1384	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1385	CSYNC;
1386
1387	LD32(i1, 0x10000000);
1388	R1 = 0x0398 (Z);
1389	LD32(p2, DCPLB_DATA6);
1390
1391X4_6:	[ I1 ] = R1;		// Exception should occur here
1392
1393	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1394	CSYNC;
1395	WR_MMR(DCPLB_DATA4, 0, p0, r0);
1396
1397	// Now check that handler read correct values
1398	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1399	CHECKREG(r5, 0x10000000);
1400	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB4|FAULT_CPLB6));
1401	CHECKREG_SYM(r7, X4_6, r0);		// RETX should be value of X4_6	(HARDCODED ADDR!!)
1402
1403	//-------------------------------------------------------
1404	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1405
1406	WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1407	WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1408	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1409	CSYNC;
1410
1411	LD32(i1, 0x10000000);
1412	R1 = 0x28CC (Z);
1413	LD32(p2, DCPLB_DATA7);
1414
1415X4_7:	[ I1 ] = R1;		// Exception should occur here
1416
1417	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1418	CSYNC;
1419	WR_MMR(DCPLB_DATA4, 0, p0, r0);
1420
1421	// Now check that handler read correct values
1422	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1423	CHECKREG(r5, 0x10000000);
1424	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB4|FAULT_CPLB7));
1425	CHECKREG_SYM(r7, X4_7, r0);		// RETX should be value of X4_7	(HARDCODED ADDR!!)
1426
1427	//-------------------------------------------------------
1428	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1429
1430	WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1431	WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1432	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1433	CSYNC;
1434
1435	LD32(i1, 0x10000000);
1436	R1 = 0x60E3 (Z);
1437	LD32(p2, DCPLB_DATA8);
1438
1439X4_8:	[ I1 ] = R1;		// Exception should occur here
1440
1441	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1442	CSYNC;
1443	WR_MMR(DCPLB_DATA4, 0, p0, r0);
1444
1445	// Now check that handler read correct values
1446	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1447	CHECKREG(r5, 0x10000000);
1448	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB4|FAULT_CPLB8));
1449	CHECKREG_SYM(r7, X4_8, r0);		// RETX should be value of X4_8	(HARDCODED ADDR!!)
1450
1451	//-------------------------------------------------------
1452	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1453
1454	WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1455	WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1456	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1457	CSYNC;
1458
1459	LD32(i1, 0x10000000);
1460	R1 = 0x1F1A (Z);
1461	LD32(p2, DCPLB_DATA9);
1462
1463X4_9:	[ I1 ] = R1;		// Exception should occur here
1464
1465	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1466	CSYNC;
1467	WR_MMR(DCPLB_DATA4, 0, p0, r0);
1468
1469	// Now check that handler read correct values
1470	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1471	CHECKREG(r5, 0x10000000);
1472	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB4|FAULT_CPLB9));
1473	CHECKREG_SYM(r7, X4_9, r0);		// RETX should be value of X4_9	(HARDCODED ADDR!!)
1474
1475	//-------------------------------------------------------
1476	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1477
1478	WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1479	WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1480	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1481	CSYNC;
1482
1483	LD32(i1, 0x10000000);
1484	R1 = 0x4B76 (Z);
1485	LD32(p2, DCPLB_DATA10);
1486
1487X4_10:	[ I1 ] = R1;		// Exception should occur here
1488
1489	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1490	CSYNC;
1491	WR_MMR(DCPLB_DATA4, 0, p0, r0);
1492
1493	// Now check that handler read correct values
1494	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1495	CHECKREG(r5, 0x10000000);
1496	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB4|FAULT_CPLB10));
1497	CHECKREG_SYM(r7, X4_10, r0);		// RETX should be value of X4_10	(HARDCODED ADDR!!)
1498
1499	//-------------------------------------------------------
1500	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1501
1502	WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1503	WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1504	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1505	CSYNC;
1506
1507	LD32(i1, 0x10000000);
1508	R1 = 0x058E (Z);
1509	LD32(p2, DCPLB_DATA11);
1510
1511X4_11:	[ I1 ] = R1;		// Exception should occur here
1512
1513	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1514	CSYNC;
1515	WR_MMR(DCPLB_DATA4, 0, p0, r0);
1516
1517	// Now check that handler read correct values
1518	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1519	CHECKREG(r5, 0x10000000);
1520	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB4|FAULT_CPLB11));
1521	CHECKREG_SYM(r7, X4_11, r0);		// RETX should be value of X4_11	(HARDCODED ADDR!!)
1522
1523	//-------------------------------------------------------
1524	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1525
1526	WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1527	WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1528	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1529	CSYNC;
1530
1531	LD32(i1, 0x10000000);
1532	R1 = 0x7A5F (Z);
1533	LD32(p2, DCPLB_DATA12);
1534
1535X4_12:	[ I1 ] = R1;		// Exception should occur here
1536
1537	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1538	CSYNC;
1539	WR_MMR(DCPLB_DATA4, 0, p0, r0);
1540
1541	// Now check that handler read correct values
1542	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1543	CHECKREG(r5, 0x10000000);
1544	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB4|FAULT_CPLB12));
1545	CHECKREG_SYM(r7, X4_12, r0);		// RETX should be value of X4_12	(HARDCODED ADDR!!)
1546
1547	//-------------------------------------------------------
1548	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1549
1550	WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1551	WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1552	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1553	CSYNC;
1554
1555	LD32(i1, 0x10000000);
1556	R1 = 0x28D9 (Z);
1557	LD32(p2, DCPLB_DATA13);
1558
1559X4_13:	[ I1 ] = R1;		// Exception should occur here
1560
1561	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1562	CSYNC;
1563	WR_MMR(DCPLB_DATA4, 0, p0, r0);
1564
1565	// Now check that handler read correct values
1566	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1567	CHECKREG(r5, 0x10000000);
1568	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB4|FAULT_CPLB13));
1569	CHECKREG_SYM(r7, X4_13, r0);		// RETX should be value of X4_13	(HARDCODED ADDR!!)
1570
1571	//-------------------------------------------------------
1572	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1573
1574	WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1575	WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1576	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1577	CSYNC;
1578
1579	LD32(i1, 0x10000000);
1580	R1 = 0x0799 (Z);
1581	LD32(p2, DCPLB_DATA14);
1582
1583X4_14:	[ I1 ] = R1;		// Exception should occur here
1584
1585	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1586	CSYNC;
1587	WR_MMR(DCPLB_DATA4, 0, p0, r0);
1588
1589	// Now check that handler read correct values
1590	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1591	CHECKREG(r5, 0x10000000);
1592	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB4|FAULT_CPLB14));
1593	CHECKREG_SYM(r7, X4_14, r0);		// RETX should be value of X4_14	(HARDCODED ADDR!!)
1594
1595	//-------------------------------------------------------
1596	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1597
1598	WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1599	WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1600	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1601	CSYNC;
1602
1603	LD32(i1, 0x10000000);
1604	R1 = 0x388F (Z);
1605	LD32(p2, DCPLB_DATA6);
1606
1607X5_6:	[ I1 ] = R1;		// Exception should occur here
1608
1609	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1610	CSYNC;
1611	WR_MMR(DCPLB_DATA5, 0, p0, r0);
1612
1613	// Now check that handler read correct values
1614	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1615	CHECKREG(r5, 0x10000000);
1616	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB5|FAULT_CPLB6));
1617	CHECKREG_SYM(r7, X5_6, r0);		// RETX should be value of X5_6	(HARDCODED ADDR!!)
1618
1619	//-------------------------------------------------------
1620	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1621
1622	WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1623	WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1624	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1625	CSYNC;
1626
1627	LD32(i1, 0x10000000);
1628	R1 = 0x751F (Z);
1629	LD32(p2, DCPLB_DATA7);
1630
1631X5_7:	[ I1 ] = R1;		// Exception should occur here
1632
1633	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1634	CSYNC;
1635	WR_MMR(DCPLB_DATA5, 0, p0, r0);
1636
1637	// Now check that handler read correct values
1638	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1639	CHECKREG(r5, 0x10000000);
1640	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB5|FAULT_CPLB7));
1641	CHECKREG_SYM(r7, X5_7, r0);		// RETX should be value of X5_7	(HARDCODED ADDR!!)
1642
1643	//-------------------------------------------------------
1644	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1645
1646	WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1647	WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1648	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1649	CSYNC;
1650
1651	LD32(i1, 0x10000000);
1652	R1 = 0x493F (Z);
1653	LD32(p2, DCPLB_DATA8);
1654
1655X5_8:	[ I1 ] = R1;		// Exception should occur here
1656
1657	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1658	CSYNC;
1659	WR_MMR(DCPLB_DATA5, 0, p0, r0);
1660
1661	// Now check that handler read correct values
1662	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1663	CHECKREG(r5, 0x10000000);
1664	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB5|FAULT_CPLB8));
1665	CHECKREG_SYM(r7, X5_8, r0);		// RETX should be value of X5_8	(HARDCODED ADDR!!)
1666
1667	//-------------------------------------------------------
1668	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1669
1670	WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1671	WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1672	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1673	CSYNC;
1674
1675	LD32(i1, 0x10000000);
1676	R1 = 0x0F36 (Z);
1677	LD32(p2, DCPLB_DATA9);
1678
1679X5_9:	[ I1 ] = R1;		// Exception should occur here
1680
1681	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1682	CSYNC;
1683	WR_MMR(DCPLB_DATA5, 0, p0, r0);
1684
1685	// Now check that handler read correct values
1686	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1687	CHECKREG(r5, 0x10000000);
1688	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB5|FAULT_CPLB9));
1689	CHECKREG_SYM(r7, X5_9, r0);		// RETX should be value of X5_9	(HARDCODED ADDR!!)
1690
1691	//-------------------------------------------------------
1692	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1693
1694	WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1695	WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1696	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1697	CSYNC;
1698
1699	LD32(i1, 0x10000000);
1700	R1 = 0x48EE (Z);
1701	LD32(p2, DCPLB_DATA10);
1702
1703X5_10:	[ I1 ] = R1;		// Exception should occur here
1704
1705	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1706	CSYNC;
1707	WR_MMR(DCPLB_DATA5, 0, p0, r0);
1708
1709	// Now check that handler read correct values
1710	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1711	CHECKREG(r5, 0x10000000);
1712	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB5|FAULT_CPLB10));
1713	CHECKREG_SYM(r7, X5_10, r0);		// RETX should be value of X5_10	(HARDCODED ADDR!!)
1714
1715	//-------------------------------------------------------
1716	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1717
1718	WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1719	WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1720	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1721	CSYNC;
1722
1723	LD32(i1, 0x10000000);
1724	R1 = 0x2043 (Z);
1725	LD32(p2, DCPLB_DATA11);
1726
1727X5_11:	[ I1 ] = R1;		// Exception should occur here
1728
1729	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1730	CSYNC;
1731	WR_MMR(DCPLB_DATA5, 0, p0, r0);
1732
1733	// Now check that handler read correct values
1734	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1735	CHECKREG(r5, 0x10000000);
1736	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB5|FAULT_CPLB11));
1737	CHECKREG_SYM(r7, X5_11, r0);		// RETX should be value of X5_11	(HARDCODED ADDR!!)
1738
1739	//-------------------------------------------------------
1740	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1741
1742	WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1743	WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1744	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1745	CSYNC;
1746
1747	LD32(i1, 0x10000000);
1748	R1 = 0x3F78 (Z);
1749	LD32(p2, DCPLB_DATA12);
1750
1751X5_12:	[ I1 ] = R1;		// Exception should occur here
1752
1753	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1754	CSYNC;
1755	WR_MMR(DCPLB_DATA5, 0, p0, r0);
1756
1757	// Now check that handler read correct values
1758	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1759	CHECKREG(r5, 0x10000000);
1760	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB5|FAULT_CPLB12));
1761	CHECKREG_SYM(r7, X5_12, r0);		// RETX should be value of X5_12	(HARDCODED ADDR!!)
1762
1763	//-------------------------------------------------------
1764	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1765
1766	WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1767	WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1768	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1769	CSYNC;
1770
1771	LD32(i1, 0x10000000);
1772	R1 = 0x1E4D (Z);
1773	LD32(p2, DCPLB_DATA13);
1774
1775X5_13:	[ I1 ] = R1;		// Exception should occur here
1776
1777	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1778	CSYNC;
1779	WR_MMR(DCPLB_DATA5, 0, p0, r0);
1780
1781	// Now check that handler read correct values
1782	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1783	CHECKREG(r5, 0x10000000);
1784	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB5|FAULT_CPLB13));
1785	CHECKREG_SYM(r7, X5_13, r0);		// RETX should be value of X5_13	(HARDCODED ADDR!!)
1786
1787	//-------------------------------------------------------
1788	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1789
1790	WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1791	WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1792	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1793	CSYNC;
1794
1795	LD32(i1, 0x10000000);
1796	R1 = 0x3D0D (Z);
1797	LD32(p2, DCPLB_DATA14);
1798
1799X5_14:	[ I1 ] = R1;		// Exception should occur here
1800
1801	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1802	CSYNC;
1803	WR_MMR(DCPLB_DATA5, 0, p0, r0);
1804
1805	// Now check that handler read correct values
1806	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1807	CHECKREG(r5, 0x10000000);
1808	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB5|FAULT_CPLB14));
1809	CHECKREG_SYM(r7, X5_14, r0);		// RETX should be value of X5_14	(HARDCODED ADDR!!)
1810
1811	//-------------------------------------------------------
1812	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1813
1814	WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1815	WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1816	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1817	CSYNC;
1818
1819	LD32(i1, 0x10000000);
1820	R1 = 0x33FA (Z);
1821	LD32(p2, DCPLB_DATA7);
1822
1823X6_7:	[ I1 ] = R1;		// Exception should occur here
1824
1825	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1826	CSYNC;
1827	WR_MMR(DCPLB_DATA6, 0, p0, r0);
1828
1829	// Now check that handler read correct values
1830	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1831	CHECKREG(r5, 0x10000000);
1832	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB6|FAULT_CPLB7));
1833	CHECKREG_SYM(r7, X6_7, r0);		// RETX should be value of X6_7	(HARDCODED ADDR!!)
1834
1835	//-------------------------------------------------------
1836	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1837
1838	WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1839	WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1840	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1841	CSYNC;
1842
1843	LD32(i1, 0x10000000);
1844	R1 = 0x6FBE (Z);
1845	LD32(p2, DCPLB_DATA8);
1846
1847X6_8:	[ I1 ] = R1;		// Exception should occur here
1848
1849	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1850	CSYNC;
1851	WR_MMR(DCPLB_DATA6, 0, p0, r0);
1852
1853	// Now check that handler read correct values
1854	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1855	CHECKREG(r5, 0x10000000);
1856	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB6|FAULT_CPLB8));
1857	CHECKREG_SYM(r7, X6_8, r0);		// RETX should be value of X6_8	(HARDCODED ADDR!!)
1858
1859	//-------------------------------------------------------
1860	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1861
1862	WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1863	WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1864	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1865	CSYNC;
1866
1867	LD32(i1, 0x10000000);
1868	R1 = 0x36A6 (Z);
1869	LD32(p2, DCPLB_DATA9);
1870
1871X6_9:	[ I1 ] = R1;		// Exception should occur here
1872
1873	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1874	CSYNC;
1875	WR_MMR(DCPLB_DATA6, 0, p0, r0);
1876
1877	// Now check that handler read correct values
1878	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1879	CHECKREG(r5, 0x10000000);
1880	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB6|FAULT_CPLB9));
1881	CHECKREG_SYM(r7, X6_9, r0);		// RETX should be value of X6_9	(HARDCODED ADDR!!)
1882
1883	//-------------------------------------------------------
1884	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1885
1886	WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1887	WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1888	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1889	CSYNC;
1890
1891	LD32(i1, 0x10000000);
1892	R1 = 0x2DDA (Z);
1893	LD32(p2, DCPLB_DATA10);
1894
1895X6_10:	[ I1 ] = R1;		// Exception should occur here
1896
1897	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1898	CSYNC;
1899	WR_MMR(DCPLB_DATA6, 0, p0, r0);
1900
1901	// Now check that handler read correct values
1902	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1903	CHECKREG(r5, 0x10000000);
1904	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB6|FAULT_CPLB10));
1905	CHECKREG_SYM(r7, X6_10, r0);		// RETX should be value of X6_10	(HARDCODED ADDR!!)
1906
1907	//-------------------------------------------------------
1908	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1909
1910	WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1911	WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1912	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1913	CSYNC;
1914
1915	LD32(i1, 0x10000000);
1916	R1 = 0x30E4 (Z);
1917	LD32(p2, DCPLB_DATA11);
1918
1919X6_11:	[ I1 ] = R1;		// Exception should occur here
1920
1921	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1922	CSYNC;
1923	WR_MMR(DCPLB_DATA6, 0, p0, r0);
1924
1925	// Now check that handler read correct values
1926	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1927	CHECKREG(r5, 0x10000000);
1928	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB6|FAULT_CPLB11));
1929	CHECKREG_SYM(r7, X6_11, r0);		// RETX should be value of X6_11	(HARDCODED ADDR!!)
1930
1931	//-------------------------------------------------------
1932	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1933
1934	WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1935	WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1936	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1937	CSYNC;
1938
1939	LD32(i1, 0x10000000);
1940	R1 = 0x0586 (Z);
1941	LD32(p2, DCPLB_DATA12);
1942
1943X6_12:	[ I1 ] = R1;		// Exception should occur here
1944
1945	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1946	CSYNC;
1947	WR_MMR(DCPLB_DATA6, 0, p0, r0);
1948
1949	// Now check that handler read correct values
1950	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1951	CHECKREG(r5, 0x10000000);
1952	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB6|FAULT_CPLB12));
1953	CHECKREG_SYM(r7, X6_12, r0);		// RETX should be value of X6_12	(HARDCODED ADDR!!)
1954
1955	//-------------------------------------------------------
1956	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1957
1958	WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1959	WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1960	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1961	CSYNC;
1962
1963	LD32(i1, 0x10000000);
1964	R1 = 0x148E (Z);
1965	LD32(p2, DCPLB_DATA13);
1966
1967X6_13:	[ I1 ] = R1;		// Exception should occur here
1968
1969	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1970	CSYNC;
1971	WR_MMR(DCPLB_DATA6, 0, p0, r0);
1972
1973	// Now check that handler read correct values
1974	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1975	CHECKREG(r5, 0x10000000);
1976	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB6|FAULT_CPLB13));
1977	CHECKREG_SYM(r7, X6_13, r0);		// RETX should be value of X6_13	(HARDCODED ADDR!!)
1978
1979	//-------------------------------------------------------
1980	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1981
1982	WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1983	WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1984	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1985	CSYNC;
1986
1987	LD32(i1, 0x10000000);
1988	R1 = 0x42DC (Z);
1989	LD32(p2, DCPLB_DATA14);
1990
1991X6_14:	[ I1 ] = R1;		// Exception should occur here
1992
1993	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1994	CSYNC;
1995	WR_MMR(DCPLB_DATA6, 0, p0, r0);
1996
1997	// Now check that handler read correct values
1998	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
1999	CHECKREG(r5, 0x10000000);
2000	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB6|FAULT_CPLB14));
2001	CHECKREG_SYM(r7, X6_14, r0);		// RETX should be value of X6_14	(HARDCODED ADDR!!)
2002
2003	//-------------------------------------------------------
2004	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2005
2006	WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2007	WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2008	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2009	CSYNC;
2010
2011	LD32(i1, 0x10000000);
2012	R1 = 0x5929 (Z);
2013	LD32(p2, DCPLB_DATA8);
2014
2015X7_8:	[ I1 ] = R1;		// Exception should occur here
2016
2017	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2018	CSYNC;
2019	WR_MMR(DCPLB_DATA7, 0, p0, r0);
2020
2021	// Now check that handler read correct values
2022	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2023	CHECKREG(r5, 0x10000000);
2024	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB7|FAULT_CPLB8));
2025	CHECKREG_SYM(r7, X7_8, r0);		// RETX should be value of X7_8	(HARDCODED ADDR!!)
2026
2027	//-------------------------------------------------------
2028	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2029
2030	WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2031	WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2032	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2033	CSYNC;
2034
2035	LD32(i1, 0x10000000);
2036	R1 = 0x0C6D (Z);
2037	LD32(p2, DCPLB_DATA9);
2038
2039X7_9:	[ I1 ] = R1;		// Exception should occur here
2040
2041	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2042	CSYNC;
2043	WR_MMR(DCPLB_DATA7, 0, p0, r0);
2044
2045	// Now check that handler read correct values
2046	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2047	CHECKREG(r5, 0x10000000);
2048	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB7|FAULT_CPLB9));
2049	CHECKREG_SYM(r7, X7_9, r0);		// RETX should be value of X7_9	(HARDCODED ADDR!!)
2050
2051	//-------------------------------------------------------
2052	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2053
2054	WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2055	WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2056	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2057	CSYNC;
2058
2059	LD32(i1, 0x10000000);
2060	R1 = 0x334E (Z);
2061	LD32(p2, DCPLB_DATA10);
2062
2063X7_10:	[ I1 ] = R1;		// Exception should occur here
2064
2065	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2066	CSYNC;
2067	WR_MMR(DCPLB_DATA7, 0, p0, r0);
2068
2069	// Now check that handler read correct values
2070	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2071	CHECKREG(r5, 0x10000000);
2072	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB7|FAULT_CPLB10));
2073	CHECKREG_SYM(r7, X7_10, r0);		// RETX should be value of X7_10	(HARDCODED ADDR!!)
2074
2075	//-------------------------------------------------------
2076	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2077
2078	WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2079	WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2080	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2081	CSYNC;
2082
2083	LD32(i1, 0x10000000);
2084	R1 = 0x62FF (Z);
2085	LD32(p2, DCPLB_DATA11);
2086
2087X7_11:	[ I1 ] = R1;		// Exception should occur here
2088
2089	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2090	CSYNC;
2091	WR_MMR(DCPLB_DATA7, 0, p0, r0);
2092
2093	// Now check that handler read correct values
2094	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2095	CHECKREG(r5, 0x10000000);
2096	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB7|FAULT_CPLB11));
2097	CHECKREG_SYM(r7, X7_11, r0);		// RETX should be value of X7_11	(HARDCODED ADDR!!)
2098
2099	//-------------------------------------------------------
2100	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2101
2102	WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2103	WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2104	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2105	CSYNC;
2106
2107	LD32(i1, 0x10000000);
2108	R1 = 0x1F56 (Z);
2109	LD32(p2, DCPLB_DATA12);
2110
2111X7_12:	[ I1 ] = R1;		// Exception should occur here
2112
2113	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2114	CSYNC;
2115	WR_MMR(DCPLB_DATA7, 0, p0, r0);
2116
2117	// Now check that handler read correct values
2118	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2119	CHECKREG(r5, 0x10000000);
2120	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB7|FAULT_CPLB12));
2121	CHECKREG_SYM(r7, X7_12, r0);		// RETX should be value of X7_12	(HARDCODED ADDR!!)
2122
2123	//-------------------------------------------------------
2124	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2125
2126	WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2127	WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2128	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2129	CSYNC;
2130
2131	LD32(i1, 0x10000000);
2132	R1 = 0x2BE1 (Z);
2133	LD32(p2, DCPLB_DATA13);
2134
2135X7_13:	[ I1 ] = R1;		// Exception should occur here
2136
2137	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2138	CSYNC;
2139	WR_MMR(DCPLB_DATA7, 0, p0, r0);
2140
2141	// Now check that handler read correct values
2142	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2143	CHECKREG(r5, 0x10000000);
2144	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB7|FAULT_CPLB13));
2145	CHECKREG_SYM(r7, X7_13, r0);		// RETX should be value of X7_13	(HARDCODED ADDR!!)
2146
2147	//-------------------------------------------------------
2148	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2149
2150	WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2151	WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2152	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2153	CSYNC;
2154
2155	LD32(i1, 0x10000000);
2156	R1 = 0x1D70 (Z);
2157	LD32(p2, DCPLB_DATA14);
2158
2159X7_14:	[ I1 ] = R1;		// Exception should occur here
2160
2161	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2162	CSYNC;
2163	WR_MMR(DCPLB_DATA7, 0, p0, r0);
2164
2165	// Now check that handler read correct values
2166	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2167	CHECKREG(r5, 0x10000000);
2168	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB7|FAULT_CPLB14));
2169	CHECKREG_SYM(r7, X7_14, r0);		// RETX should be value of X7_14	(HARDCODED ADDR!!)
2170
2171	//-------------------------------------------------------
2172	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2173
2174	WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2175	WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2176	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2177	CSYNC;
2178
2179	LD32(i1, 0x10000000);
2180	R1 = 0x2620 (Z);
2181	LD32(p2, DCPLB_DATA9);
2182
2183X8_9:	[ I1 ] = R1;		// Exception should occur here
2184
2185	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2186	CSYNC;
2187	WR_MMR(DCPLB_DATA8, 0, p0, r0);
2188
2189	// Now check that handler read correct values
2190	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2191	CHECKREG(r5, 0x10000000);
2192	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB8|FAULT_CPLB9));
2193	CHECKREG_SYM(r7, X8_9, r0);		// RETX should be value of X8_9	(HARDCODED ADDR!!)
2194
2195	//-------------------------------------------------------
2196	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2197
2198	WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2199	WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2200	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2201	CSYNC;
2202
2203	LD32(i1, 0x10000000);
2204	R1 = 0x26FB (Z);
2205	LD32(p2, DCPLB_DATA10);
2206
2207X8_10:	[ I1 ] = R1;		// Exception should occur here
2208
2209	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2210	CSYNC;
2211	WR_MMR(DCPLB_DATA8, 0, p0, r0);
2212
2213	// Now check that handler read correct values
2214	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2215	CHECKREG(r5, 0x10000000);
2216	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB8|FAULT_CPLB10));
2217	CHECKREG_SYM(r7, X8_10, r0);		// RETX should be value of X8_10	(HARDCODED ADDR!!)
2218
2219	//-------------------------------------------------------
2220	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2221
2222	WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2223	WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2224	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2225	CSYNC;
2226
2227	LD32(i1, 0x10000000);
2228	R1 = 0x718F (Z);
2229	LD32(p2, DCPLB_DATA11);
2230
2231X8_11:	[ I1 ] = R1;		// Exception should occur here
2232
2233	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2234	CSYNC;
2235	WR_MMR(DCPLB_DATA8, 0, p0, r0);
2236
2237	// Now check that handler read correct values
2238	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2239	CHECKREG(r5, 0x10000000);
2240	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB8|FAULT_CPLB11));
2241	CHECKREG_SYM(r7, X8_11, r0);		// RETX should be value of X8_11	(HARDCODED ADDR!!)
2242
2243	//-------------------------------------------------------
2244	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2245
2246	WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2247	WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2248	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2249	CSYNC;
2250
2251	LD32(i1, 0x10000000);
2252	R1 = 0x04B1 (Z);
2253	LD32(p2, DCPLB_DATA12);
2254
2255X8_12:	[ I1 ] = R1;		// Exception should occur here
2256
2257	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2258	CSYNC;
2259	WR_MMR(DCPLB_DATA8, 0, p0, r0);
2260
2261	// Now check that handler read correct values
2262	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2263	CHECKREG(r5, 0x10000000);
2264	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB8|FAULT_CPLB12));
2265	CHECKREG_SYM(r7, X8_12, r0);		// RETX should be value of X8_12	(HARDCODED ADDR!!)
2266
2267	//-------------------------------------------------------
2268	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2269
2270	WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2271	WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2272	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2273	CSYNC;
2274
2275	LD32(i1, 0x10000000);
2276	R1 = 0x5358 (Z);
2277	LD32(p2, DCPLB_DATA13);
2278
2279X8_13:	[ I1 ] = R1;		// Exception should occur here
2280
2281	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2282	CSYNC;
2283	WR_MMR(DCPLB_DATA8, 0, p0, r0);
2284
2285	// Now check that handler read correct values
2286	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2287	CHECKREG(r5, 0x10000000);
2288	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB8|FAULT_CPLB13));
2289	CHECKREG_SYM(r7, X8_13, r0);		// RETX should be value of X8_13	(HARDCODED ADDR!!)
2290
2291	//-------------------------------------------------------
2292	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2293
2294	WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2295	WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2296	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2297	CSYNC;
2298
2299	LD32(i1, 0x10000000);
2300	R1 = 0x3305 (Z);
2301	LD32(p2, DCPLB_DATA14);
2302
2303X8_14:	[ I1 ] = R1;		// Exception should occur here
2304
2305	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2306	CSYNC;
2307	WR_MMR(DCPLB_DATA8, 0, p0, r0);
2308
2309	// Now check that handler read correct values
2310	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2311	CHECKREG(r5, 0x10000000);
2312	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB8|FAULT_CPLB14));
2313	CHECKREG_SYM(r7, X8_14, r0);		// RETX should be value of X8_14	(HARDCODED ADDR!!)
2314
2315	//-------------------------------------------------------
2316	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2317
2318	WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2319	WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2320	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2321	CSYNC;
2322
2323	LD32(i1, 0x10000000);
2324	R1 = 0x5690 (Z);
2325	LD32(p2, DCPLB_DATA10);
2326
2327X9_10:	[ I1 ] = R1;		// Exception should occur here
2328
2329	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2330	CSYNC;
2331	WR_MMR(DCPLB_DATA9, 0, p0, r0);
2332
2333	// Now check that handler read correct values
2334	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2335	CHECKREG(r5, 0x10000000);
2336	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB9|FAULT_CPLB10));
2337	CHECKREG_SYM(r7, X9_10, r0);		// RETX should be value of X9_10	(HARDCODED ADDR!!)
2338
2339	//-------------------------------------------------------
2340	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2341
2342	WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2343	WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2344	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2345	CSYNC;
2346
2347	LD32(i1, 0x10000000);
2348	R1 = 0x5DC5 (Z);
2349	LD32(p2, DCPLB_DATA11);
2350
2351X9_11:	[ I1 ] = R1;		// Exception should occur here
2352
2353	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2354	CSYNC;
2355	WR_MMR(DCPLB_DATA9, 0, p0, r0);
2356
2357	// Now check that handler read correct values
2358	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2359	CHECKREG(r5, 0x10000000);
2360	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB9|FAULT_CPLB11));
2361	CHECKREG_SYM(r7, X9_11, r0);		// RETX should be value of X9_11	(HARDCODED ADDR!!)
2362
2363	//-------------------------------------------------------
2364	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2365
2366	WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2367	WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2368	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2369	CSYNC;
2370
2371	LD32(i1, 0x10000000);
2372	R1 = 0x7809 (Z);
2373	LD32(p2, DCPLB_DATA12);
2374
2375X9_12:	[ I1 ] = R1;		// Exception should occur here
2376
2377	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2378	CSYNC;
2379	WR_MMR(DCPLB_DATA9, 0, p0, r0);
2380
2381	// Now check that handler read correct values
2382	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2383	CHECKREG(r5, 0x10000000);
2384	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB9|FAULT_CPLB12));
2385	CHECKREG_SYM(r7, X9_12, r0);		// RETX should be value of X9_12	(HARDCODED ADDR!!)
2386
2387	//-------------------------------------------------------
2388	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2389
2390	WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2391	WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2392	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2393	CSYNC;
2394
2395	LD32(i1, 0x10000000);
2396	R1 = 0x1DDC (Z);
2397	LD32(p2, DCPLB_DATA13);
2398
2399X9_13:	[ I1 ] = R1;		// Exception should occur here
2400
2401	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2402	CSYNC;
2403	WR_MMR(DCPLB_DATA9, 0, p0, r0);
2404
2405	// Now check that handler read correct values
2406	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2407	CHECKREG(r5, 0x10000000);
2408	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB9|FAULT_CPLB13));
2409	CHECKREG_SYM(r7, X9_13, r0);		// RETX should be value of X9_13	(HARDCODED ADDR!!)
2410
2411	//-------------------------------------------------------
2412	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2413
2414	WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2415	WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2416	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2417	CSYNC;
2418
2419	LD32(i1, 0x10000000);
2420	R1 = 0x6B53 (Z);
2421	LD32(p2, DCPLB_DATA14);
2422
2423X9_14:	[ I1 ] = R1;		// Exception should occur here
2424
2425	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2426	CSYNC;
2427	WR_MMR(DCPLB_DATA9, 0, p0, r0);
2428
2429	// Now check that handler read correct values
2430	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2431	CHECKREG(r5, 0x10000000);
2432	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB9|FAULT_CPLB14));
2433	CHECKREG_SYM(r7, X9_14, r0);		// RETX should be value of X9_14	(HARDCODED ADDR!!)
2434
2435	//-------------------------------------------------------
2436	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2437
2438	WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2439	WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2440	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2441	CSYNC;
2442
2443	LD32(i1, 0x10000000);
2444	R1 = 0x7BCD (Z);
2445	LD32(p2, DCPLB_DATA11);
2446
2447X10_11:	[ I1 ] = R1;		// Exception should occur here
2448
2449	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2450	CSYNC;
2451	WR_MMR(DCPLB_DATA10, 0, p0, r0);
2452
2453	// Now check that handler read correct values
2454	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2455	CHECKREG(r5, 0x10000000);
2456	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB10|FAULT_CPLB11));
2457	CHECKREG_SYM(r7, X10_11, r0);		// RETX should be value of X10_11	(HARDCODED ADDR!!)
2458
2459	//-------------------------------------------------------
2460	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2461
2462	WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2463	WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2464	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2465	CSYNC;
2466
2467	LD32(i1, 0x10000000);
2468	R1 = 0x63AA (Z);
2469	LD32(p2, DCPLB_DATA12);
2470
2471X10_12:	[ I1 ] = R1;		// Exception should occur here
2472
2473	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2474	CSYNC;
2475	WR_MMR(DCPLB_DATA10, 0, p0, r0);
2476
2477	// Now check that handler read correct values
2478	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2479	CHECKREG(r5, 0x10000000);
2480	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB10|FAULT_CPLB12));
2481	CHECKREG_SYM(r7, X10_12, r0);		// RETX should be value of X10_12	(HARDCODED ADDR!!)
2482
2483	//-------------------------------------------------------
2484	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2485
2486	WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2487	WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2488	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2489	CSYNC;
2490
2491	LD32(i1, 0x10000000);
2492	R1 = 0x373B (Z);
2493	LD32(p2, DCPLB_DATA13);
2494
2495X10_13:	[ I1 ] = R1;		// Exception should occur here
2496
2497	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2498	CSYNC;
2499	WR_MMR(DCPLB_DATA10, 0, p0, r0);
2500
2501	// Now check that handler read correct values
2502	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2503	CHECKREG(r5, 0x10000000);
2504	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB10|FAULT_CPLB13));
2505	CHECKREG_SYM(r7, X10_13, r0);		// RETX should be value of X10_13	(HARDCODED ADDR!!)
2506
2507	//-------------------------------------------------------
2508	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2509
2510	WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2511	WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2512	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2513	CSYNC;
2514
2515	LD32(i1, 0x10000000);
2516	R1 = 0x5648 (Z);
2517	LD32(p2, DCPLB_DATA14);
2518
2519X10_14:	[ I1 ] = R1;		// Exception should occur here
2520
2521	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2522	CSYNC;
2523	WR_MMR(DCPLB_DATA10, 0, p0, r0);
2524
2525	// Now check that handler read correct values
2526	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2527	CHECKREG(r5, 0x10000000);
2528	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB10|FAULT_CPLB14));
2529	CHECKREG_SYM(r7, X10_14, r0);		// RETX should be value of X10_14	(HARDCODED ADDR!!)
2530
2531	//-------------------------------------------------------
2532	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2533
2534	WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2535	WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2536	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2537	CSYNC;
2538
2539	LD32(i1, 0x10000000);
2540	R1 = 0x6799 (Z);
2541	LD32(p2, DCPLB_DATA12);
2542
2543X11_12:	[ I1 ] = R1;		// Exception should occur here
2544
2545	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2546	CSYNC;
2547	WR_MMR(DCPLB_DATA11, 0, p0, r0);
2548
2549	// Now check that handler read correct values
2550	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2551	CHECKREG(r5, 0x10000000);
2552	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB11|FAULT_CPLB12));
2553	CHECKREG_SYM(r7, X11_12, r0);		// RETX should be value of X11_12	(HARDCODED ADDR!!)
2554
2555	//-------------------------------------------------------
2556	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2557
2558	WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2559	WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2560	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2561	CSYNC;
2562
2563	LD32(i1, 0x10000000);
2564	R1 = 0x1452 (Z);
2565	LD32(p2, DCPLB_DATA13);
2566
2567X11_13:	[ I1 ] = R1;		// Exception should occur here
2568
2569	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2570	CSYNC;
2571	WR_MMR(DCPLB_DATA11, 0, p0, r0);
2572
2573	// Now check that handler read correct values
2574	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2575	CHECKREG(r5, 0x10000000);
2576	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB11|FAULT_CPLB13));
2577	CHECKREG_SYM(r7, X11_13, r0);		// RETX should be value of X11_13	(HARDCODED ADDR!!)
2578
2579	//-------------------------------------------------------
2580	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2581
2582	WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2583	WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2584	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2585	CSYNC;
2586
2587	LD32(i1, 0x10000000);
2588	R1 = 0x23D3 (Z);
2589	LD32(p2, DCPLB_DATA14);
2590
2591X11_14:	[ I1 ] = R1;		// Exception should occur here
2592
2593	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2594	CSYNC;
2595	WR_MMR(DCPLB_DATA11, 0, p0, r0);
2596
2597	// Now check that handler read correct values
2598	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2599	CHECKREG(r5, 0x10000000);
2600	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB11|FAULT_CPLB14));
2601	CHECKREG_SYM(r7, X11_14, r0);		// RETX should be value of X11_14	(HARDCODED ADDR!!)
2602
2603	//-------------------------------------------------------
2604	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2605
2606	WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2607	WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2608	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2609	CSYNC;
2610
2611	LD32(i1, 0x10000000);
2612	R1 = 0x1152 (Z);
2613	LD32(p2, DCPLB_DATA13);
2614
2615X12_13:	[ I1 ] = R1;		// Exception should occur here
2616
2617	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2618	CSYNC;
2619	WR_MMR(DCPLB_DATA12, 0, p0, r0);
2620
2621	// Now check that handler read correct values
2622	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2623	CHECKREG(r5, 0x10000000);
2624	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB12|FAULT_CPLB13));
2625	CHECKREG_SYM(r7, X12_13, r0);		// RETX should be value of X12_13	(HARDCODED ADDR!!)
2626
2627	//-------------------------------------------------------
2628	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2629
2630	WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2631	WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2632	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2633	CSYNC;
2634
2635	LD32(i1, 0x10000000);
2636	R1 = 0x6E9D (Z);
2637	LD32(p2, DCPLB_DATA14);
2638
2639X12_14:	[ I1 ] = R1;		// Exception should occur here
2640
2641	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2642	CSYNC;
2643	WR_MMR(DCPLB_DATA12, 0, p0, r0);
2644
2645	// Now check that handler read correct values
2646	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2647	CHECKREG(r5, 0x10000000);
2648	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB12|FAULT_CPLB14));
2649	CHECKREG_SYM(r7, X12_14, r0);		// RETX should be value of X12_14	(HARDCODED ADDR!!)
2650
2651	//-------------------------------------------------------
2652	R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2653
2654	WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2655	WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2656	WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2657	CSYNC;
2658
2659	LD32(i1, 0x10000000);
2660	R1 = 0x6006 (Z);
2661	LD32(p2, DCPLB_DATA14);
2662
2663X13_14:	[ I1 ] = R1;		// Exception should occur here
2664
2665	WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2666	CSYNC;
2667	WR_MMR(DCPLB_DATA13, 0, p0, r0);
2668
2669	// Now check that handler read correct values
2670	CHECKREG(r4,0x27);		// supv and EXCPT_PROT
2671	CHECKREG(r5, 0x10000000);
2672	CHECKREG(r6, (FAULT_WRITE|FAULT_DAG0|FAULT_SUPV|FAULT_CPLB13|FAULT_CPLB14));
2673	CHECKREG_SYM(r7, X13_14, r0);		// RETX should be value of X13_14	(HARDCODED ADDR!!)
2674
2675	//-------------------------------------------------------
2676User:
2677	NOP;
2678	dbg_pass;
2679