ld: Move the .note.build-id section to near the start of the memory map.
[binutils-gdb.git] / sim / testsuite / bfin / lmu_cplb_multiple1.S
blobcf8cdf454f85197fd27e7b85d318f2661008af85
1 //Original:/proj/frio/dv/testcases/lmu/lmu_cplb_multiple1/lmu_cplb_multiple1.dsp
2 // Description: Multiple CPLB Hit exceptions (DAG1)
3 # mach: bfin
4 # sim: --environment operating
6 #include "test.h"
7 .include "testutils.inc"
8 start
10 include(selfcheck.inc)
11 include(std.inc)
12 include(mmrs.inc)
14 //-------------------------------------
16 // Test LMU/CPLB exceptions
18 // Basic outline:
19 //   Set exception handler
20 //   program CPLB Entries
21 //   Enable CPLB in DMEM_CNTL
22 //   perform access
23 //   verify exception occurred
25 CHECK_INIT(p5, 0xEFFFFFFC);
27 //-------------------------
28 // Zero the CPLB Address and Data regs.
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
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
67         // Now set the CPLB entries we will need
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);
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);
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;
100         A0 = 0;
102         // go to user mode. and enable exceptions
103         LD32_LABEL(r0, User);
104         RETI = R0;
106         // But first raise interrupt 15 so we can do one test
107         // in supervisor mode.
108         RAISE 15;
109         NOP;
111         RTI;
113         // Nops to work around ICache bug
114         NOP;NOP;NOP;NOP;NOP;
115         NOP;NOP;NOP;NOP;NOP;
117 handler:
118         // generic protection exception handler
119         // Inputs:
120         //      p2:     addr of CPLB entry to be modified       ( current test)
121         //
122         // Outputs:
123         //      r4:     SEQSTAT
124         //      r5:     DCPLB_FAULT_ADDR
125         //      r6:     DCPLB_STATUS
126         //      r7:     RETX    (instruction addr where exception occurred)
129         R4 = SEQSTAT;   // Get exception cause
130         R4 <<= 24;      // Clear HWERRCAUSE + SFTRESET
131         R4 >>= 24;
133         // read data addr which caused exception
134         RD_MMR(DCPLB_FAULT_ADDR, p0, r5);
136         RD_MMR(DCPLB_STATUS, p0, r6);
138         R7 = RETX;      // get address of excepting instruction
140         // disable the offending CPLB entries
141         R2 = 0;
142         [ P2 ] = R2;
144         CSYNC;
146         // return from exception and re-execute offending instruction
147         RTX;
149         // Nops to work around ICache bug
150         NOP;NOP;NOP;NOP;NOP;
151         NOP;NOP;NOP;NOP;NOP;
154 int_15:
155         // Interrupt 15 handler - test will run in supervisor mode
157         //-------------------------------------------------------
158         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
160         WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
161         WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
162         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
163         CSYNC;
165         LD32(i1, 0x10000000);
166         R1 = 0x41C6 (Z);
167         LD32(p2, DCPLB_DATA1);
169 X0_1:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
171         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
172         CSYNC;
173         WR_MMR(DCPLB_DATA0, 0, p0, r0);
175         // Now check that handler read correct values
176         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
177         CHECKREG(r5, 0x10000000);
178         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB1));
179         CHECKREG_SYM(r7, X0_1, r0);             // RETX should be value of X0_1 (HARDCODED ADDR!!)
181         //-------------------------------------------------------
182         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
184         WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
185         WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
186         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
187         CSYNC;
189         LD32(i1, 0x10000000);
190         R1 = 0x167E (Z);
191         LD32(p2, DCPLB_DATA2);
193 X0_2:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
195         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
196         CSYNC;
197         WR_MMR(DCPLB_DATA0, 0, p0, r0);
199         // Now check that handler read correct values
200         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
201         CHECKREG(r5, 0x10000000);
202         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB2));
203         CHECKREG_SYM(r7, X0_2, r0);             // RETX should be value of X0_2 (HARDCODED ADDR!!)
205         //-------------------------------------------------------
206         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
208         WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
209         WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
210         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
211         CSYNC;
213         LD32(i1, 0x10000000);
214         R1 = 0x2781 (Z);
215         LD32(p2, DCPLB_DATA3);
217 X0_3:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
219         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
220         CSYNC;
221         WR_MMR(DCPLB_DATA0, 0, p0, r0);
223         // Now check that handler read correct values
224         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
225         CHECKREG(r5, 0x10000000);
226         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB3));
227         CHECKREG_SYM(r7, X0_3, r0);             // RETX should be value of X0_3 (HARDCODED ADDR!!)
229         //-------------------------------------------------------
230         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
232         WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
233         WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
234         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
235         CSYNC;
237         LD32(i1, 0x10000000);
238         R1 = 0x446B (Z);
239         LD32(p2, DCPLB_DATA4);
241 X0_4:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
243         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
244         CSYNC;
245         WR_MMR(DCPLB_DATA0, 0, p0, r0);
247         // Now check that handler read correct values
248         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
249         CHECKREG(r5, 0x10000000);
250         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB4));
251         CHECKREG_SYM(r7, X0_4, r0);             // RETX should be value of X0_4 (HARDCODED ADDR!!)
253         //-------------------------------------------------------
254         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
256         WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
257         WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
258         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
259         CSYNC;
261         LD32(i1, 0x10000000);
262         R1 = 0x794B (Z);
263         LD32(p2, DCPLB_DATA5);
265 X0_5:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
267         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
268         CSYNC;
269         WR_MMR(DCPLB_DATA0, 0, p0, r0);
271         // Now check that handler read correct values
272         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
273         CHECKREG(r5, 0x10000000);
274         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB5));
275         CHECKREG_SYM(r7, X0_5, r0);             // RETX should be value of X0_5 (HARDCODED ADDR!!)
277         //-------------------------------------------------------
278         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
280         WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
281         WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
282         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
283         CSYNC;
285         LD32(i1, 0x10000000);
286         R1 = 0x15FB (Z);
287         LD32(p2, DCPLB_DATA6);
289 X0_6:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
291         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
292         CSYNC;
293         WR_MMR(DCPLB_DATA0, 0, p0, r0);
295         // Now check that handler read correct values
296         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
297         CHECKREG(r5, 0x10000000);
298         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB6));
299         CHECKREG_SYM(r7, X0_6, r0);             // RETX should be value of X0_6 (HARDCODED ADDR!!)
301         //-------------------------------------------------------
302         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
304         WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
305         WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
306         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
307         CSYNC;
309         LD32(i1, 0x10000000);
310         R1 = 0x59E2 (Z);
311         LD32(p2, DCPLB_DATA7);
313 X0_7:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
315         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
316         CSYNC;
317         WR_MMR(DCPLB_DATA0, 0, p0, r0);
319         // Now check that handler read correct values
320         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
321         CHECKREG(r5, 0x10000000);
322         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB7));
323         CHECKREG_SYM(r7, X0_7, r0);             // RETX should be value of X0_7 (HARDCODED ADDR!!)
325         //-------------------------------------------------------
326         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
328         WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
329         WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
330         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
331         CSYNC;
333         LD32(i1, 0x10000000);
334         R1 = 0x1CFB (Z);
335         LD32(p2, DCPLB_DATA8);
337 X0_8:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
339         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
340         CSYNC;
341         WR_MMR(DCPLB_DATA0, 0, p0, r0);
343         // Now check that handler read correct values
344         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
345         CHECKREG(r5, 0x10000000);
346         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB8));
347         CHECKREG_SYM(r7, X0_8, r0);             // RETX should be value of X0_8 (HARDCODED ADDR!!)
349         //-------------------------------------------------------
350         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
352         WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
353         WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
354         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
355         CSYNC;
357         LD32(i1, 0x10000000);
358         R1 = 0x3F54 (Z);
359         LD32(p2, DCPLB_DATA9);
361 X0_9:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
363         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
364         CSYNC;
365         WR_MMR(DCPLB_DATA0, 0, p0, r0);
367         // Now check that handler read correct values
368         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
369         CHECKREG(r5, 0x10000000);
370         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB9));
371         CHECKREG_SYM(r7, X0_9, r0);             // RETX should be value of X0_9 (HARDCODED ADDR!!)
373         //-------------------------------------------------------
374         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
376         WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
377         WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
378         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
379         CSYNC;
381         LD32(i1, 0x10000000);
382         R1 = 0x0FF6 (Z);
383         LD32(p2, DCPLB_DATA10);
385 X0_10:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
387         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
388         CSYNC;
389         WR_MMR(DCPLB_DATA0, 0, p0, r0);
391         // Now check that handler read correct values
392         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
393         CHECKREG(r5, 0x10000000);
394         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB10));
395         CHECKREG_SYM(r7, X0_10, r0);            // RETX should be value of X0_10        (HARDCODED ADDR!!)
397         //-------------------------------------------------------
398         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
400         WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
401         WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
402         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
403         CSYNC;
405         LD32(i1, 0x10000000);
406         R1 = 0x0ABD (Z);
407         LD32(p2, DCPLB_DATA11);
409 X0_11:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
411         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
412         CSYNC;
413         WR_MMR(DCPLB_DATA0, 0, p0, r0);
415         // Now check that handler read correct values
416         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
417         CHECKREG(r5, 0x10000000);
418         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB11));
419         CHECKREG_SYM(r7, X0_11, r0);            // RETX should be value of X0_11        (HARDCODED ADDR!!)
421         //-------------------------------------------------------
422         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
424         WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
425         WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
426         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
427         CSYNC;
429         LD32(i1, 0x10000000);
430         R1 = 0x31DF (Z);
431         LD32(p2, DCPLB_DATA12);
433 X0_12:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
435         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
436         CSYNC;
437         WR_MMR(DCPLB_DATA0, 0, p0, r0);
439         // Now check that handler read correct values
440         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
441         CHECKREG(r5, 0x10000000);
442         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB12));
443         CHECKREG_SYM(r7, X0_12, r0);            // RETX should be value of X0_12        (HARDCODED ADDR!!)
445         //-------------------------------------------------------
446         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
448         WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
449         WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
450         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
451         CSYNC;
453         LD32(i1, 0x10000000);
454         R1 = 0x237C (Z);
455         LD32(p2, DCPLB_DATA13);
457 X0_13:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
459         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
460         CSYNC;
461         WR_MMR(DCPLB_DATA0, 0, p0, r0);
463         // Now check that handler read correct values
464         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
465         CHECKREG(r5, 0x10000000);
466         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB13));
467         CHECKREG_SYM(r7, X0_13, r0);            // RETX should be value of X0_13        (HARDCODED ADDR!!)
469         //-------------------------------------------------------
470         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
472         WR_MMR(DCPLB_DATA0, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
473         WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
474         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
475         CSYNC;
477         LD32(i1, 0x10000000);
478         R1 = 0x2F1C (Z);
479         LD32(p2, DCPLB_DATA14);
481 X0_14:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
483         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
484         CSYNC;
485         WR_MMR(DCPLB_DATA0, 0, p0, r0);
487         // Now check that handler read correct values
488         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
489         CHECKREG(r5, 0x10000000);
490         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB0|FAULT_CPLB14));
491         CHECKREG_SYM(r7, X0_14, r0);            // RETX should be value of X0_14        (HARDCODED ADDR!!)
493         //-------------------------------------------------------
494         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
496         WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
497         WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
498         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
499         CSYNC;
501         LD32(i1, 0x10000000);
502         R1 = 0x7DE1 (Z);
503         LD32(p2, DCPLB_DATA2);
505 X1_2:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
507         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
508         CSYNC;
509         WR_MMR(DCPLB_DATA1, 0, p0, r0);
511         // Now check that handler read correct values
512         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
513         CHECKREG(r5, 0x10000000);
514         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB2));
515         CHECKREG_SYM(r7, X1_2, r0);             // RETX should be value of X1_2 (HARDCODED ADDR!!)
517         //-------------------------------------------------------
518         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
520         WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
521         WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
522         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
523         CSYNC;
525         LD32(i1, 0x10000000);
526         R1 = 0x4487 (Z);
527         LD32(p2, DCPLB_DATA3);
529 X1_3:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
531         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
532         CSYNC;
533         WR_MMR(DCPLB_DATA1, 0, p0, r0);
535         // Now check that handler read correct values
536         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
537         CHECKREG(r5, 0x10000000);
538         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB3));
539         CHECKREG_SYM(r7, X1_3, r0);             // RETX should be value of X1_3 (HARDCODED ADDR!!)
541         //-------------------------------------------------------
542         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
544         WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
545         WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
546         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
547         CSYNC;
549         LD32(i1, 0x10000000);
550         R1 = 0x6201 (Z);
551         LD32(p2, DCPLB_DATA4);
553 X1_4:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
555         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
556         CSYNC;
557         WR_MMR(DCPLB_DATA1, 0, p0, r0);
559         // Now check that handler read correct values
560         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
561         CHECKREG(r5, 0x10000000);
562         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB4));
563         CHECKREG_SYM(r7, X1_4, r0);             // RETX should be value of X1_4 (HARDCODED ADDR!!)
565         //-------------------------------------------------------
566         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
568         WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
569         WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
570         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
571         CSYNC;
573         LD32(i1, 0x10000000);
574         R1 = 0x52BF (Z);
575         LD32(p2, DCPLB_DATA5);
577 X1_5:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
579         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
580         CSYNC;
581         WR_MMR(DCPLB_DATA1, 0, p0, r0);
583         // Now check that handler read correct values
584         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
585         CHECKREG(r5, 0x10000000);
586         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB5));
587         CHECKREG_SYM(r7, X1_5, r0);             // RETX should be value of X1_5 (HARDCODED ADDR!!)
589         //-------------------------------------------------------
590         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
592         WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
593         WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
594         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
595         CSYNC;
597         LD32(i1, 0x10000000);
598         R1 = 0x6231 (Z);
599         LD32(p2, DCPLB_DATA6);
601 X1_6:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
603         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
604         CSYNC;
605         WR_MMR(DCPLB_DATA1, 0, p0, r0);
607         // Now check that handler read correct values
608         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
609         CHECKREG(r5, 0x10000000);
610         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB6));
611         CHECKREG_SYM(r7, X1_6, r0);             // RETX should be value of X1_6 (HARDCODED ADDR!!)
613         //-------------------------------------------------------
614         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
616         WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
617         WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
618         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
619         CSYNC;
621         LD32(i1, 0x10000000);
622         R1 = 0x63DE (Z);
623         LD32(p2, DCPLB_DATA7);
625 X1_7:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
627         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
628         CSYNC;
629         WR_MMR(DCPLB_DATA1, 0, p0, r0);
631         // Now check that handler read correct values
632         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
633         CHECKREG(r5, 0x10000000);
634         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB7));
635         CHECKREG_SYM(r7, X1_7, r0);             // RETX should be value of X1_7 (HARDCODED ADDR!!)
637         //-------------------------------------------------------
638         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
640         WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
641         WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
642         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
643         CSYNC;
645         LD32(i1, 0x10000000);
646         R1 = 0x6956 (Z);
647         LD32(p2, DCPLB_DATA8);
649 X1_8:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
651         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
652         CSYNC;
653         WR_MMR(DCPLB_DATA1, 0, p0, r0);
655         // Now check that handler read correct values
656         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
657         CHECKREG(r5, 0x10000000);
658         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB8));
659         CHECKREG_SYM(r7, X1_8, r0);             // RETX should be value of X1_8 (HARDCODED ADDR!!)
661         //-------------------------------------------------------
662         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
664         WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
665         WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
666         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
667         CSYNC;
669         LD32(i1, 0x10000000);
670         R1 = 0x1372 (Z);
671         LD32(p2, DCPLB_DATA9);
673 X1_9:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
675         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
676         CSYNC;
677         WR_MMR(DCPLB_DATA1, 0, p0, r0);
679         // Now check that handler read correct values
680         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
681         CHECKREG(r5, 0x10000000);
682         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB9));
683         CHECKREG_SYM(r7, X1_9, r0);             // RETX should be value of X1_9 (HARDCODED ADDR!!)
685         //-------------------------------------------------------
686         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
688         WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
689         WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
690         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
691         CSYNC;
693         LD32(i1, 0x10000000);
694         R1 = 0x500F (Z);
695         LD32(p2, DCPLB_DATA10);
697 X1_10:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
699         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
700         CSYNC;
701         WR_MMR(DCPLB_DATA1, 0, p0, r0);
703         // Now check that handler read correct values
704         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
705         CHECKREG(r5, 0x10000000);
706         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB10));
707         CHECKREG_SYM(r7, X1_10, r0);            // RETX should be value of X1_10        (HARDCODED ADDR!!)
709         //-------------------------------------------------------
710         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
712         WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
713         WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
714         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
715         CSYNC;
717         LD32(i1, 0x10000000);
718         R1 = 0x2847 (Z);
719         LD32(p2, DCPLB_DATA11);
721 X1_11:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
723         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
724         CSYNC;
725         WR_MMR(DCPLB_DATA1, 0, p0, r0);
727         // Now check that handler read correct values
728         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
729         CHECKREG(r5, 0x10000000);
730         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB11));
731         CHECKREG_SYM(r7, X1_11, r0);            // RETX should be value of X1_11        (HARDCODED ADDR!!)
733         //-------------------------------------------------------
734         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
736         WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
737         WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
738         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
739         CSYNC;
741         LD32(i1, 0x10000000);
742         R1 = 0x2C67 (Z);
743         LD32(p2, DCPLB_DATA12);
745 X1_12:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
747         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
748         CSYNC;
749         WR_MMR(DCPLB_DATA1, 0, p0, r0);
751         // Now check that handler read correct values
752         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
753         CHECKREG(r5, 0x10000000);
754         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB12));
755         CHECKREG_SYM(r7, X1_12, r0);            // RETX should be value of X1_12        (HARDCODED ADDR!!)
757         //-------------------------------------------------------
758         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
760         WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
761         WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
762         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
763         CSYNC;
765         LD32(i1, 0x10000000);
766         R1 = 0x7566 (Z);
767         LD32(p2, DCPLB_DATA13);
769 X1_13:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
771         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
772         CSYNC;
773         WR_MMR(DCPLB_DATA1, 0, p0, r0);
775         // Now check that handler read correct values
776         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
777         CHECKREG(r5, 0x10000000);
778         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB13));
779         CHECKREG_SYM(r7, X1_13, r0);            // RETX should be value of X1_13        (HARDCODED ADDR!!)
781         //-------------------------------------------------------
782         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
784         WR_MMR(DCPLB_DATA1, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
785         WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
786         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
787         CSYNC;
789         LD32(i1, 0x10000000);
790         R1 = 0x4287 (Z);
791         LD32(p2, DCPLB_DATA14);
793 X1_14:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
795         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
796         CSYNC;
797         WR_MMR(DCPLB_DATA1, 0, p0, r0);
799         // Now check that handler read correct values
800         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
801         CHECKREG(r5, 0x10000000);
802         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB1|FAULT_CPLB14));
803         CHECKREG_SYM(r7, X1_14, r0);            // RETX should be value of X1_14        (HARDCODED ADDR!!)
805         //-------------------------------------------------------
806         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
808         WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
809         WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
810         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
811         CSYNC;
813         LD32(i1, 0x10000000);
814         R1 = 0x3359 (Z);
815         LD32(p2, DCPLB_DATA3);
817 X2_3:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
819         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
820         CSYNC;
821         WR_MMR(DCPLB_DATA2, 0, p0, r0);
823         // Now check that handler read correct values
824         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
825         CHECKREG(r5, 0x10000000);
826         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB3));
827         CHECKREG_SYM(r7, X2_3, r0);             // RETX should be value of X2_3 (HARDCODED ADDR!!)
829         //-------------------------------------------------------
830         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
832         WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
833         WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
834         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
835         CSYNC;
837         LD32(i1, 0x10000000);
838         R1 = 0x4DAA (Z);
839         LD32(p2, DCPLB_DATA4);
841 X2_4:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
843         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
844         CSYNC;
845         WR_MMR(DCPLB_DATA2, 0, p0, r0);
847         // Now check that handler read correct values
848         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
849         CHECKREG(r5, 0x10000000);
850         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB4));
851         CHECKREG_SYM(r7, X2_4, r0);             // RETX should be value of X2_4 (HARDCODED ADDR!!)
853         //-------------------------------------------------------
854         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
856         WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
857         WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
858         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
859         CSYNC;
861         LD32(i1, 0x10000000);
862         R1 = 0x6488 (Z);
863         LD32(p2, DCPLB_DATA5);
865 X2_5:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
867         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
868         CSYNC;
869         WR_MMR(DCPLB_DATA2, 0, p0, r0);
871         // Now check that handler read correct values
872         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
873         CHECKREG(r5, 0x10000000);
874         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB5));
875         CHECKREG_SYM(r7, X2_5, r0);             // RETX should be value of X2_5 (HARDCODED ADDR!!)
877         //-------------------------------------------------------
878         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
880         WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
881         WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
882         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
883         CSYNC;
885         LD32(i1, 0x10000000);
886         R1 = 0x773C (Z);
887         LD32(p2, DCPLB_DATA6);
889 X2_6:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
891         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
892         CSYNC;
893         WR_MMR(DCPLB_DATA2, 0, p0, r0);
895         // Now check that handler read correct values
896         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
897         CHECKREG(r5, 0x10000000);
898         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB6));
899         CHECKREG_SYM(r7, X2_6, r0);             // RETX should be value of X2_6 (HARDCODED ADDR!!)
901         //-------------------------------------------------------
902         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
904         WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
905         WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
906         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
907         CSYNC;
909         LD32(i1, 0x10000000);
910         R1 = 0x6F59 (Z);
911         LD32(p2, DCPLB_DATA7);
913 X2_7:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
915         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
916         CSYNC;
917         WR_MMR(DCPLB_DATA2, 0, p0, r0);
919         // Now check that handler read correct values
920         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
921         CHECKREG(r5, 0x10000000);
922         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB7));
923         CHECKREG_SYM(r7, X2_7, r0);             // RETX should be value of X2_7 (HARDCODED ADDR!!)
925         //-------------------------------------------------------
926         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
928         WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
929         WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
930         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
931         CSYNC;
933         LD32(i1, 0x10000000);
934         R1 = 0x6EEA (Z);
935         LD32(p2, DCPLB_DATA8);
937 X2_8:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
939         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
940         CSYNC;
941         WR_MMR(DCPLB_DATA2, 0, p0, r0);
943         // Now check that handler read correct values
944         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
945         CHECKREG(r5, 0x10000000);
946         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB8));
947         CHECKREG_SYM(r7, X2_8, r0);             // RETX should be value of X2_8 (HARDCODED ADDR!!)
949         //-------------------------------------------------------
950         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
952         WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
953         WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
954         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
955         CSYNC;
957         LD32(i1, 0x10000000);
958         R1 = 0x5656 (Z);
959         LD32(p2, DCPLB_DATA9);
961 X2_9:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
963         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
964         CSYNC;
965         WR_MMR(DCPLB_DATA2, 0, p0, r0);
967         // Now check that handler read correct values
968         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
969         CHECKREG(r5, 0x10000000);
970         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB9));
971         CHECKREG_SYM(r7, X2_9, r0);             // RETX should be value of X2_9 (HARDCODED ADDR!!)
973         //-------------------------------------------------------
974         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
976         WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
977         WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
978         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
979         CSYNC;
981         LD32(i1, 0x10000000);
982         R1 = 0x6113 (Z);
983         LD32(p2, DCPLB_DATA10);
985 X2_10:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
987         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
988         CSYNC;
989         WR_MMR(DCPLB_DATA2, 0, p0, r0);
991         // Now check that handler read correct values
992         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
993         CHECKREG(r5, 0x10000000);
994         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB10));
995         CHECKREG_SYM(r7, X2_10, r0);            // RETX should be value of X2_10        (HARDCODED ADDR!!)
997         //-------------------------------------------------------
998         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1000         WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1001         WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1002         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1003         CSYNC;
1005         LD32(i1, 0x10000000);
1006         R1 = 0x4A7B (Z);
1007         LD32(p2, DCPLB_DATA11);
1009 X2_11:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1011         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1012         CSYNC;
1013         WR_MMR(DCPLB_DATA2, 0, p0, r0);
1015         // Now check that handler read correct values
1016         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1017         CHECKREG(r5, 0x10000000);
1018         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB11));
1019         CHECKREG_SYM(r7, X2_11, r0);            // RETX should be value of X2_11        (HARDCODED ADDR!!)
1021         //-------------------------------------------------------
1022         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1024         WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1025         WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1026         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1027         CSYNC;
1029         LD32(i1, 0x10000000);
1030         R1 = 0x31D2 (Z);
1031         LD32(p2, DCPLB_DATA12);
1033 X2_12:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1035         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1036         CSYNC;
1037         WR_MMR(DCPLB_DATA2, 0, p0, r0);
1039         // Now check that handler read correct values
1040         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1041         CHECKREG(r5, 0x10000000);
1042         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB12));
1043         CHECKREG_SYM(r7, X2_12, r0);            // RETX should be value of X2_12        (HARDCODED ADDR!!)
1045         //-------------------------------------------------------
1046         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1048         WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1049         WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1050         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1051         CSYNC;
1053         LD32(i1, 0x10000000);
1054         R1 = 0x2D85 (Z);
1055         LD32(p2, DCPLB_DATA13);
1057 X2_13:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1059         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1060         CSYNC;
1061         WR_MMR(DCPLB_DATA2, 0, p0, r0);
1063         // Now check that handler read correct values
1064         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1065         CHECKREG(r5, 0x10000000);
1066         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB13));
1067         CHECKREG_SYM(r7, X2_13, r0);            // RETX should be value of X2_13        (HARDCODED ADDR!!)
1069         //-------------------------------------------------------
1070         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1072         WR_MMR(DCPLB_DATA2, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1073         WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1074         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1075         CSYNC;
1077         LD32(i1, 0x10000000);
1078         R1 = 0x19A1 (Z);
1079         LD32(p2, DCPLB_DATA14);
1081 X2_14:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1083         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1084         CSYNC;
1085         WR_MMR(DCPLB_DATA2, 0, p0, r0);
1087         // Now check that handler read correct values
1088         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1089         CHECKREG(r5, 0x10000000);
1090         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB2|FAULT_CPLB14));
1091         CHECKREG_SYM(r7, X2_14, r0);            // RETX should be value of X2_14        (HARDCODED ADDR!!)
1093         //-------------------------------------------------------
1094         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1096         WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1097         WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1098         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1099         CSYNC;
1101         LD32(i1, 0x10000000);
1102         R1 = 0x69D8 (Z);
1103         LD32(p2, DCPLB_DATA4);
1105 X3_4:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1107         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1108         CSYNC;
1109         WR_MMR(DCPLB_DATA3, 0, p0, r0);
1111         // Now check that handler read correct values
1112         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1113         CHECKREG(r5, 0x10000000);
1114         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB4));
1115         CHECKREG_SYM(r7, X3_4, r0);             // RETX should be value of X3_4 (HARDCODED ADDR!!)
1117         //-------------------------------------------------------
1118         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1120         WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1121         WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1122         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1123         CSYNC;
1125         LD32(i1, 0x10000000);
1126         R1 = 0x353C (Z);
1127         LD32(p2, DCPLB_DATA5);
1129 X3_5:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1131         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1132         CSYNC;
1133         WR_MMR(DCPLB_DATA3, 0, p0, r0);
1135         // Now check that handler read correct values
1136         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1137         CHECKREG(r5, 0x10000000);
1138         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB5));
1139         CHECKREG_SYM(r7, X3_5, r0);             // RETX should be value of X3_5 (HARDCODED ADDR!!)
1141         //-------------------------------------------------------
1142         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1144         WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1145         WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1146         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1147         CSYNC;
1149         LD32(i1, 0x10000000);
1150         R1 = 0x3B54 (Z);
1151         LD32(p2, DCPLB_DATA6);
1153 X3_6:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1155         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1156         CSYNC;
1157         WR_MMR(DCPLB_DATA3, 0, p0, r0);
1159         // Now check that handler read correct values
1160         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1161         CHECKREG(r5, 0x10000000);
1162         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB6));
1163         CHECKREG_SYM(r7, X3_6, r0);             // RETX should be value of X3_6 (HARDCODED ADDR!!)
1165         //-------------------------------------------------------
1166         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1168         WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1169         WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1170         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1171         CSYNC;
1173         LD32(i1, 0x10000000);
1174         R1 = 0x7D55 (Z);
1175         LD32(p2, DCPLB_DATA7);
1177 X3_7:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1179         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1180         CSYNC;
1181         WR_MMR(DCPLB_DATA3, 0, p0, r0);
1183         // Now check that handler read correct values
1184         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1185         CHECKREG(r5, 0x10000000);
1186         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB7));
1187         CHECKREG_SYM(r7, X3_7, r0);             // RETX should be value of X3_7 (HARDCODED ADDR!!)
1189         //-------------------------------------------------------
1190         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1192         WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1193         WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1194         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1195         CSYNC;
1197         LD32(i1, 0x10000000);
1198         R1 = 0x102F (Z);
1199         LD32(p2, DCPLB_DATA8);
1201 X3_8:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1203         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1204         CSYNC;
1205         WR_MMR(DCPLB_DATA3, 0, p0, r0);
1207         // Now check that handler read correct values
1208         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1209         CHECKREG(r5, 0x10000000);
1210         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB8));
1211         CHECKREG_SYM(r7, X3_8, r0);             // RETX should be value of X3_8 (HARDCODED ADDR!!)
1213         //-------------------------------------------------------
1214         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1216         WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1217         WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1218         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1219         CSYNC;
1221         LD32(i1, 0x10000000);
1222         R1 = 0x1B37 (Z);
1223         LD32(p2, DCPLB_DATA9);
1225 X3_9:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1227         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1228         CSYNC;
1229         WR_MMR(DCPLB_DATA3, 0, p0, r0);
1231         // Now check that handler read correct values
1232         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1233         CHECKREG(r5, 0x10000000);
1234         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB9));
1235         CHECKREG_SYM(r7, X3_9, r0);             // RETX should be value of X3_9 (HARDCODED ADDR!!)
1237         //-------------------------------------------------------
1238         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1240         WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1241         WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1242         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1243         CSYNC;
1245         LD32(i1, 0x10000000);
1246         R1 = 0x7AAE (Z);
1247         LD32(p2, DCPLB_DATA10);
1249 X3_10:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1251         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1252         CSYNC;
1253         WR_MMR(DCPLB_DATA3, 0, p0, r0);
1255         // Now check that handler read correct values
1256         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1257         CHECKREG(r5, 0x10000000);
1258         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB10));
1259         CHECKREG_SYM(r7, X3_10, r0);            // RETX should be value of X3_10        (HARDCODED ADDR!!)
1261         //-------------------------------------------------------
1262         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1264         WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1265         WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1266         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1267         CSYNC;
1269         LD32(i1, 0x10000000);
1270         R1 = 0x5E65 (Z);
1271         LD32(p2, DCPLB_DATA11);
1273 X3_11:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1275         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1276         CSYNC;
1277         WR_MMR(DCPLB_DATA3, 0, p0, r0);
1279         // Now check that handler read correct values
1280         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1281         CHECKREG(r5, 0x10000000);
1282         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB11));
1283         CHECKREG_SYM(r7, X3_11, r0);            // RETX should be value of X3_11        (HARDCODED ADDR!!)
1285         //-------------------------------------------------------
1286         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1288         WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1289         WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1290         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1291         CSYNC;
1293         LD32(i1, 0x10000000);
1294         R1 = 0x345B (Z);
1295         LD32(p2, DCPLB_DATA12);
1297 X3_12:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1299         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1300         CSYNC;
1301         WR_MMR(DCPLB_DATA3, 0, p0, r0);
1303         // Now check that handler read correct values
1304         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1305         CHECKREG(r5, 0x10000000);
1306         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB12));
1307         CHECKREG_SYM(r7, X3_12, r0);            // RETX should be value of X3_12        (HARDCODED ADDR!!)
1309         //-------------------------------------------------------
1310         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1312         WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1313         WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1314         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1315         CSYNC;
1317         LD32(i1, 0x10000000);
1318         R1 = 0x63DA (Z);
1319         LD32(p2, DCPLB_DATA13);
1321 X3_13:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1323         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1324         CSYNC;
1325         WR_MMR(DCPLB_DATA3, 0, p0, r0);
1327         // Now check that handler read correct values
1328         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1329         CHECKREG(r5, 0x10000000);
1330         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB13));
1331         CHECKREG_SYM(r7, X3_13, r0);            // RETX should be value of X3_13        (HARDCODED ADDR!!)
1333         //-------------------------------------------------------
1334         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1336         WR_MMR(DCPLB_DATA3, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1337         WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1338         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1339         CSYNC;
1341         LD32(i1, 0x10000000);
1342         R1 = 0x6102 (Z);
1343         LD32(p2, DCPLB_DATA14);
1345 X3_14:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1347         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1348         CSYNC;
1349         WR_MMR(DCPLB_DATA3, 0, p0, r0);
1351         // Now check that handler read correct values
1352         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1353         CHECKREG(r5, 0x10000000);
1354         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB3|FAULT_CPLB14));
1355         CHECKREG_SYM(r7, X3_14, r0);            // RETX should be value of X3_14        (HARDCODED ADDR!!)
1357         //-------------------------------------------------------
1358         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1360         WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1361         WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1362         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1363         CSYNC;
1365         LD32(i1, 0x10000000);
1366         R1 = 0x7A79 (Z);
1367         LD32(p2, DCPLB_DATA5);
1369 X4_5:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1371         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1372         CSYNC;
1373         WR_MMR(DCPLB_DATA4, 0, p0, r0);
1375         // Now check that handler read correct values
1376         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1377         CHECKREG(r5, 0x10000000);
1378         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB4|FAULT_CPLB5));
1379         CHECKREG_SYM(r7, X4_5, r0);             // RETX should be value of X4_5 (HARDCODED ADDR!!)
1381         //-------------------------------------------------------
1382         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1384         WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1385         WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1386         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1387         CSYNC;
1389         LD32(i1, 0x10000000);
1390         R1 = 0x0398 (Z);
1391         LD32(p2, DCPLB_DATA6);
1393 X4_6:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1395         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1396         CSYNC;
1397         WR_MMR(DCPLB_DATA4, 0, p0, r0);
1399         // Now check that handler read correct values
1400         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1401         CHECKREG(r5, 0x10000000);
1402         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB4|FAULT_CPLB6));
1403         CHECKREG_SYM(r7, X4_6, r0);             // RETX should be value of X4_6 (HARDCODED ADDR!!)
1405         //-------------------------------------------------------
1406         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1408         WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1409         WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1410         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1411         CSYNC;
1413         LD32(i1, 0x10000000);
1414         R1 = 0x28CC (Z);
1415         LD32(p2, DCPLB_DATA7);
1417 X4_7:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1419         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1420         CSYNC;
1421         WR_MMR(DCPLB_DATA4, 0, p0, r0);
1423         // Now check that handler read correct values
1424         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1425         CHECKREG(r5, 0x10000000);
1426         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB4|FAULT_CPLB7));
1427         CHECKREG_SYM(r7, X4_7, r0);             // RETX should be value of X4_7 (HARDCODED ADDR!!)
1429         //-------------------------------------------------------
1430         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1432         WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1433         WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1434         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1435         CSYNC;
1437         LD32(i1, 0x10000000);
1438         R1 = 0x60E3 (Z);
1439         LD32(p2, DCPLB_DATA8);
1441 X4_8:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1443         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1444         CSYNC;
1445         WR_MMR(DCPLB_DATA4, 0, p0, r0);
1447         // Now check that handler read correct values
1448         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1449         CHECKREG(r5, 0x10000000);
1450         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB4|FAULT_CPLB8));
1451         CHECKREG_SYM(r7, X4_8, r0);             // RETX should be value of X4_8 (HARDCODED ADDR!!)
1453         //-------------------------------------------------------
1454         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1456         WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1457         WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1458         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1459         CSYNC;
1461         LD32(i1, 0x10000000);
1462         R1 = 0x1F1A (Z);
1463         LD32(p2, DCPLB_DATA9);
1465 X4_9:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1467         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1468         CSYNC;
1469         WR_MMR(DCPLB_DATA4, 0, p0, r0);
1471         // Now check that handler read correct values
1472         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1473         CHECKREG(r5, 0x10000000);
1474         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB4|FAULT_CPLB9));
1475         CHECKREG_SYM(r7, X4_9, r0);             // RETX should be value of X4_9 (HARDCODED ADDR!!)
1477         //-------------------------------------------------------
1478         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1480         WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1481         WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1482         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1483         CSYNC;
1485         LD32(i1, 0x10000000);
1486         R1 = 0x4B76 (Z);
1487         LD32(p2, DCPLB_DATA10);
1489 X4_10:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1491         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1492         CSYNC;
1493         WR_MMR(DCPLB_DATA4, 0, p0, r0);
1495         // Now check that handler read correct values
1496         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1497         CHECKREG(r5, 0x10000000);
1498         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB4|FAULT_CPLB10));
1499         CHECKREG_SYM(r7, X4_10, r0);            // RETX should be value of X4_10        (HARDCODED ADDR!!)
1501         //-------------------------------------------------------
1502         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1504         WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1505         WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1506         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1507         CSYNC;
1509         LD32(i1, 0x10000000);
1510         R1 = 0x058E (Z);
1511         LD32(p2, DCPLB_DATA11);
1513 X4_11:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1515         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1516         CSYNC;
1517         WR_MMR(DCPLB_DATA4, 0, p0, r0);
1519         // Now check that handler read correct values
1520         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1521         CHECKREG(r5, 0x10000000);
1522         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB4|FAULT_CPLB11));
1523         CHECKREG_SYM(r7, X4_11, r0);            // RETX should be value of X4_11        (HARDCODED ADDR!!)
1525         //-------------------------------------------------------
1526         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1528         WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1529         WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1530         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1531         CSYNC;
1533         LD32(i1, 0x10000000);
1534         R1 = 0x7A5F (Z);
1535         LD32(p2, DCPLB_DATA12);
1537 X4_12:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1539         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1540         CSYNC;
1541         WR_MMR(DCPLB_DATA4, 0, p0, r0);
1543         // Now check that handler read correct values
1544         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1545         CHECKREG(r5, 0x10000000);
1546         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB4|FAULT_CPLB12));
1547         CHECKREG_SYM(r7, X4_12, r0);            // RETX should be value of X4_12        (HARDCODED ADDR!!)
1549         //-------------------------------------------------------
1550         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1552         WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1553         WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1554         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1555         CSYNC;
1557         LD32(i1, 0x10000000);
1558         R1 = 0x28D9 (Z);
1559         LD32(p2, DCPLB_DATA13);
1561 X4_13:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1563         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1564         CSYNC;
1565         WR_MMR(DCPLB_DATA4, 0, p0, r0);
1567         // Now check that handler read correct values
1568         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1569         CHECKREG(r5, 0x10000000);
1570         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB4|FAULT_CPLB13));
1571         CHECKREG_SYM(r7, X4_13, r0);            // RETX should be value of X4_13        (HARDCODED ADDR!!)
1573         //-------------------------------------------------------
1574         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1576         WR_MMR(DCPLB_DATA4, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1577         WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1578         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1579         CSYNC;
1581         LD32(i1, 0x10000000);
1582         R1 = 0x0799 (Z);
1583         LD32(p2, DCPLB_DATA14);
1585 X4_14:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1587         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1588         CSYNC;
1589         WR_MMR(DCPLB_DATA4, 0, p0, r0);
1591         // Now check that handler read correct values
1592         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1593         CHECKREG(r5, 0x10000000);
1594         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB4|FAULT_CPLB14));
1595         CHECKREG_SYM(r7, X4_14, r0);            // RETX should be value of X4_14        (HARDCODED ADDR!!)
1597         //-------------------------------------------------------
1598         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1600         WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1601         WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1602         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1603         CSYNC;
1605         LD32(i1, 0x10000000);
1606         R1 = 0x388F (Z);
1607         LD32(p2, DCPLB_DATA6);
1609 X5_6:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1611         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1612         CSYNC;
1613         WR_MMR(DCPLB_DATA5, 0, p0, r0);
1615         // Now check that handler read correct values
1616         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1617         CHECKREG(r5, 0x10000000);
1618         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB5|FAULT_CPLB6));
1619         CHECKREG_SYM(r7, X5_6, r0);             // RETX should be value of X5_6 (HARDCODED ADDR!!)
1621         //-------------------------------------------------------
1622         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1624         WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1625         WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1626         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1627         CSYNC;
1629         LD32(i1, 0x10000000);
1630         R1 = 0x751F (Z);
1631         LD32(p2, DCPLB_DATA7);
1633 X5_7:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1635         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1636         CSYNC;
1637         WR_MMR(DCPLB_DATA5, 0, p0, r0);
1639         // Now check that handler read correct values
1640         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1641         CHECKREG(r5, 0x10000000);
1642         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB5|FAULT_CPLB7));
1643         CHECKREG_SYM(r7, X5_7, r0);             // RETX should be value of X5_7 (HARDCODED ADDR!!)
1645         //-------------------------------------------------------
1646         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1648         WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1649         WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1650         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1651         CSYNC;
1653         LD32(i1, 0x10000000);
1654         R1 = 0x493F (Z);
1655         LD32(p2, DCPLB_DATA8);
1657 X5_8:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1659         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1660         CSYNC;
1661         WR_MMR(DCPLB_DATA5, 0, p0, r0);
1663         // Now check that handler read correct values
1664         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1665         CHECKREG(r5, 0x10000000);
1666         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB5|FAULT_CPLB8));
1667         CHECKREG_SYM(r7, X5_8, r0);             // RETX should be value of X5_8 (HARDCODED ADDR!!)
1669         //-------------------------------------------------------
1670         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1672         WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1673         WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1674         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1675         CSYNC;
1677         LD32(i1, 0x10000000);
1678         R1 = 0x0F36 (Z);
1679         LD32(p2, DCPLB_DATA9);
1681 X5_9:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1683         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1684         CSYNC;
1685         WR_MMR(DCPLB_DATA5, 0, p0, r0);
1687         // Now check that handler read correct values
1688         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1689         CHECKREG(r5, 0x10000000);
1690         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB5|FAULT_CPLB9));
1691         CHECKREG_SYM(r7, X5_9, r0);             // RETX should be value of X5_9 (HARDCODED ADDR!!)
1693         //-------------------------------------------------------
1694         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1696         WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1697         WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1698         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1699         CSYNC;
1701         LD32(i1, 0x10000000);
1702         R1 = 0x48EE (Z);
1703         LD32(p2, DCPLB_DATA10);
1705 X5_10:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1707         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1708         CSYNC;
1709         WR_MMR(DCPLB_DATA5, 0, p0, r0);
1711         // Now check that handler read correct values
1712         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1713         CHECKREG(r5, 0x10000000);
1714         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB5|FAULT_CPLB10));
1715         CHECKREG_SYM(r7, X5_10, r0);            // RETX should be value of X5_10        (HARDCODED ADDR!!)
1717         //-------------------------------------------------------
1718         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1720         WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1721         WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1722         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1723         CSYNC;
1725         LD32(i1, 0x10000000);
1726         R1 = 0x2043 (Z);
1727         LD32(p2, DCPLB_DATA11);
1729 X5_11:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1731         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1732         CSYNC;
1733         WR_MMR(DCPLB_DATA5, 0, p0, r0);
1735         // Now check that handler read correct values
1736         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1737         CHECKREG(r5, 0x10000000);
1738         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB5|FAULT_CPLB11));
1739         CHECKREG_SYM(r7, X5_11, r0);            // RETX should be value of X5_11        (HARDCODED ADDR!!)
1741         //-------------------------------------------------------
1742         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1744         WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1745         WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1746         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1747         CSYNC;
1749         LD32(i1, 0x10000000);
1750         R1 = 0x3F78 (Z);
1751         LD32(p2, DCPLB_DATA12);
1753 X5_12:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1755         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1756         CSYNC;
1757         WR_MMR(DCPLB_DATA5, 0, p0, r0);
1759         // Now check that handler read correct values
1760         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1761         CHECKREG(r5, 0x10000000);
1762         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB5|FAULT_CPLB12));
1763         CHECKREG_SYM(r7, X5_12, r0);            // RETX should be value of X5_12        (HARDCODED ADDR!!)
1765         //-------------------------------------------------------
1766         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1768         WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1769         WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1770         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1771         CSYNC;
1773         LD32(i1, 0x10000000);
1774         R1 = 0x1E4D (Z);
1775         LD32(p2, DCPLB_DATA13);
1777 X5_13:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1779         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1780         CSYNC;
1781         WR_MMR(DCPLB_DATA5, 0, p0, r0);
1783         // Now check that handler read correct values
1784         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1785         CHECKREG(r5, 0x10000000);
1786         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB5|FAULT_CPLB13));
1787         CHECKREG_SYM(r7, X5_13, r0);            // RETX should be value of X5_13        (HARDCODED ADDR!!)
1789         //-------------------------------------------------------
1790         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1792         WR_MMR(DCPLB_DATA5, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1793         WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1794         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1795         CSYNC;
1797         LD32(i1, 0x10000000);
1798         R1 = 0x3D0D (Z);
1799         LD32(p2, DCPLB_DATA14);
1801 X5_14:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1803         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1804         CSYNC;
1805         WR_MMR(DCPLB_DATA5, 0, p0, r0);
1807         // Now check that handler read correct values
1808         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1809         CHECKREG(r5, 0x10000000);
1810         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB5|FAULT_CPLB14));
1811         CHECKREG_SYM(r7, X5_14, r0);            // RETX should be value of X5_14        (HARDCODED ADDR!!)
1813         //-------------------------------------------------------
1814         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1816         WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1817         WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1818         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1819         CSYNC;
1821         LD32(i1, 0x10000000);
1822         R1 = 0x33FA (Z);
1823         LD32(p2, DCPLB_DATA7);
1825 X6_7:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1827         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1828         CSYNC;
1829         WR_MMR(DCPLB_DATA6, 0, p0, r0);
1831         // Now check that handler read correct values
1832         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1833         CHECKREG(r5, 0x10000000);
1834         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB6|FAULT_CPLB7));
1835         CHECKREG_SYM(r7, X6_7, r0);             // RETX should be value of X6_7 (HARDCODED ADDR!!)
1837         //-------------------------------------------------------
1838         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1840         WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1841         WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1842         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1843         CSYNC;
1845         LD32(i1, 0x10000000);
1846         R1 = 0x6FBE (Z);
1847         LD32(p2, DCPLB_DATA8);
1849 X6_8:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1851         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1852         CSYNC;
1853         WR_MMR(DCPLB_DATA6, 0, p0, r0);
1855         // Now check that handler read correct values
1856         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1857         CHECKREG(r5, 0x10000000);
1858         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB6|FAULT_CPLB8));
1859         CHECKREG_SYM(r7, X6_8, r0);             // RETX should be value of X6_8 (HARDCODED ADDR!!)
1861         //-------------------------------------------------------
1862         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1864         WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1865         WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1866         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1867         CSYNC;
1869         LD32(i1, 0x10000000);
1870         R1 = 0x36A6 (Z);
1871         LD32(p2, DCPLB_DATA9);
1873 X6_9:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1875         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1876         CSYNC;
1877         WR_MMR(DCPLB_DATA6, 0, p0, r0);
1879         // Now check that handler read correct values
1880         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1881         CHECKREG(r5, 0x10000000);
1882         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB6|FAULT_CPLB9));
1883         CHECKREG_SYM(r7, X6_9, r0);             // RETX should be value of X6_9 (HARDCODED ADDR!!)
1885         //-------------------------------------------------------
1886         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1888         WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1889         WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1890         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1891         CSYNC;
1893         LD32(i1, 0x10000000);
1894         R1 = 0x2DDA (Z);
1895         LD32(p2, DCPLB_DATA10);
1897 X6_10:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1899         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1900         CSYNC;
1901         WR_MMR(DCPLB_DATA6, 0, p0, r0);
1903         // Now check that handler read correct values
1904         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1905         CHECKREG(r5, 0x10000000);
1906         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB6|FAULT_CPLB10));
1907         CHECKREG_SYM(r7, X6_10, r0);            // RETX should be value of X6_10        (HARDCODED ADDR!!)
1909         //-------------------------------------------------------
1910         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1912         WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1913         WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1914         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1915         CSYNC;
1917         LD32(i1, 0x10000000);
1918         R1 = 0x30E4 (Z);
1919         LD32(p2, DCPLB_DATA11);
1921 X6_11:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1923         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1924         CSYNC;
1925         WR_MMR(DCPLB_DATA6, 0, p0, r0);
1927         // Now check that handler read correct values
1928         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1929         CHECKREG(r5, 0x10000000);
1930         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB6|FAULT_CPLB11));
1931         CHECKREG_SYM(r7, X6_11, r0);            // RETX should be value of X6_11        (HARDCODED ADDR!!)
1933         //-------------------------------------------------------
1934         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1936         WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1937         WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1938         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1939         CSYNC;
1941         LD32(i1, 0x10000000);
1942         R1 = 0x0586 (Z);
1943         LD32(p2, DCPLB_DATA12);
1945 X6_12:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1947         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1948         CSYNC;
1949         WR_MMR(DCPLB_DATA6, 0, p0, r0);
1951         // Now check that handler read correct values
1952         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1953         CHECKREG(r5, 0x10000000);
1954         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB6|FAULT_CPLB12));
1955         CHECKREG_SYM(r7, X6_12, r0);            // RETX should be value of X6_12        (HARDCODED ADDR!!)
1957         //-------------------------------------------------------
1958         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1960         WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1961         WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1962         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1963         CSYNC;
1965         LD32(i1, 0x10000000);
1966         R1 = 0x148E (Z);
1967         LD32(p2, DCPLB_DATA13);
1969 X6_13:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1971         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1972         CSYNC;
1973         WR_MMR(DCPLB_DATA6, 0, p0, r0);
1975         // Now check that handler read correct values
1976         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
1977         CHECKREG(r5, 0x10000000);
1978         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB6|FAULT_CPLB13));
1979         CHECKREG_SYM(r7, X6_13, r0);            // RETX should be value of X6_13        (HARDCODED ADDR!!)
1981         //-------------------------------------------------------
1982         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
1984         WR_MMR(DCPLB_DATA6, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1985         WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
1986         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
1987         CSYNC;
1989         LD32(i1, 0x10000000);
1990         R1 = 0x42DC (Z);
1991         LD32(p2, DCPLB_DATA14);
1993 X6_14:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
1995         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
1996         CSYNC;
1997         WR_MMR(DCPLB_DATA6, 0, p0, r0);
1999         // Now check that handler read correct values
2000         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2001         CHECKREG(r5, 0x10000000);
2002         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB6|FAULT_CPLB14));
2003         CHECKREG_SYM(r7, X6_14, r0);            // RETX should be value of X6_14        (HARDCODED ADDR!!)
2005         //-------------------------------------------------------
2006         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2008         WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2009         WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2010         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2011         CSYNC;
2013         LD32(i1, 0x10000000);
2014         R1 = 0x5929 (Z);
2015         LD32(p2, DCPLB_DATA8);
2017 X7_8:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2019         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2020         CSYNC;
2021         WR_MMR(DCPLB_DATA7, 0, p0, r0);
2023         // Now check that handler read correct values
2024         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2025         CHECKREG(r5, 0x10000000);
2026         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB7|FAULT_CPLB8));
2027         CHECKREG_SYM(r7, X7_8, r0);             // RETX should be value of X7_8 (HARDCODED ADDR!!)
2029         //-------------------------------------------------------
2030         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2032         WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2033         WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2034         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2035         CSYNC;
2037         LD32(i1, 0x10000000);
2038         R1 = 0x0C6D (Z);
2039         LD32(p2, DCPLB_DATA9);
2041 X7_9:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2043         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2044         CSYNC;
2045         WR_MMR(DCPLB_DATA7, 0, p0, r0);
2047         // Now check that handler read correct values
2048         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2049         CHECKREG(r5, 0x10000000);
2050         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB7|FAULT_CPLB9));
2051         CHECKREG_SYM(r7, X7_9, r0);             // RETX should be value of X7_9 (HARDCODED ADDR!!)
2053         //-------------------------------------------------------
2054         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2056         WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2057         WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2058         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2059         CSYNC;
2061         LD32(i1, 0x10000000);
2062         R1 = 0x334E (Z);
2063         LD32(p2, DCPLB_DATA10);
2065 X7_10:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2067         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2068         CSYNC;
2069         WR_MMR(DCPLB_DATA7, 0, p0, r0);
2071         // Now check that handler read correct values
2072         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2073         CHECKREG(r5, 0x10000000);
2074         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB7|FAULT_CPLB10));
2075         CHECKREG_SYM(r7, X7_10, r0);            // RETX should be value of X7_10        (HARDCODED ADDR!!)
2077         //-------------------------------------------------------
2078         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2080         WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2081         WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2082         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2083         CSYNC;
2085         LD32(i1, 0x10000000);
2086         R1 = 0x62FF (Z);
2087         LD32(p2, DCPLB_DATA11);
2089 X7_11:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2091         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2092         CSYNC;
2093         WR_MMR(DCPLB_DATA7, 0, p0, r0);
2095         // Now check that handler read correct values
2096         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2097         CHECKREG(r5, 0x10000000);
2098         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB7|FAULT_CPLB11));
2099         CHECKREG_SYM(r7, X7_11, r0);            // RETX should be value of X7_11        (HARDCODED ADDR!!)
2101         //-------------------------------------------------------
2102         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2104         WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2105         WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2106         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2107         CSYNC;
2109         LD32(i1, 0x10000000);
2110         R1 = 0x1F56 (Z);
2111         LD32(p2, DCPLB_DATA12);
2113 X7_12:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2115         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2116         CSYNC;
2117         WR_MMR(DCPLB_DATA7, 0, p0, r0);
2119         // Now check that handler read correct values
2120         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2121         CHECKREG(r5, 0x10000000);
2122         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB7|FAULT_CPLB12));
2123         CHECKREG_SYM(r7, X7_12, r0);            // RETX should be value of X7_12        (HARDCODED ADDR!!)
2125         //-------------------------------------------------------
2126         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2128         WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2129         WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2130         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2131         CSYNC;
2133         LD32(i1, 0x10000000);
2134         R1 = 0x2BE1 (Z);
2135         LD32(p2, DCPLB_DATA13);
2137 X7_13:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2139         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2140         CSYNC;
2141         WR_MMR(DCPLB_DATA7, 0, p0, r0);
2143         // Now check that handler read correct values
2144         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2145         CHECKREG(r5, 0x10000000);
2146         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB7|FAULT_CPLB13));
2147         CHECKREG_SYM(r7, X7_13, r0);            // RETX should be value of X7_13        (HARDCODED ADDR!!)
2149         //-------------------------------------------------------
2150         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2152         WR_MMR(DCPLB_DATA7, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2153         WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2154         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2155         CSYNC;
2157         LD32(i1, 0x10000000);
2158         R1 = 0x1D70 (Z);
2159         LD32(p2, DCPLB_DATA14);
2161 X7_14:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2163         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2164         CSYNC;
2165         WR_MMR(DCPLB_DATA7, 0, p0, r0);
2167         // Now check that handler read correct values
2168         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2169         CHECKREG(r5, 0x10000000);
2170         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB7|FAULT_CPLB14));
2171         CHECKREG_SYM(r7, X7_14, r0);            // RETX should be value of X7_14        (HARDCODED ADDR!!)
2173         //-------------------------------------------------------
2174         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2176         WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2177         WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2178         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2179         CSYNC;
2181         LD32(i1, 0x10000000);
2182         R1 = 0x2620 (Z);
2183         LD32(p2, DCPLB_DATA9);
2185 X8_9:   A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2187         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2188         CSYNC;
2189         WR_MMR(DCPLB_DATA8, 0, p0, r0);
2191         // Now check that handler read correct values
2192         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2193         CHECKREG(r5, 0x10000000);
2194         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB8|FAULT_CPLB9));
2195         CHECKREG_SYM(r7, X8_9, r0);             // RETX should be value of X8_9 (HARDCODED ADDR!!)
2197         //-------------------------------------------------------
2198         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2200         WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2201         WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2202         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2203         CSYNC;
2205         LD32(i1, 0x10000000);
2206         R1 = 0x26FB (Z);
2207         LD32(p2, DCPLB_DATA10);
2209 X8_10:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2211         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2212         CSYNC;
2213         WR_MMR(DCPLB_DATA8, 0, p0, r0);
2215         // Now check that handler read correct values
2216         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2217         CHECKREG(r5, 0x10000000);
2218         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB8|FAULT_CPLB10));
2219         CHECKREG_SYM(r7, X8_10, r0);            // RETX should be value of X8_10        (HARDCODED ADDR!!)
2221         //-------------------------------------------------------
2222         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2224         WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2225         WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2226         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2227         CSYNC;
2229         LD32(i1, 0x10000000);
2230         R1 = 0x718F (Z);
2231         LD32(p2, DCPLB_DATA11);
2233 X8_11:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2235         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2236         CSYNC;
2237         WR_MMR(DCPLB_DATA8, 0, p0, r0);
2239         // Now check that handler read correct values
2240         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2241         CHECKREG(r5, 0x10000000);
2242         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB8|FAULT_CPLB11));
2243         CHECKREG_SYM(r7, X8_11, r0);            // RETX should be value of X8_11        (HARDCODED ADDR!!)
2245         //-------------------------------------------------------
2246         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2248         WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2249         WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2250         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2251         CSYNC;
2253         LD32(i1, 0x10000000);
2254         R1 = 0x04B1 (Z);
2255         LD32(p2, DCPLB_DATA12);
2257 X8_12:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2259         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2260         CSYNC;
2261         WR_MMR(DCPLB_DATA8, 0, p0, r0);
2263         // Now check that handler read correct values
2264         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2265         CHECKREG(r5, 0x10000000);
2266         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB8|FAULT_CPLB12));
2267         CHECKREG_SYM(r7, X8_12, r0);            // RETX should be value of X8_12        (HARDCODED ADDR!!)
2269         //-------------------------------------------------------
2270         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2272         WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2273         WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2274         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2275         CSYNC;
2277         LD32(i1, 0x10000000);
2278         R1 = 0x5358 (Z);
2279         LD32(p2, DCPLB_DATA13);
2281 X8_13:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2283         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2284         CSYNC;
2285         WR_MMR(DCPLB_DATA8, 0, p0, r0);
2287         // Now check that handler read correct values
2288         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2289         CHECKREG(r5, 0x10000000);
2290         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB8|FAULT_CPLB13));
2291         CHECKREG_SYM(r7, X8_13, r0);            // RETX should be value of X8_13        (HARDCODED ADDR!!)
2293         //-------------------------------------------------------
2294         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2296         WR_MMR(DCPLB_DATA8, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2297         WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2298         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2299         CSYNC;
2301         LD32(i1, 0x10000000);
2302         R1 = 0x3305 (Z);
2303         LD32(p2, DCPLB_DATA14);
2305 X8_14:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2307         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2308         CSYNC;
2309         WR_MMR(DCPLB_DATA8, 0, p0, r0);
2311         // Now check that handler read correct values
2312         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2313         CHECKREG(r5, 0x10000000);
2314         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB8|FAULT_CPLB14));
2315         CHECKREG_SYM(r7, X8_14, r0);            // RETX should be value of X8_14        (HARDCODED ADDR!!)
2317         //-------------------------------------------------------
2318         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2320         WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2321         WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2322         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2323         CSYNC;
2325         LD32(i1, 0x10000000);
2326         R1 = 0x5690 (Z);
2327         LD32(p2, DCPLB_DATA10);
2329 X9_10:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2331         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2332         CSYNC;
2333         WR_MMR(DCPLB_DATA9, 0, p0, r0);
2335         // Now check that handler read correct values
2336         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2337         CHECKREG(r5, 0x10000000);
2338         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB9|FAULT_CPLB10));
2339         CHECKREG_SYM(r7, X9_10, r0);            // RETX should be value of X9_10        (HARDCODED ADDR!!)
2341         //-------------------------------------------------------
2342         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2344         WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2345         WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2346         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2347         CSYNC;
2349         LD32(i1, 0x10000000);
2350         R1 = 0x5DC5 (Z);
2351         LD32(p2, DCPLB_DATA11);
2353 X9_11:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2355         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2356         CSYNC;
2357         WR_MMR(DCPLB_DATA9, 0, p0, r0);
2359         // Now check that handler read correct values
2360         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2361         CHECKREG(r5, 0x10000000);
2362         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB9|FAULT_CPLB11));
2363         CHECKREG_SYM(r7, X9_11, r0);            // RETX should be value of X9_11        (HARDCODED ADDR!!)
2365         //-------------------------------------------------------
2366         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2368         WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2369         WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2370         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2371         CSYNC;
2373         LD32(i1, 0x10000000);
2374         R1 = 0x7809 (Z);
2375         LD32(p2, DCPLB_DATA12);
2377 X9_12:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2379         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2380         CSYNC;
2381         WR_MMR(DCPLB_DATA9, 0, p0, r0);
2383         // Now check that handler read correct values
2384         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2385         CHECKREG(r5, 0x10000000);
2386         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB9|FAULT_CPLB12));
2387         CHECKREG_SYM(r7, X9_12, r0);            // RETX should be value of X9_12        (HARDCODED ADDR!!)
2389         //-------------------------------------------------------
2390         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2392         WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2393         WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2394         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2395         CSYNC;
2397         LD32(i1, 0x10000000);
2398         R1 = 0x1DDC (Z);
2399         LD32(p2, DCPLB_DATA13);
2401 X9_13:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2403         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2404         CSYNC;
2405         WR_MMR(DCPLB_DATA9, 0, p0, r0);
2407         // Now check that handler read correct values
2408         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2409         CHECKREG(r5, 0x10000000);
2410         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB9|FAULT_CPLB13));
2411         CHECKREG_SYM(r7, X9_13, r0);            // RETX should be value of X9_13        (HARDCODED ADDR!!)
2413         //-------------------------------------------------------
2414         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2416         WR_MMR(DCPLB_DATA9, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2417         WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2418         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2419         CSYNC;
2421         LD32(i1, 0x10000000);
2422         R1 = 0x6B53 (Z);
2423         LD32(p2, DCPLB_DATA14);
2425 X9_14:  A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2427         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2428         CSYNC;
2429         WR_MMR(DCPLB_DATA9, 0, p0, r0);
2431         // Now check that handler read correct values
2432         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2433         CHECKREG(r5, 0x10000000);
2434         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB9|FAULT_CPLB14));
2435         CHECKREG_SYM(r7, X9_14, r0);            // RETX should be value of X9_14        (HARDCODED ADDR!!)
2437         //-------------------------------------------------------
2438         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2440         WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2441         WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2442         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2443         CSYNC;
2445         LD32(i1, 0x10000000);
2446         R1 = 0x7BCD (Z);
2447         LD32(p2, DCPLB_DATA11);
2449 X10_11: A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2451         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2452         CSYNC;
2453         WR_MMR(DCPLB_DATA10, 0, p0, r0);
2455         // Now check that handler read correct values
2456         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2457         CHECKREG(r5, 0x10000000);
2458         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB10|FAULT_CPLB11));
2459         CHECKREG_SYM(r7, X10_11, r0);           // RETX should be value of X10_11       (HARDCODED ADDR!!)
2461         //-------------------------------------------------------
2462         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2464         WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2465         WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2466         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2467         CSYNC;
2469         LD32(i1, 0x10000000);
2470         R1 = 0x63AA (Z);
2471         LD32(p2, DCPLB_DATA12);
2473 X10_12: A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2475         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2476         CSYNC;
2477         WR_MMR(DCPLB_DATA10, 0, p0, r0);
2479         // Now check that handler read correct values
2480         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2481         CHECKREG(r5, 0x10000000);
2482         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB10|FAULT_CPLB12));
2483         CHECKREG_SYM(r7, X10_12, r0);           // RETX should be value of X10_12       (HARDCODED ADDR!!)
2485         //-------------------------------------------------------
2486         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2488         WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2489         WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2490         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2491         CSYNC;
2493         LD32(i1, 0x10000000);
2494         R1 = 0x373B (Z);
2495         LD32(p2, DCPLB_DATA13);
2497 X10_13: A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2499         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2500         CSYNC;
2501         WR_MMR(DCPLB_DATA10, 0, p0, r0);
2503         // Now check that handler read correct values
2504         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2505         CHECKREG(r5, 0x10000000);
2506         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB10|FAULT_CPLB13));
2507         CHECKREG_SYM(r7, X10_13, r0);           // RETX should be value of X10_13       (HARDCODED ADDR!!)
2509         //-------------------------------------------------------
2510         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2512         WR_MMR(DCPLB_DATA10, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2513         WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2514         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2515         CSYNC;
2517         LD32(i1, 0x10000000);
2518         R1 = 0x5648 (Z);
2519         LD32(p2, DCPLB_DATA14);
2521 X10_14: A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2523         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2524         CSYNC;
2525         WR_MMR(DCPLB_DATA10, 0, p0, r0);
2527         // Now check that handler read correct values
2528         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2529         CHECKREG(r5, 0x10000000);
2530         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB10|FAULT_CPLB14));
2531         CHECKREG_SYM(r7, X10_14, r0);           // RETX should be value of X10_14       (HARDCODED ADDR!!)
2533         //-------------------------------------------------------
2534         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2536         WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2537         WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2538         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2539         CSYNC;
2541         LD32(i1, 0x10000000);
2542         R1 = 0x6799 (Z);
2543         LD32(p2, DCPLB_DATA12);
2545 X11_12: A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2547         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2548         CSYNC;
2549         WR_MMR(DCPLB_DATA11, 0, p0, r0);
2551         // Now check that handler read correct values
2552         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2553         CHECKREG(r5, 0x10000000);
2554         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB11|FAULT_CPLB12));
2555         CHECKREG_SYM(r7, X11_12, r0);           // RETX should be value of X11_12       (HARDCODED ADDR!!)
2557         //-------------------------------------------------------
2558         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2560         WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2561         WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2562         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2563         CSYNC;
2565         LD32(i1, 0x10000000);
2566         R1 = 0x1452 (Z);
2567         LD32(p2, DCPLB_DATA13);
2569 X11_13: A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2571         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2572         CSYNC;
2573         WR_MMR(DCPLB_DATA11, 0, p0, r0);
2575         // Now check that handler read correct values
2576         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2577         CHECKREG(r5, 0x10000000);
2578         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB11|FAULT_CPLB13));
2579         CHECKREG_SYM(r7, X11_13, r0);           // RETX should be value of X11_13       (HARDCODED ADDR!!)
2581         //-------------------------------------------------------
2582         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2584         WR_MMR(DCPLB_DATA11, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2585         WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2586         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2587         CSYNC;
2589         LD32(i1, 0x10000000);
2590         R1 = 0x23D3 (Z);
2591         LD32(p2, DCPLB_DATA14);
2593 X11_14: A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2595         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2596         CSYNC;
2597         WR_MMR(DCPLB_DATA11, 0, p0, r0);
2599         // Now check that handler read correct values
2600         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2601         CHECKREG(r5, 0x10000000);
2602         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB11|FAULT_CPLB14));
2603         CHECKREG_SYM(r7, X11_14, r0);           // RETX should be value of X11_14       (HARDCODED ADDR!!)
2605         //-------------------------------------------------------
2606         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2608         WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2609         WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2610         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2611         CSYNC;
2613         LD32(i1, 0x10000000);
2614         R1 = 0x1152 (Z);
2615         LD32(p2, DCPLB_DATA13);
2617 X12_13: A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2619         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2620         CSYNC;
2621         WR_MMR(DCPLB_DATA12, 0, p0, r0);
2623         // Now check that handler read correct values
2624         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2625         CHECKREG(r5, 0x10000000);
2626         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB12|FAULT_CPLB13));
2627         CHECKREG_SYM(r7, X12_13, r0);           // RETX should be value of X12_13       (HARDCODED ADDR!!)
2629         //-------------------------------------------------------
2630         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2632         WR_MMR(DCPLB_DATA12, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2633         WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2634         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2635         CSYNC;
2637         LD32(i1, 0x10000000);
2638         R1 = 0x6E9D (Z);
2639         LD32(p2, DCPLB_DATA14);
2641 X12_14: A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2643         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2644         CSYNC;
2645         WR_MMR(DCPLB_DATA12, 0, p0, r0);
2647         // Now check that handler read correct values
2648         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2649         CHECKREG(r5, 0x10000000);
2650         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB12|FAULT_CPLB14));
2651         CHECKREG_SYM(r7, X12_14, r0);           // RETX should be value of X12_14       (HARDCODED ADDR!!)
2653         //-------------------------------------------------------
2654         R0 = 0;R1 = 0;R2 = 0;R3 = 0;R4 = 0;R5 = 0;R6 = 0;R7 = 0;
2656         WR_MMR(DCPLB_DATA13, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2657         WR_MMR(DCPLB_DATA14, (PAGE_SIZE_1K|CPLB_VALID|CPLB_DIRTY|CPLB_SUPV_WR|CPLB_USER_RW), p0, r0);
2658         WR_MMR(DMEM_CONTROL, ENDM | ENDCPLB | DMC_AB_CACHE, p0, r0);
2659         CSYNC;
2661         LD32(i1, 0x10000000);
2662         R1 = 0x6006 (Z);
2663         LD32(p2, DCPLB_DATA14);
2665 X13_14: A0 = 0 || NOP || [ I1 ] = R1;           // Exception should occur here
2667         WR_MMR(DMEM_CONTROL, ENDM | DMC_AB_CACHE, p0, r0);
2668         CSYNC;
2669         WR_MMR(DCPLB_DATA13, 0, p0, r0);
2671         // Now check that handler read correct values
2672         CHECKREG(r4,0x27);              // supv and EXCPT_PROT
2673         CHECKREG(r5, 0x10000000);
2674         CHECKREG(r6, (FAULT_WRITE|FAULT_DAG1|FAULT_SUPV|FAULT_CPLB13|FAULT_CPLB14));
2675         CHECKREG_SYM(r7, X13_14, r0);           // RETX should be value of X13_14       (HARDCODED ADDR!!)
2677         //-------------------------------------------------------
2678 User:
2679         NOP;
2680         dbg_pass;