Some S-mode tests really only belong in M-mode
[riscv-tests.git] / isa / rv64mi / timer.S
1 # See LICENSE for license details.
2
3 #*****************************************************************************
4 # timer.S
5 #-----------------------------------------------------------------------------
6 #
7 # Test timer interrupts.
8 #
9
10 #include "riscv_test.h"
11 #include "test_macros.h"
12
13 RVTEST_RV64M
14 RVTEST_CODE_BEGIN
15
16 #define DELTA_T 5
17
18 li s8, 0 # number of taken timer interrupts
19 li s9, 10 # how many interrupts to run for
20
21 .align 4
22 csrr a0, mtime
23 add a0, a0, DELTA_T
24 csrw mtimecmp, a0
25 li a0, MIP_MTIP
26 csrs mie, a0
27 csrs mstatus, MSTATUS_MIE
28
29 # advance an LFSR until the timer has fired enough times
30 li s0, 1023
31 li s4, 0
32 1:srl s2,s0,3
33 xor s2,s2,s0
34 and s2,s2,1
35 srl s0,s0,1
36 sll s2,s2,9
37 or s0,s2,s0
38 and s0, s0, 0x3FF
39 add s4, s4, 1
40 bltu s8, s9, 1b
41
42 # compute iteration count % 1023 without using REMU
43 li s1, 1023
44 bltu s4, s1, 2f
45 1:sub s4, s4, s1
46 bgeu s4, s1, 1b
47 2:
48
49 # make sure the LFSR was computed correctly
50 la s1, lfsr
51 sll s4, s4, 2
52 add s1, s1, s4
53 lw s1, (s1)
54 li TESTNUM, 2
55 bne s0, s1, fail
56
57 RVTEST_PASS
58
59 TEST_PASSFAIL
60
61 mtvec_handler:
62 li TESTNUM, 3
63 csrr t0, mcause
64 bgez t0, fail
65
66 sll t0, t0, 1
67 addi t0, t0, -2*IRQ_M_TIMER
68 bnez t0, fail
69
70 csrr t0, mtime
71 addi t0, t0, DELTA_T
72 csrw mtimecmp, t0
73
74 add s8, s8, 1
75 eret
76
77 .data
78 lfsr:
79 .word 1023
80 .word 511
81 .word 255
82 .word 127
83 .word 63
84 .word 31
85 .word 15
86 .word 7
87 .word 515
88 .word 769
89 .word 896
90 .word 448
91 .word 224
92 .word 112
93 .word 56
94 .word 540
95 .word 782
96 .word 903
97 .word 963
98 .word 993
99 .word 1008
100 .word 504
101 .word 764
102 .word 894
103 .word 959
104 .word 479
105 .word 239
106 .word 119
107 .word 571
108 .word 285
109 .word 142
110 .word 583
111 .word 803
112 .word 913
113 .word 968
114 .word 996
115 .word 498
116 .word 249
117 .word 124
118 .word 574
119 .word 799
120 .word 399
121 .word 199
122 .word 611
123 .word 817
124 .word 920
125 .word 972
126 .word 998
127 .word 499
128 .word 761
129 .word 380
130 .word 702
131 .word 863
132 .word 431
133 .word 215
134 .word 619
135 .word 309
136 .word 666
137 .word 845
138 .word 422
139 .word 211
140 .word 617
141 .word 308
142 .word 154
143 .word 589
144 .word 294
145 .word 147
146 .word 585
147 .word 292
148 .word 146
149 .word 73
150 .word 36
151 .word 18
152 .word 9
153 .word 4
154 .word 2
155 .word 1
156 .word 512
157 .word 256
158 .word 128
159 .word 64
160 .word 32
161 .word 16
162 .word 8
163 .word 516
164 .word 258
165 .word 129
166 .word 576
167 .word 288
168 .word 144
169 .word 72
170 .word 548
171 .word 274
172 .word 137
173 .word 68
174 .word 34
175 .word 17
176 .word 520
177 .word 772
178 .word 386
179 .word 193
180 .word 608
181 .word 304
182 .word 152
183 .word 588
184 .word 806
185 .word 403
186 .word 713
187 .word 356
188 .word 178
189 .word 89
190 .word 44
191 .word 534
192 .word 267
193 .word 133
194 .word 578
195 .word 289
196 .word 656
197 .word 328
198 .word 676
199 .word 338
200 .word 169
201 .word 84
202 .word 42
203 .word 533
204 .word 778
205 .word 901
206 .word 962
207 .word 481
208 .word 752
209 .word 376
210 .word 700
211 .word 862
212 .word 943
213 .word 471
214 .word 747
215 .word 373
216 .word 698
217 .word 861
218 .word 430
219 .word 727
220 .word 875
221 .word 437
222 .word 730
223 .word 877
224 .word 438
225 .word 219
226 .word 109
227 .word 54
228 .word 27
229 .word 13
230 .word 6
231 .word 3
232 .word 513
233 .word 768
234 .word 384
235 .word 192
236 .word 96
237 .word 48
238 .word 24
239 .word 524
240 .word 774
241 .word 387
242 .word 705
243 .word 864
244 .word 432
245 .word 216
246 .word 620
247 .word 822
248 .word 411
249 .word 205
250 .word 102
251 .word 51
252 .word 537
253 .word 268
254 .word 646
255 .word 323
256 .word 673
257 .word 848
258 .word 424
259 .word 724
260 .word 362
261 .word 693
262 .word 858
263 .word 941
264 .word 470
265 .word 235
266 .word 117
267 .word 570
268 .word 797
269 .word 398
270 .word 711
271 .word 867
272 .word 945
273 .word 984
274 .word 1004
275 .word 1014
276 .word 507
277 .word 253
278 .word 126
279 .word 575
280 .word 287
281 .word 143
282 .word 71
283 .word 547
284 .word 785
285 .word 904
286 .word 964
287 .word 482
288 .word 241
289 .word 632
290 .word 828
291 .word 926
292 .word 975
293 .word 487
294 .word 755
295 .word 889
296 .word 444
297 .word 734
298 .word 879
299 .word 439
300 .word 731
301 .word 365
302 .word 182
303 .word 91
304 .word 45
305 .word 22
306 .word 11
307 .word 5
308 .word 514
309 .word 257
310 .word 640
311 .word 320
312 .word 160
313 .word 80
314 .word 40
315 .word 532
316 .word 266
317 .word 645
318 .word 834
319 .word 417
320 .word 720
321 .word 360
322 .word 692
323 .word 346
324 .word 685
325 .word 342
326 .word 171
327 .word 85
328 .word 554
329 .word 789
330 .word 906
331 .word 965
332 .word 994
333 .word 497
334 .word 760
335 .word 892
336 .word 958
337 .word 991
338 .word 495
339 .word 247
340 .word 635
341 .word 317
342 .word 158
343 .word 591
344 .word 295
345 .word 659
346 .word 841
347 .word 420
348 .word 210
349 .word 105
350 .word 52
351 .word 26
352 .word 525
353 .word 262
354 .word 131
355 .word 577
356 .word 800
357 .word 400
358 .word 200
359 .word 612
360 .word 306
361 .word 153
362 .word 76
363 .word 550
364 .word 275
365 .word 649
366 .word 324
367 .word 162
368 .word 81
369 .word 552
370 .word 788
371 .word 394
372 .word 709
373 .word 866
374 .word 433
375 .word 728
376 .word 876
377 .word 950
378 .word 475
379 .word 237
380 .word 118
381 .word 59
382 .word 29
383 .word 14
384 .word 519
385 .word 771
386 .word 897
387 .word 960
388 .word 480
389 .word 240
390 .word 120
391 .word 572
392 .word 798
393 .word 911
394 .word 455
395 .word 739
396 .word 881
397 .word 952
398 .word 988
399 .word 1006
400 .word 1015
401 .word 1019
402 .word 509
403 .word 254
404 .word 639
405 .word 319
406 .word 159
407 .word 79
408 .word 39
409 .word 531
410 .word 777
411 .word 388
412 .word 194
413 .word 97
414 .word 560
415 .word 280
416 .word 652
417 .word 838
418 .word 419
419 .word 721
420 .word 872
421 .word 948
422 .word 474
423 .word 749
424 .word 374
425 .word 187
426 .word 93
427 .word 46
428 .word 535
429 .word 779
430 .word 389
431 .word 706
432 .word 353
433 .word 688
434 .word 344
435 .word 684
436 .word 854
437 .word 427
438 .word 213
439 .word 618
440 .word 821
441 .word 922
442 .word 973
443 .word 486
444 .word 243
445 .word 633
446 .word 316
447 .word 670
448 .word 847
449 .word 423
450 .word 723
451 .word 873
452 .word 436
453 .word 218
454 .word 621
455 .word 310
456 .word 155
457 .word 77
458 .word 38
459 .word 19
460 .word 521
461 .word 260
462 .word 130
463 .word 65
464 .word 544
465 .word 272
466 .word 136
467 .word 580
468 .word 290
469 .word 145
470 .word 584
471 .word 804
472 .word 402
473 .word 201
474 .word 100
475 .word 50
476 .word 25
477 .word 12
478 .word 518
479 .word 259
480 .word 641
481 .word 832
482 .word 416
483 .word 208
484 .word 104
485 .word 564
486 .word 282
487 .word 653
488 .word 326
489 .word 163
490 .word 593
491 .word 808
492 .word 916
493 .word 458
494 .word 741
495 .word 882
496 .word 441
497 .word 220
498 .word 622
499 .word 823
500 .word 923
501 .word 461
502 .word 230
503 .word 115
504 .word 569
505 .word 284
506 .word 654
507 .word 839
508 .word 931
509 .word 977
510 .word 1000
511 .word 1012
512 .word 506
513 .word 765
514 .word 382
515 .word 703
516 .word 351
517 .word 175
518 .word 87
519 .word 555
520 .word 277
521 .word 650
522 .word 837
523 .word 930
524 .word 465
525 .word 744
526 .word 884
527 .word 442
528 .word 733
529 .word 366
530 .word 695
531 .word 859
532 .word 429
533 .word 214
534 .word 107
535 .word 53
536 .word 538
537 .word 781
538 .word 390
539 .word 195
540 .word 609
541 .word 816
542 .word 408
543 .word 716
544 .word 870
545 .word 435
546 .word 729
547 .word 364
548 .word 694
549 .word 347
550 .word 173
551 .word 86
552 .word 43
553 .word 21
554 .word 522
555 .word 773
556 .word 898
557 .word 449
558 .word 736
559 .word 368
560 .word 184
561 .word 604
562 .word 814
563 .word 919
564 .word 971
565 .word 485
566 .word 754
567 .word 377
568 .word 188
569 .word 606
570 .word 815
571 .word 407
572 .word 715
573 .word 357
574 .word 690
575 .word 345
576 .word 172
577 .word 598
578 .word 299
579 .word 149
580 .word 586
581 .word 805
582 .word 914
583 .word 457
584 .word 228
585 .word 114
586 .word 57
587 .word 28
588 .word 526
589 .word 775
590 .word 899
591 .word 961
592 .word 992
593 .word 496
594 .word 248
595 .word 636
596 .word 830
597 .word 927
598 .word 463
599 .word 231
600 .word 627
601 .word 825
602 .word 412
603 .word 718
604 .word 871
605 .word 947
606 .word 985
607 .word 492
608 .word 758
609 .word 379
610 .word 189
611 .word 94
612 .word 559
613 .word 279
614 .word 651
615 .word 325
616 .word 674
617 .word 337
618 .word 680
619 .word 852
620 .word 426
621 .word 725
622 .word 874
623 .word 949
624 .word 986
625 .word 1005
626 .word 502
627 .word 251
628 .word 125
629 .word 62
630 .word 543
631 .word 271
632 .word 135
633 .word 579
634 .word 801
635 .word 912
636 .word 456
637 .word 740
638 .word 370
639 .word 185
640 .word 92
641 .word 558
642 .word 791
643 .word 907
644 .word 453
645 .word 738
646 .word 369
647 .word 696
648 .word 860
649 .word 942
650 .word 983
651 .word 1003
652 .word 501
653 .word 762
654 .word 893
655 .word 446
656 .word 735
657 .word 367
658 .word 183
659 .word 603
660 .word 301
661 .word 150
662 .word 75
663 .word 37
664 .word 530
665 .word 265
666 .word 132
667 .word 66
668 .word 33
669 .word 528
670 .word 264
671 .word 644
672 .word 322
673 .word 161
674 .word 592
675 .word 296
676 .word 660
677 .word 330
678 .word 677
679 .word 850
680 .word 425
681 .word 212
682 .word 106
683 .word 565
684 .word 794
685 .word 909
686 .word 454
687 .word 227
688 .word 625
689 .word 824
690 .word 924
691 .word 974
692 .word 999
693 .word 1011
694 .word 1017
695 .word 508
696 .word 766
697 .word 895
698 .word 447
699 .word 223
700 .word 111
701 .word 55
702 .word 539
703 .word 269
704 .word 134
705 .word 67
706 .word 545
707 .word 784
708 .word 392
709 .word 708
710 .word 354
711 .word 177
712 .word 600
713 .word 812
714 .word 918
715 .word 459
716 .word 229
717 .word 626
718 .word 313
719 .word 156
720 .word 590
721 .word 807
722 .word 915
723 .word 969
724 .word 484
725 .word 242
726 .word 121
727 .word 60
728 .word 542
729 .word 783
730 .word 391
731 .word 707
732 .word 865
733 .word 944
734 .word 472
735 .word 748
736 .word 886
737 .word 443
738 .word 221
739 .word 110
740 .word 567
741 .word 795
742 .word 397
743 .word 198
744 .word 99
745 .word 561
746 .word 792
747 .word 908
748 .word 966
749 .word 483
750 .word 753
751 .word 888
752 .word 956
753 .word 990
754 .word 1007
755 .word 503
756 .word 763
757 .word 381
758 .word 190
759 .word 607
760 .word 303
761 .word 151
762 .word 587
763 .word 293
764 .word 658
765 .word 329
766 .word 164
767 .word 82
768 .word 41
769 .word 20
770 .word 10
771 .word 517
772 .word 770
773 .word 385
774 .word 704
775 .word 352
776 .word 176
777 .word 88
778 .word 556
779 .word 790
780 .word 395
781 .word 197
782 .word 610
783 .word 305
784 .word 664
785 .word 844
786 .word 934
787 .word 467
788 .word 745
789 .word 372
790 .word 186
791 .word 605
792 .word 302
793 .word 663
794 .word 843
795 .word 421
796 .word 722
797 .word 361
798 .word 180
799 .word 90
800 .word 557
801 .word 278
802 .word 139
803 .word 69
804 .word 546
805 .word 273
806 .word 648
807 .word 836
808 .word 418
809 .word 209
810 .word 616
811 .word 820
812 .word 410
813 .word 717
814 .word 358
815 .word 179
816 .word 601
817 .word 300
818 .word 662
819 .word 331
820 .word 165
821 .word 594
822 .word 297
823 .word 148
824 .word 74
825 .word 549
826 .word 786
827 .word 393
828 .word 196
829 .word 98
830 .word 49
831 .word 536
832 .word 780
833 .word 902
834 .word 451
835 .word 737
836 .word 880
837 .word 440
838 .word 732
839 .word 878
840 .word 951
841 .word 987
842 .word 493
843 .word 246
844 .word 123
845 .word 61
846 .word 30
847 .word 527
848 .word 263
849 .word 643
850 .word 833
851 .word 928
852 .word 464
853 .word 232
854 .word 628
855 .word 314
856 .word 669
857 .word 334
858 .word 679
859 .word 851
860 .word 937
861 .word 468
862 .word 234
863 .word 629
864 .word 826
865 .word 925
866 .word 462
867 .word 743
868 .word 883
869 .word 953
870 .word 476
871 .word 750
872 .word 887
873 .word 955
874 .word 477
875 .word 238
876 .word 631
877 .word 827
878 .word 413
879 .word 206
880 .word 615
881 .word 819
882 .word 921
883 .word 460
884 .word 742
885 .word 371
886 .word 697
887 .word 348
888 .word 686
889 .word 855
890 .word 939
891 .word 469
892 .word 746
893 .word 885
894 .word 954
895 .word 989
896 .word 494
897 .word 759
898 .word 891
899 .word 445
900 .word 222
901 .word 623
902 .word 311
903 .word 667
904 .word 333
905 .word 166
906 .word 83
907 .word 553
908 .word 276
909 .word 138
910 .word 581
911 .word 802
912 .word 401
913 .word 712
914 .word 868
915 .word 434
916 .word 217
917 .word 108
918 .word 566
919 .word 283
920 .word 141
921 .word 70
922 .word 35
923 .word 529
924 .word 776
925 .word 900
926 .word 450
927 .word 225
928 .word 624
929 .word 312
930 .word 668
931 .word 846
932 .word 935
933 .word 979
934 .word 1001
935 .word 500
936 .word 250
937 .word 637
938 .word 318
939 .word 671
940 .word 335
941 .word 167
942 .word 595
943 .word 809
944 .word 404
945 .word 202
946 .word 613
947 .word 818
948 .word 409
949 .word 204
950 .word 614
951 .word 307
952 .word 665
953 .word 332
954 .word 678
955 .word 339
956 .word 681
957 .word 340
958 .word 170
959 .word 597
960 .word 810
961 .word 917
962 .word 970
963 .word 997
964 .word 1010
965 .word 505
966 .word 252
967 .word 638
968 .word 831
969 .word 415
970 .word 207
971 .word 103
972 .word 563
973 .word 793
974 .word 396
975 .word 710
976 .word 355
977 .word 689
978 .word 856
979 .word 940
980 .word 982
981 .word 491
982 .word 245
983 .word 634
984 .word 829
985 .word 414
986 .word 719
987 .word 359
988 .word 691
989 .word 857
990 .word 428
991 .word 726
992 .word 363
993 .word 181
994 .word 602
995 .word 813
996 .word 406
997 .word 203
998 .word 101
999 .word 562
1000 .word 281
1001 .word 140
1002 .word 582
1003 .word 291
1004 .word 657
1005 .word 840
1006 .word 932
1007 .word 466
1008 .word 233
1009 .word 116
1010 .word 58
1011 .word 541
1012 .word 270
1013 .word 647
1014 .word 835
1015 .word 929
1016 .word 976
1017 .word 488
1018 .word 756
1019 .word 378
1020 .word 701
1021 .word 350
1022 .word 687
1023 .word 343
1024 .word 683
1025 .word 341
1026 .word 682
1027 .word 853
1028 .word 938
1029 .word 981
1030 .word 1002
1031 .word 1013
1032 .word 1018
1033 .word 1021
1034 .word 510
1035 .word 767
1036 .word 383
1037 .word 191
1038 .word 95
1039 .word 47
1040 .word 23
1041 .word 523
1042 .word 261
1043 .word 642
1044 .word 321
1045 .word 672
1046 .word 336
1047 .word 168
1048 .word 596
1049 .word 298
1050 .word 661
1051 .word 842
1052 .word 933
1053 .word 978
1054 .word 489
1055 .word 244
1056 .word 122
1057 .word 573
1058 .word 286
1059 .word 655
1060 .word 327
1061 .word 675
1062 .word 849
1063 .word 936
1064 .word 980
1065 .word 490
1066 .word 757
1067 .word 890
1068 .word 957
1069 .word 478
1070 .word 751
1071 .word 375
1072 .word 699
1073 .word 349
1074 .word 174
1075 .word 599
1076 .word 811
1077 .word 405
1078 .word 714
1079 .word 869
1080 .word 946
1081 .word 473
1082 .word 236
1083 .word 630
1084 .word 315
1085 .word 157
1086 .word 78
1087 .word 551
1088 .word 787
1089 .word 905
1090 .word 452
1091 .word 226
1092 .word 113
1093 .word 568
1094 .word 796
1095 .word 910
1096 .word 967
1097 .word 995
1098 .word 1009
1099 .word 1016
1100 .word 1020
1101 .word 1022
1102
1103 RVTEST_CODE_END