sim: bfin: import testsuite
[deliverable/binutils-gdb.git] / sim / testsuite / sim / bfin / dbg_tr_simplejp.S
1 //Original:/proj/frio/dv/testcases/debug/dbg_tr_simplejp/dbg_tr_simplejp.dsp
2 // Description: This test performs simple jumps and verifies the trace buffer
3 // recording for simple jumps.
4 # mach: bfin
5 # sim: --environment operating
6
7 #include "test.h"
8 .include "testutils.inc"
9 start
10
11 include(std.inc)
12 include(mmrs.inc)
13 include(selfcheck.inc)
14 include(symtable.inc)
15
16 #ifndef ITABLE
17 #define ITABLE CODE_ADDR_1 //
18 #endif
19
20 // This test embeds .text offsets, so pad our test so it lines up.
21 .space 0x5e
22
23 // Boot code
24
25 BOOT :
26 INIT_R_REGS(0); // Initialize Dregs
27 INIT_P_REGS(0); // Initialize Pregs
28
29 CHECK_INIT_DEF(p5); // CHECK_INIT(p5, 0x00BFFFFC);
30
31 LD32(p0, EVT0); // Setup Event Vectors and Handlers
32
33 LD32_LABEL(r0, EHANDLE); // Emulation Handler (Int0)
34 [ P0 ++ ] = R0;
35
36 LD32_LABEL(r0, RHANDLE); // Reset Handler (Int1)
37 [ P0 ++ ] = R0;
38
39 LD32_LABEL(r0, NHANDLE); // NMI Handler (Int2)
40 [ P0 ++ ] = R0;
41
42 LD32_LABEL(r0, XHANDLE); // Exception Handler (Int3)
43 [ P0 ++ ] = R0;
44
45 [ P0 ++ ] = R0; // IVT4 not used
46
47 LD32_LABEL(r0, HWHANDLE); // HW Error Handler (Int5)
48 [ P0 ++ ] = R0;
49
50 LD32_LABEL(r0, THANDLE); // Timer Handler (Int6)
51 [ P0 ++ ] = R0;
52
53 LD32_LABEL(r0, I7HANDLE); // IVG7 Handler
54 [ P0 ++ ] = R0;
55
56 LD32_LABEL(r0, I8HANDLE); // IVG8 Handler
57 [ P0 ++ ] = R0;
58
59 LD32_LABEL(r0, I9HANDLE); // IVG9 Handler
60 [ P0 ++ ] = R0;
61
62 LD32_LABEL(r0, I10HANDLE); // IVG10 Handler
63 [ P0 ++ ] = R0;
64
65 LD32_LABEL(r0, I11HANDLE); // IVG11 Handler
66 [ P0 ++ ] = R0;
67
68 LD32_LABEL(r0, I12HANDLE); // IVG12 Handler
69 [ P0 ++ ] = R0;
70
71 LD32_LABEL(r0, I13HANDLE); // IVG13 Handler
72 [ P0 ++ ] = R0;
73
74 LD32_LABEL(r0, I14HANDLE); // IVG14 Handler
75 [ P0 ++ ] = R0;
76
77 LD32_LABEL(r0, I15HANDLE); // IVG15 Handler
78 [ P0 ++ ] = R0;
79
80 LD32(p0, EVT_OVERRIDE);
81 R0 = 0;
82 [ P0 ++ ] = R0;
83 R0 = -1; // Change this to mask interrupts (*)
84 [ P0 ] = R0; // IMASK
85
86 LD32_LABEL(p1, START);
87
88 LD32(p0, EVT15);
89 [ P0 ] = P1; // IVG15 (General) handler (Int 15) load with start
90
91 LD32_LABEL(r7, DUMMY);
92 RETI = r7;
93 RAISE 15; // after we RTI, INT 15 should be taken
94
95 NOP; // Workaround for Bug 217
96 RTI;
97 NOP;
98 NOP;
99 NOP;
100 DUMMY:
101 NOP;
102 NOP;
103 NOP;
104 NOP;
105
106
107
108 START :
109 WR_MMR(TBUFCTL, 0x00000003, p0, r0); // Turn ON trace Buffer
110 // TBUFPWR = 1
111 // TBUFEN = 1
112 // TBUFOVF = 0
113 // CMPLP = 0
114 NOP;
115 NOP;
116 NOP;
117 NOP;
118 NOP;
119 NOP;
120 NOP;
121 NOP;
122 NOP;
123 JUMP.S label1; // 0x0224
124 R4.L = 0x1111; // Will be killed
125 R4.H = 0x1111; // Will be killed
126 NOP;
127 NOP;
128 NOP;
129 label2: R5.H = 0x7777; // 0x0234
130 R5.L = 0x7888;
131 JUMP.S label3; //0x023c
132 R6.L = 0x1111; // Will be killed
133 R6.H = 0x1111; // Will be killed
134 NOP;
135 NOP;
136 NOP;
137 NOP;
138 NOP;
139 label1: R4.H = 0x5555; // 0x0250
140 R4.L = 0x6666;
141 NOP;
142 JUMP.S label2; // 0x0258
143 R5.L = 0x1111; // Will be killed
144 R5.H = 0x1111; // Will be killed
145 NOP;
146 NOP;
147 NOP;
148 NOP;
149 label3: R6.H = 0x7999; //0x026c
150 R6.L = 0x7aaa;
151 NOP;
152 NOP;
153 NOP;
154 NOP;
155
156 WR_MMR(TBUFCTL, 0x00000001, p0, r0); // Turn OFF trace Buffer
157
158 NOP;
159 NOP;
160 NOP;
161 NOP;
162 NOP;
163 // Read the contents of the Trace Buffer
164
165 RD_MMR(TBUFSTAT, p0, r2);
166 CHECKREG(r2, 0x00000003);
167
168 // Read 3rd Entry of the Trace Buffer
169 RD_MMR(TBUF, p0, r0);
170 CHECKREG(r0, 0x0000026c);
171
172 RD_MMR(TBUFSTAT, p0, r2);
173 CHECKREG(r2, 0x00000003);
174
175 RD_MMR(TBUF, p0, r1);
176 CHECKREG(r1, 0x0000023c);
177
178 RD_MMR(TBUFSTAT, p0, r2);
179 CHECKREG(r2, 0x00000002);
180
181 // Read 2nd Entry of the Trace Buffer
182 RD_MMR(TBUF, p0, r0);
183 CHECKREG(r0, 0x00000234);
184
185 RD_MMR(TBUFSTAT, p0, r2);
186 CHECKREG(r2, 0x00000002);
187
188 RD_MMR(TBUF, p0, r1);
189 CHECKREG(r1, 0x0000025a);
190
191 RD_MMR(TBUFSTAT, p0, r2);
192 CHECKREG(r2, 0x00000001);
193
194 // Read ist Entry of the Trace Buffer
195 RD_MMR(TBUF, p0, r0);
196 CHECKREG(r0, 0x00000250);
197
198 RD_MMR(TBUFSTAT, p0, r2);
199 CHECKREG(r2, 0x00000001);
200
201 RD_MMR(TBUF, p0, r1);
202 CHECKREG(r1, 0x00000224);
203
204 RD_MMR(TBUFSTAT, p0, r2);
205 CHECKREG(r2, 0x00000000);
206
207 WR_MMR(TBUFCTL, 0x00000000, p0, r0); // Turn OFF trace Buffer Power
208
209 NOP;
210 NOP;
211 NOP;
212 NOP;
213 NOP;
214 NOP;
215 dbg_pass; // Call Endtest Macro
216
217
218
219 //*********************************************************************
220 //
221 // Handlers for Events
222 //
223
224 EHANDLE: // Emulation Handler 0
225 RTE;
226
227 RHANDLE: // Reset Handler 1
228 RTI;
229
230 NHANDLE: // NMI Handler 2
231 RTN;
232
233 XHANDLE: // Exception Handler 3
234 RTX;
235
236 HWHANDLE: // HW Error Handler 5
237 RTI;
238
239 THANDLE: // Timer Handler 6
240 RTI;
241
242 I7HANDLE: // IVG 7 Handler
243 RTI;
244
245 I8HANDLE: // IVG 8 Handler
246 RTI;
247
248 I9HANDLE: // IVG 9 Handler
249 RTI;
250
251 I10HANDLE: // IVG 10 Handler
252 RTI;
253
254 I11HANDLE: // IVG 11 Handler
255 RTI;
256
257 I12HANDLE: // IVG 12 Handler
258 RTI;
259
260 I13HANDLE: // IVG 13 Handler
261 RTI;
262
263 I14HANDLE: // IVG 14 Handler
264 RTI;
265
266 I15HANDLE: // IVG 15 Handler
267 RTI;
This page took 0.034514 seconds and 4 git commands to generate.