source: trunk/Softwares/Test/Test_010/src/sys/crt0.s @ 141

Last change on this file since 141 was 141, checked in by rosiere, 14 years ago

Add statistics in stage IFETCH, DECODE and COMMIT (insert, retire and commit)

  • Property svn:keywords set to Id
File size: 12.5 KB
Line 
1/*
2 * Test_010
3 *
4 * end_ko : infinite_loop
5 * end_ok : Write in R1 the stop address and stop an data
6 *          The store in the destination of an jump
7 * start  : Test l.addc
8 */
9       
10        .file   "crt0.s"
11        /*
12        .section .vector
13        */
14        .section .text
15        .align  4       
16
17/* ---[ 0x0  : Print a error ]------------------------------------------- */
18
19        .org 0x0
20_end_ko        :       
21        l.movhi r1,     hi(_tty)
22        l.ori   r1, r1, lo(_tty)
23        l.sw    4(r1), r1 /* stop address */
24_infinite_loop :       
25        l.j     _infinite_loop
26        l.nop
27
28_end_ok :
29        l.movhi r1,     hi(_tty)
30        l.ori   r1, r1, lo(_tty)
31        l.sw    4(r1), r0 /* stop address */
32
33
34/* ---[ 0x100: RESET exception ]----------------------------------------- */
35        .org 0x100
36        .global _start
37_start:
38        /*
39             A (r1)     B (r2)     CY - D (r3 wait)CY OV (SR = r6, mask SR = r5)
40                                          (r4)                (r7)
41          1) 0x00000000 0x00000000 0  - 0x00000000 0  0
42             0x00000000 0x00000000 1  - 0x00000001 0  0
43          2) 0x14011959 0x25071959 0  - 0x390832b2 0  0
44             0x14011959 0x25071959 1  - 0x390832b3 0  0
45          3) 0xebfee6a7 0xdaf8e6a7 0  - 0xc6f7cd4e 1  0
46             0xebfee6a7 0xdaf8e6a7 1  - 0xc6f7cd4f 1  0
47          4) 0xebfee6a7 0x25071959 0  - 0x11060000 1  0
48             0xebfee6a7 0x25071959 1  - 0x11060001 1  0
49          5) 0x14011959 0xdaf8e6a7 0  - 0xeefa0000 0  0
50             0x14011959 0xdaf8e6a7 1  - 0xeefa0001 0  0
51          6) 0x87654321 0xabcdef01 0  - 0x33333222 1  1
52             0x87654321 0xabcdef01 1  - 0x33333223 1  1
53          7) 0x789abcde 0x08765432 0  - 0x81111110 0  1
54             0x789abcde 0x08765432 1  - 0x81111111 0  1
55          8) 0xffffffff 0x00000000 0  - 0xffffffff 0  0
56             0xffffffff 0x00000000 1  - 0x00000000 1  0
57          9) 0x7fffffff 0x00000000 0  - 0x7fffffff 0  0
58             0x7fffffff 0x00000000 1  - 0x80000000 0  1
59
60        */
61
62        /* Mask to read OV (SR[11]), CY (SR[10]) and not F (SR[9]) */
63        l.movhi r5,     hi(0x00000c00)
64        l.ori   r5, r5, lo(0x00000c00)
65        l.movhi r8,     hi(0x80000000)
66        l.ori   r8, r8, lo(0x80000000)
67       
68        /**********/
69        /* Test 1 */
70        /**********/
71        l.add   r0,r0,r0               /* unset carry */
72        l.movhi r1,     hi(0x00000000) /* RA */
73        l.ori   r1, r1, lo(0x00000000)
74        l.movhi r2,     hi(0x00000000) /* RB */
75        l.ori   r2, r2, lo(0x00000000)
76        l.movhi r3,     hi(0x00000000) /* RD wait */
77        l.ori   r3, r3, lo(0x00000000)
78        l.movhi r6,     hi(0x00000000) /* SR wait */
79        l.ori   r6, r6, lo(0x00000000)
80       
81        l.addc   r4, r1, r2
82
83        /* Test flag */
84        l.mfspr r7, r0, 17
85        l.and   r7, r7, r5
86
87        l.sfeq  r6, r7
88        l.bnf   _end_ko
89        l.nop
90
91        /* Test result */
92        l.sfeq  r3, r4
93        l.bnf   _end_ko
94        l.nop
95
96        l.add   r0,r8,r8               /* set carry */
97        l.movhi r3,     hi(0x00000001) /* RD wait */
98        l.ori   r3, r3, lo(0x00000001)
99        l.movhi r6,     hi(0x00000000) /* SR wait */
100        l.ori   r6, r6, lo(0x00000000)
101       
102        l.addc   r4, r1, r2
103
104        /* Test flag */
105        l.mfspr r7, r0, 17
106        l.and   r7, r7, r5
107
108        l.sfeq  r6, r7
109        l.bnf   _end_ko
110        l.nop
111
112        /* Test result */
113        l.sfeq  r3, r4
114        l.bnf   _end_ko
115        l.nop
116       
117        /**********/
118        /* Test 2 */
119        /**********/
120        l.add   r0,r0,r0               /* unset carry */
121        l.movhi r1,     hi(0x14011959) /* RA */
122        l.ori   r1, r1, lo(0x14011959)
123        l.movhi r2,     hi(0x25071959) /* RB */
124        l.ori   r2, r2, lo(0x25071959)
125        l.movhi r3,     hi(0x390832b2) /* RD wait */
126        l.ori   r3, r3, lo(0x390832b2)
127        l.movhi r6,     hi(0x00000000) /* SR wait */
128        l.ori   r6, r6, lo(0x00000000)
129       
130        l.addc   r4, r1, r2
131
132        /* Test flag */
133        l.mfspr r7, r0, 17
134        l.and   r7, r7, r5
135
136        l.sfeq  r6, r7
137        l.bnf   _end_ko
138        l.nop
139
140        /* Test result */
141        l.sfeq  r3, r4
142        l.bnf   _end_ko
143        l.nop
144
145        l.add   r0,r8,r8               /* set carry */
146        l.movhi r3,     hi(0x390832b3) /* RD wait */
147        l.ori   r3, r3, lo(0x390832b3)
148        l.movhi r6,     hi(0x00000000) /* SR wait */
149        l.ori   r6, r6, lo(0x00000000)
150       
151        l.addc   r4, r1, r2
152
153        /* Test flag */
154        l.mfspr r7, r0, 17
155        l.and   r7, r7, r5
156
157        l.sfeq  r6, r7
158        l.bnf   _end_ko
159        l.nop
160
161        /* Test result */
162        l.sfeq  r3, r4
163        l.bnf   _end_ko
164        l.nop
165       
166        /**********/
167        /* Test 3 */
168        /**********/
169        l.add   r0,r0,r0               /* unset carry */
170        l.movhi r1,     hi(0xebfee6a7) /* RA */
171        l.ori   r1, r1, lo(0xebfee6a7)
172        l.movhi r2,     hi(0xdaf8e6a7) /* RB */
173        l.ori   r2, r2, lo(0xdaf8e6a7)
174        l.movhi r3,     hi(0xc6f7cd4e) /* RD wait */
175        l.ori   r3, r3, lo(0xc6f7cd4e)
176        l.movhi r6,     hi(0x00000400) /* SR wait */
177        l.ori   r6, r6, lo(0x00000400)
178       
179        l.addc   r4, r1, r2
180
181        /* Test flag */
182        l.mfspr r7, r0, 17
183        l.and   r7, r7, r5
184
185        l.sfeq  r6, r7
186        l.bnf   _end_ko
187        l.nop
188
189        /* Test result */
190        l.sfeq  r3, r4
191        l.bnf   _end_ko
192        l.nop
193
194        l.add   r0,r8,r8               /* set carry */
195        l.movhi r3,     hi(0xc6f7cd4f) /* RD wait */
196        l.ori   r3, r3, lo(0xc6f7cd4f)
197        l.movhi r6,     hi(0x00000400) /* SR wait */
198        l.ori   r6, r6, lo(0x00000400)
199       
200        l.addc   r4, r1, r2
201
202        /* Test flag */
203        l.mfspr r7, r0, 17
204        l.and   r7, r7, r5
205
206        l.sfeq  r6, r7
207        l.bnf   _end_ko
208        l.nop
209
210        /* Test result */
211        l.sfeq  r3, r4
212        l.bnf   _end_ko
213        l.nop
214       
215        /**********/
216        /* Test 4 */
217        /**********/
218        l.add   r0,r0,r0               /* unset carry */
219        l.movhi r1,     hi(0xebfee6a7) /* RA */
220        l.ori   r1, r1, lo(0xebfee6a7)
221        l.movhi r2,     hi(0x25071959) /* RB */
222        l.ori   r2, r2, lo(0x25071959)
223        l.movhi r3,     hi(0x11060000) /* RD wait */
224        l.ori   r3, r3, lo(0x11060000)
225        l.movhi r6,     hi(0x00000400) /* SR wait */
226        l.ori   r6, r6, lo(0x00000400)
227       
228        l.addc   r4, r1, r2
229
230        /* Test flag */
231        l.mfspr r7, r0, 17
232        l.and   r7, r7, r5
233
234        l.sfeq  r6, r7
235        l.bnf   _end_ko
236        l.nop
237
238        /* Test result */
239        l.sfeq  r3, r4
240        l.bnf   _end_ko
241        l.nop
242
243        l.add   r0,r8,r8               /* set carry */
244        l.movhi r3,     hi(0x11060001) /* RD wait */
245        l.ori   r3, r3, lo(0x11060001)
246        l.movhi r6,     hi(0x00000400) /* SR wait */
247        l.ori   r6, r6, lo(0x00000400)
248       
249        l.addc   r4, r1, r2
250
251        /* Test flag */
252        l.mfspr r7, r0, 17
253        l.and   r7, r7, r5
254
255        l.sfeq  r6, r7
256        l.bnf   _end_ko
257        l.nop
258
259        /* Test result */
260        l.sfeq  r3, r4
261        l.bnf   _end_ko
262        l.nop
263       
264        /**********/
265        /* Test 5 */
266        /**********/
267        l.add   r0,r0,r0               /* unset carry */
268        l.movhi r1,     hi(0x14011959) /* RA */
269        l.ori   r1, r1, lo(0x14011959)
270        l.movhi r2,     hi(0xdaf8e6a7) /* RB */
271        l.ori   r2, r2, lo(0xdaf8e6a7)
272        l.movhi r3,     hi(0xeefa0000) /* RD wait */
273        l.ori   r3, r3, lo(0xeefa0000)
274        l.movhi r6,     hi(0x00000000) /* SR wait */
275        l.ori   r6, r6, lo(0x00000000)
276       
277        l.addc   r4, r1, r2
278
279        /* Test flag */
280        l.mfspr r7, r0, 17
281        l.and   r7, r7, r5
282
283        l.sfeq  r6, r7
284        l.bnf   _end_ko
285        l.nop
286
287        /* Test result */
288        l.sfeq  r3, r4
289        l.bnf   _end_ko
290        l.nop
291
292        l.add   r0,r8,r8               /* set carry */
293        l.movhi r3,     hi(0xeefa0001) /* RD wait */
294        l.ori   r3, r3, lo(0xeefa0001)
295        l.movhi r6,     hi(0x00000000) /* SR wait */
296        l.ori   r6, r6, lo(0x00000000)
297       
298        l.addc   r4, r1, r2
299
300        /* Test flag */
301        l.mfspr r7, r0, 17
302        l.and   r7, r7, r5
303
304        l.sfeq  r6, r7
305        l.bnf   _end_ko
306        l.nop
307
308        /* Test result */
309        l.sfeq  r3, r4
310        l.bnf   _end_ko
311        l.nop
312       
313        /**********/
314        /* Test 6 */
315        /**********/
316        l.add   r0,r0,r0               /* unset carry */
317        l.movhi r1,     hi(0x87654321) /* RA */
318        l.ori   r1, r1, lo(0x87654321)
319        l.movhi r2,     hi(0xabcdef01) /* RB */
320        l.ori   r2, r2, lo(0xabcdef01)
321        l.movhi r3,     hi(0x33333222) /* RD wait */
322        l.ori   r3, r3, lo(0x33333222)
323        l.movhi r6,     hi(0x00000c00) /* SR wait */
324        l.ori   r6, r6, lo(0x00000c00)
325       
326        l.addc   r4, r1, r2
327
328        /* Test flag */
329        l.mfspr r7, r0, 17
330        l.and   r7, r7, r5
331
332        l.sfeq  r6, r7
333        l.bnf   _end_ko
334        l.nop
335
336        /* Test result */
337        l.sfeq  r3, r4
338        l.bnf   _end_ko
339        l.nop
340
341        l.add   r0,r8,r8               /* set carry */
342        l.movhi r3,     hi(0x33333223) /* RD wait */
343        l.ori   r3, r3, lo(0x33333223)
344        l.movhi r6,     hi(0x00000c00) /* SR wait */
345        l.ori   r6, r6, lo(0x00000c00)
346       
347        l.addc   r4, r1, r2
348
349        /* Test flag */
350        l.mfspr r7, r0, 17
351        l.and   r7, r7, r5
352
353        l.sfeq  r6, r7
354        l.bnf   _end_ko
355        l.nop
356
357        /* Test result */
358        l.sfeq  r3, r4
359        l.bnf   _end_ko
360        l.nop
361
362        /**********/
363        /* Test 7 */
364        /**********/
365        l.add   r0,r0,r0               /* unset carry */
366        l.movhi r1,     hi(0x789abcde) /* RA */
367        l.ori   r1, r1, lo(0x789abcde)
368        l.movhi r2,     hi(0x08765432) /* RB */
369        l.ori   r2, r2, lo(0x08765432)
370        l.movhi r3,     hi(0x81111110) /* RD wait */
371        l.ori   r3, r3, lo(0x81111110)
372        l.movhi r6,     hi(0x00000800) /* SR wait */
373        l.ori   r6, r6, lo(0x00000800)
374       
375        l.addc   r4, r1, r2
376
377        /* Test flag */
378        l.mfspr r7, r0, 17
379        l.and   r7, r7, r5
380
381        l.sfeq  r6, r7
382        l.bnf   _end_ko
383        l.nop
384
385        /* Test result */
386        l.sfeq  r3, r4
387        l.bnf   _end_ko
388        l.nop
389
390        l.add   r0,r8,r8               /* unset carry */
391        l.movhi r3,     hi(0x81111111) /* RD wait */
392        l.ori   r3, r3, lo(0x81111111)
393        l.movhi r6,     hi(0x00000800) /* SR wait */
394        l.ori   r6, r6, lo(0x00000800)
395       
396        l.addc   r4, r1, r2
397
398        /* Test flag */
399        l.mfspr r7, r0, 17
400        l.and   r7, r7, r5
401
402        l.sfeq  r6, r7
403        l.bnf   _end_ko
404        l.nop
405
406        /* Test result */
407        l.sfeq  r3, r4
408        l.bnf   _end_ko
409        l.nop
410       
411        /**********/
412        /* Test 8 */
413        /**********/
414        l.add   r0,r0,r0               /* unset carry */
415        l.movhi r1,     hi(0xffffffff) /* RA */
416        l.ori   r1, r1, lo(0xffffffff)
417        l.movhi r2,     hi(0x00000000) /* RB */
418        l.ori   r2, r2, lo(0x00000000)
419        l.movhi r3,     hi(0xffffffff) /* RD wait */
420        l.ori   r3, r3, lo(0xffffffff)
421        l.movhi r6,     hi(0x00000000) /* SR wait */
422        l.ori   r6, r6, lo(0x00000000)
423       
424        l.addc   r4, r1, r2
425
426        /* Test flag */
427        l.mfspr r7, r0, 17
428        l.and   r7, r7, r5
429
430        l.sfeq  r6, r7
431        l.bnf   _end_ko
432        l.nop
433
434        /* Test result */
435        l.sfeq  r3, r4
436        l.bnf   _end_ko
437        l.nop
438
439        l.add   r0,r8,r8               /* unset carry */
440        l.movhi r3,     hi(0x00000000) /* RD wait */
441        l.ori   r3, r3, lo(0x00000000)
442        l.movhi r6,     hi(0x00000400) /* SR wait */
443        l.ori   r6, r6, lo(0x00000400)
444       
445        l.addc   r4, r1, r2
446
447        /* Test flag */
448        l.mfspr r7, r0, 17
449        l.and   r7, r7, r5
450
451        l.sfeq  r6, r7
452        l.bnf   _end_ko
453        l.nop
454
455        /* Test result */
456        l.sfeq  r3, r4
457        l.bnf   _end_ko
458        l.nop
459       
460        /**********/
461        /* Test 9 */
462        /**********/
463        l.add   r0,r0,r0               /* unset carry */
464        l.movhi r1,     hi(0x7fffffff) /* RA */
465        l.ori   r1, r1, lo(0x7fffffff)
466        l.movhi r2,     hi(0x00000000) /* RB */
467        l.ori   r2, r2, lo(0x00000000)
468        l.movhi r3,     hi(0x7fffffff) /* RD wait */
469        l.ori   r3, r3, lo(0x7fffffff)
470        l.movhi r6,     hi(0x00000000) /* SR wait */
471        l.ori   r6, r6, lo(0x00000000)
472       
473        l.addc   r4, r1, r2
474
475        /* Test flag */
476        l.mfspr r7, r0, 17
477        l.and   r7, r7, r5
478
479        l.sfeq  r6, r7
480        l.bnf   _end_ko
481        l.nop
482
483        /* Test result */
484        l.sfeq  r3, r4
485        l.bnf   _end_ko
486        l.nop
487
488        l.add   r0,r8,r8               /* unset carry */
489        l.movhi r3,     hi(0x80000000) /* RD wait */
490        l.ori   r3, r3, lo(0x80000000)
491        l.movhi r6,     hi(0x00000800) /* SR wait */
492        l.ori   r6, r6, lo(0x00000800)
493       
494        l.addc   r4, r1, r2
495
496        /* Test flag */
497        l.mfspr r7, r0, 17
498        l.and   r7, r7, r5
499
500        l.sfeq  r6, r7
501        l.bnf   _end_ko
502        l.nop
503
504        /* Test result */
505        l.sfeq  r3, r4
506        l.bnf   _end_ko
507        l.nop
508
509        /**********/
510        /* End */
511        /**********/
512
513        l.j     _end_ok
514        l.nop
Note: See TracBrowser for help on using the repository browser.