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