From 6305efa7c2bb4177e0f438f2e209be82eed7f992 Mon Sep 17 00:00:00 2001 From: Eyck Jentzsch Date: Sat, 17 Aug 2024 12:40:40 +0200 Subject: [PATCH] implements proper target XML generation incl. CSRs --- CMakeLists.txt | 1 + src/iss/debugger/csr_names.cpp | 4108 +++++++++++++++++++++++ src/iss/debugger/riscv_target_adapter.h | 256 +- 3 files changed, 4228 insertions(+), 137 deletions(-) create mode 100644 src/iss/debugger/csr_names.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 2a46f47..0d5bafc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,6 +20,7 @@ set(LIB_SOURCES src/iss/arch/tgc5c.cpp src/vm/interp/vm_tgc5c.cpp src/vm/fp_functions.cpp + src/iss/debugger/csr_names.cpp src/iss/semihosting/semihosting.cpp ) diff --git a/src/iss/debugger/csr_names.cpp b/src/iss/debugger/csr_names.cpp new file mode 100644 index 0000000..f1c35e2 --- /dev/null +++ b/src/iss/debugger/csr_names.cpp @@ -0,0 +1,4108 @@ +#include +// generated from: +// * /scratch/eyck/workarea/Other/riscv-opcodes/csrs.csv +// * /scratch/eyck/workarea/Other/riscv-opcodes/csrs32.csv +namespace iss { +namespace debugger { +const std::array csr_names = { + "unknown", // 0 + "fflags", // 1 + "frm", // 2 + "fcsr", // 3 + "unknown", // 4 + "unknown", // 5 + "unknown", // 6 + "utvt", // 7 + "vstart", // 8 + "vxsat", // 9 + "vxrm", // 10 + "unknown", // 11 + "unknown", // 12 + "unknown", // 13 + "unknown", // 14 + "vcsr", // 15 + "unknown", // 16 + "ssp", // 17 + "unknown", // 18 + "unknown", // 19 + "unknown", // 20 + "seed", // 21 + "unknown", // 22 + "jvt", // 23 + "unknown", // 24 + "unknown", // 25 + "unknown", // 26 + "unknown", // 27 + "unknown", // 28 + "unknown", // 29 + "unknown", // 30 + "unknown", // 31 + "unknown", // 32 + "unknown", // 33 + "unknown", // 34 + "unknown", // 35 + "unknown", // 36 + "unknown", // 37 + "unknown", // 38 + "unknown", // 39 + "unknown", // 40 + "unknown", // 41 + "unknown", // 42 + "unknown", // 43 + "unknown", // 44 + "unknown", // 45 + "unknown", // 46 + "unknown", // 47 + "unknown", // 48 + "unknown", // 49 + "unknown", // 50 + "unknown", // 51 + "unknown", // 52 + "unknown", // 53 + "unknown", // 54 + "unknown", // 55 + "unknown", // 56 + "unknown", // 57 + "unknown", // 58 + "unknown", // 59 + "unknown", // 60 + "unknown", // 61 + "unknown", // 62 + "unknown", // 63 + "unknown", // 64 + "unknown", // 65 + "unknown", // 66 + "unknown", // 67 + "unknown", // 68 + "unxti", // 69 + "uintstatus", // 70 + "unknown", // 71 + "uscratchcsw", // 72 + "uscratchcswl", // 73 + "unknown", // 74 + "unknown", // 75 + "unknown", // 76 + "unknown", // 77 + "unknown", // 78 + "unknown", // 79 + "unknown", // 80 + "unknown", // 81 + "unknown", // 82 + "unknown", // 83 + "unknown", // 84 + "unknown", // 85 + "unknown", // 86 + "unknown", // 87 + "unknown", // 88 + "unknown", // 89 + "unknown", // 90 + "unknown", // 91 + "unknown", // 92 + "unknown", // 93 + "unknown", // 94 + "unknown", // 95 + "unknown", // 96 + "unknown", // 97 + "unknown", // 98 + "unknown", // 99 + "unknown", // 100 + "unknown", // 101 + "unknown", // 102 + "unknown", // 103 + "unknown", // 104 + "unknown", // 105 + "unknown", // 106 + "unknown", // 107 + "unknown", // 108 + "unknown", // 109 + "unknown", // 110 + "unknown", // 111 + "unknown", // 112 + "unknown", // 113 + "unknown", // 114 + "unknown", // 115 + "unknown", // 116 + "unknown", // 117 + "unknown", // 118 + "unknown", // 119 + "unknown", // 120 + "unknown", // 121 + "unknown", // 122 + "unknown", // 123 + "unknown", // 124 + "unknown", // 125 + "unknown", // 126 + "unknown", // 127 + "unknown", // 128 + "unknown", // 129 + "unknown", // 130 + "unknown", // 131 + "unknown", // 132 + "unknown", // 133 + "unknown", // 134 + "unknown", // 135 + "unknown", // 136 + "unknown", // 137 + "unknown", // 138 + "unknown", // 139 + "unknown", // 140 + "unknown", // 141 + "unknown", // 142 + "unknown", // 143 + "unknown", // 144 + "unknown", // 145 + "unknown", // 146 + "unknown", // 147 + "unknown", // 148 + "unknown", // 149 + "unknown", // 150 + "unknown", // 151 + "unknown", // 152 + "unknown", // 153 + "unknown", // 154 + "unknown", // 155 + "unknown", // 156 + "unknown", // 157 + "unknown", // 158 + "unknown", // 159 + "unknown", // 160 + "unknown", // 161 + "unknown", // 162 + "unknown", // 163 + "unknown", // 164 + "unknown", // 165 + "unknown", // 166 + "unknown", // 167 + "unknown", // 168 + "unknown", // 169 + "unknown", // 170 + "unknown", // 171 + "unknown", // 172 + "unknown", // 173 + "unknown", // 174 + "unknown", // 175 + "unknown", // 176 + "unknown", // 177 + "unknown", // 178 + "unknown", // 179 + "unknown", // 180 + "unknown", // 181 + "unknown", // 182 + "unknown", // 183 + "unknown", // 184 + "unknown", // 185 + "unknown", // 186 + "unknown", // 187 + "unknown", // 188 + "unknown", // 189 + "unknown", // 190 + "unknown", // 191 + "unknown", // 192 + "unknown", // 193 + "unknown", // 194 + "unknown", // 195 + "unknown", // 196 + "unknown", // 197 + "unknown", // 198 + "unknown", // 199 + "unknown", // 200 + "unknown", // 201 + "unknown", // 202 + "unknown", // 203 + "unknown", // 204 + "unknown", // 205 + "unknown", // 206 + "unknown", // 207 + "unknown", // 208 + "unknown", // 209 + "unknown", // 210 + "unknown", // 211 + "unknown", // 212 + "unknown", // 213 + "unknown", // 214 + "unknown", // 215 + "unknown", // 216 + "unknown", // 217 + "unknown", // 218 + "unknown", // 219 + "unknown", // 220 + "unknown", // 221 + "unknown", // 222 + "unknown", // 223 + "unknown", // 224 + "unknown", // 225 + "unknown", // 226 + "unknown", // 227 + "unknown", // 228 + "unknown", // 229 + "unknown", // 230 + "unknown", // 231 + "unknown", // 232 + "unknown", // 233 + "unknown", // 234 + "unknown", // 235 + "unknown", // 236 + "unknown", // 237 + "unknown", // 238 + "unknown", // 239 + "unknown", // 240 + "unknown", // 241 + "unknown", // 242 + "unknown", // 243 + "unknown", // 244 + "unknown", // 245 + "unknown", // 246 + "unknown", // 247 + "unknown", // 248 + "unknown", // 249 + "unknown", // 250 + "unknown", // 251 + "unknown", // 252 + "unknown", // 253 + "unknown", // 254 + "unknown", // 255 + "sstatus", // 256 + "unknown", // 257 + "sedeleg", // 258 + "sideleg", // 259 + "sie", // 260 + "stvec", // 261 + "scounteren", // 262 + "stvt", // 263 + "unknown", // 264 + "unknown", // 265 + "senvcfg", // 266 + "unknown", // 267 + "sstateen0", // 268 + "sstateen1", // 269 + "sstateen2", // 270 + "sstateen3", // 271 + "unknown", // 272 + "unknown", // 273 + "unknown", // 274 + "unknown", // 275 + "sieh", // 276 + "unknown", // 277 + "unknown", // 278 + "unknown", // 279 + "unknown", // 280 + "unknown", // 281 + "unknown", // 282 + "unknown", // 283 + "unknown", // 284 + "unknown", // 285 + "unknown", // 286 + "unknown", // 287 + "scountinhibit", // 288 + "unknown", // 289 + "unknown", // 290 + "unknown", // 291 + "unknown", // 292 + "unknown", // 293 + "unknown", // 294 + "unknown", // 295 + "unknown", // 296 + "unknown", // 297 + "unknown", // 298 + "unknown", // 299 + "unknown", // 300 + "unknown", // 301 + "unknown", // 302 + "unknown", // 303 + "unknown", // 304 + "unknown", // 305 + "unknown", // 306 + "unknown", // 307 + "unknown", // 308 + "unknown", // 309 + "unknown", // 310 + "unknown", // 311 + "unknown", // 312 + "unknown", // 313 + "unknown", // 314 + "unknown", // 315 + "unknown", // 316 + "unknown", // 317 + "unknown", // 318 + "unknown", // 319 + "sscratch", // 320 + "sepc", // 321 + "scause", // 322 + "stval", // 323 + "sip", // 324 + "snxti", // 325 + "sintstatus", // 326 + "unknown", // 327 + "sscratchcsw", // 328 + "sscratchcswl", // 329 + "unknown", // 330 + "unknown", // 331 + "unknown", // 332 + "stimecmp", // 333 + "sctrctl", // 334 + "sctrstatus", // 335 + "siselect", // 336 + "sireg", // 337 + "sireg2", // 338 + "sireg3", // 339 + "siph", // 340 + "sireg4", // 341 + "sireg5", // 342 + "sireg6", // 343 + "unknown", // 344 + "unknown", // 345 + "unknown", // 346 + "unknown", // 347 + "stopei", // 348 + "stimecmph", // 349 + "unknown", // 350 + "sctrdepth", // 351 + "unknown", // 352 + "unknown", // 353 + "unknown", // 354 + "unknown", // 355 + "unknown", // 356 + "unknown", // 357 + "unknown", // 358 + "unknown", // 359 + "unknown", // 360 + "unknown", // 361 + "unknown", // 362 + "unknown", // 363 + "unknown", // 364 + "unknown", // 365 + "unknown", // 366 + "unknown", // 367 + "unknown", // 368 + "unknown", // 369 + "unknown", // 370 + "unknown", // 371 + "unknown", // 372 + "unknown", // 373 + "unknown", // 374 + "unknown", // 375 + "unknown", // 376 + "unknown", // 377 + "unknown", // 378 + "unknown", // 379 + "unknown", // 380 + "unknown", // 381 + "unknown", // 382 + "unknown", // 383 + "satp", // 384 + "srmcfg", // 385 + "unknown", // 386 + "unknown", // 387 + "unknown", // 388 + "unknown", // 389 + "unknown", // 390 + "unknown", // 391 + "unknown", // 392 + "unknown", // 393 + "unknown", // 394 + "unknown", // 395 + "unknown", // 396 + "unknown", // 397 + "unknown", // 398 + "unknown", // 399 + "unknown", // 400 + "unknown", // 401 + "unknown", // 402 + "unknown", // 403 + "unknown", // 404 + "unknown", // 405 + "unknown", // 406 + "unknown", // 407 + "unknown", // 408 + "unknown", // 409 + "unknown", // 410 + "unknown", // 411 + "unknown", // 412 + "unknown", // 413 + "unknown", // 414 + "unknown", // 415 + "unknown", // 416 + "unknown", // 417 + "unknown", // 418 + "unknown", // 419 + "unknown", // 420 + "unknown", // 421 + "unknown", // 422 + "unknown", // 423 + "unknown", // 424 + "unknown", // 425 + "unknown", // 426 + "unknown", // 427 + "unknown", // 428 + "unknown", // 429 + "unknown", // 430 + "unknown", // 431 + "unknown", // 432 + "unknown", // 433 + "unknown", // 434 + "unknown", // 435 + "unknown", // 436 + "unknown", // 437 + "unknown", // 438 + "unknown", // 439 + "unknown", // 440 + "unknown", // 441 + "unknown", // 442 + "unknown", // 443 + "unknown", // 444 + "unknown", // 445 + "unknown", // 446 + "unknown", // 447 + "unknown", // 448 + "unknown", // 449 + "unknown", // 450 + "unknown", // 451 + "unknown", // 452 + "unknown", // 453 + "unknown", // 454 + "unknown", // 455 + "unknown", // 456 + "unknown", // 457 + "unknown", // 458 + "unknown", // 459 + "unknown", // 460 + "unknown", // 461 + "unknown", // 462 + "unknown", // 463 + "unknown", // 464 + "unknown", // 465 + "unknown", // 466 + "unknown", // 467 + "unknown", // 468 + "unknown", // 469 + "unknown", // 470 + "unknown", // 471 + "unknown", // 472 + "unknown", // 473 + "unknown", // 474 + "unknown", // 475 + "unknown", // 476 + "unknown", // 477 + "unknown", // 478 + "unknown", // 479 + "unknown", // 480 + "unknown", // 481 + "unknown", // 482 + "unknown", // 483 + "unknown", // 484 + "unknown", // 485 + "unknown", // 486 + "unknown", // 487 + "unknown", // 488 + "unknown", // 489 + "unknown", // 490 + "unknown", // 491 + "unknown", // 492 + "unknown", // 493 + "unknown", // 494 + "unknown", // 495 + "unknown", // 496 + "unknown", // 497 + "unknown", // 498 + "unknown", // 499 + "unknown", // 500 + "unknown", // 501 + "unknown", // 502 + "unknown", // 503 + "unknown", // 504 + "unknown", // 505 + "unknown", // 506 + "unknown", // 507 + "unknown", // 508 + "unknown", // 509 + "unknown", // 510 + "unknown", // 511 + "vsstatus", // 512 + "unknown", // 513 + "unknown", // 514 + "unknown", // 515 + "vsie", // 516 + "vstvec", // 517 + "unknown", // 518 + "unknown", // 519 + "unknown", // 520 + "unknown", // 521 + "unknown", // 522 + "unknown", // 523 + "unknown", // 524 + "unknown", // 525 + "unknown", // 526 + "unknown", // 527 + "unknown", // 528 + "unknown", // 529 + "unknown", // 530 + "unknown", // 531 + "vsieh", // 532 + "unknown", // 533 + "unknown", // 534 + "unknown", // 535 + "unknown", // 536 + "unknown", // 537 + "unknown", // 538 + "unknown", // 539 + "unknown", // 540 + "unknown", // 541 + "unknown", // 542 + "unknown", // 543 + "unknown", // 544 + "unknown", // 545 + "unknown", // 546 + "unknown", // 547 + "unknown", // 548 + "unknown", // 549 + "unknown", // 550 + "unknown", // 551 + "unknown", // 552 + "unknown", // 553 + "unknown", // 554 + "unknown", // 555 + "unknown", // 556 + "unknown", // 557 + "unknown", // 558 + "unknown", // 559 + "unknown", // 560 + "unknown", // 561 + "unknown", // 562 + "unknown", // 563 + "unknown", // 564 + "unknown", // 565 + "unknown", // 566 + "unknown", // 567 + "unknown", // 568 + "unknown", // 569 + "unknown", // 570 + "unknown", // 571 + "unknown", // 572 + "unknown", // 573 + "unknown", // 574 + "unknown", // 575 + "vsscratch", // 576 + "vsepc", // 577 + "vscause", // 578 + "vstval", // 579 + "vsip", // 580 + "unknown", // 581 + "unknown", // 582 + "unknown", // 583 + "unknown", // 584 + "unknown", // 585 + "unknown", // 586 + "unknown", // 587 + "unknown", // 588 + "vstimecmp", // 589 + "vsctrctl", // 590 + "unknown", // 591 + "vsiselect", // 592 + "vsireg", // 593 + "vsireg2", // 594 + "vsireg3", // 595 + "vsiph", // 596 + "vsireg4", // 597 + "vsireg5", // 598 + "vsireg6", // 599 + "unknown", // 600 + "unknown", // 601 + "unknown", // 602 + "unknown", // 603 + "vstopei", // 604 + "vstimecmph", // 605 + "unknown", // 606 + "unknown", // 607 + "unknown", // 608 + "unknown", // 609 + "unknown", // 610 + "unknown", // 611 + "unknown", // 612 + "unknown", // 613 + "unknown", // 614 + "unknown", // 615 + "unknown", // 616 + "unknown", // 617 + "unknown", // 618 + "unknown", // 619 + "unknown", // 620 + "unknown", // 621 + "unknown", // 622 + "unknown", // 623 + "unknown", // 624 + "unknown", // 625 + "unknown", // 626 + "unknown", // 627 + "unknown", // 628 + "unknown", // 629 + "unknown", // 630 + "unknown", // 631 + "unknown", // 632 + "unknown", // 633 + "unknown", // 634 + "unknown", // 635 + "unknown", // 636 + "unknown", // 637 + "unknown", // 638 + "unknown", // 639 + "vsatp", // 640 + "unknown", // 641 + "unknown", // 642 + "unknown", // 643 + "unknown", // 644 + "unknown", // 645 + "unknown", // 646 + "unknown", // 647 + "unknown", // 648 + "unknown", // 649 + "unknown", // 650 + "unknown", // 651 + "unknown", // 652 + "unknown", // 653 + "unknown", // 654 + "unknown", // 655 + "unknown", // 656 + "unknown", // 657 + "unknown", // 658 + "unknown", // 659 + "unknown", // 660 + "unknown", // 661 + "unknown", // 662 + "unknown", // 663 + "unknown", // 664 + "unknown", // 665 + "unknown", // 666 + "unknown", // 667 + "unknown", // 668 + "unknown", // 669 + "unknown", // 670 + "unknown", // 671 + "unknown", // 672 + "unknown", // 673 + "unknown", // 674 + "unknown", // 675 + "unknown", // 676 + "unknown", // 677 + "unknown", // 678 + "unknown", // 679 + "unknown", // 680 + "unknown", // 681 + "unknown", // 682 + "unknown", // 683 + "unknown", // 684 + "unknown", // 685 + "unknown", // 686 + "unknown", // 687 + "unknown", // 688 + "unknown", // 689 + "unknown", // 690 + "unknown", // 691 + "unknown", // 692 + "unknown", // 693 + "unknown", // 694 + "unknown", // 695 + "unknown", // 696 + "unknown", // 697 + "unknown", // 698 + "unknown", // 699 + "unknown", // 700 + "unknown", // 701 + "unknown", // 702 + "unknown", // 703 + "unknown", // 704 + "unknown", // 705 + "unknown", // 706 + "unknown", // 707 + "unknown", // 708 + "unknown", // 709 + "unknown", // 710 + "unknown", // 711 + "unknown", // 712 + "unknown", // 713 + "unknown", // 714 + "unknown", // 715 + "unknown", // 716 + "unknown", // 717 + "unknown", // 718 + "unknown", // 719 + "unknown", // 720 + "unknown", // 721 + "unknown", // 722 + "unknown", // 723 + "unknown", // 724 + "unknown", // 725 + "unknown", // 726 + "unknown", // 727 + "unknown", // 728 + "unknown", // 729 + "unknown", // 730 + "unknown", // 731 + "unknown", // 732 + "unknown", // 733 + "unknown", // 734 + "unknown", // 735 + "unknown", // 736 + "unknown", // 737 + "unknown", // 738 + "unknown", // 739 + "unknown", // 740 + "unknown", // 741 + "unknown", // 742 + "unknown", // 743 + "unknown", // 744 + "unknown", // 745 + "unknown", // 746 + "unknown", // 747 + "unknown", // 748 + "unknown", // 749 + "unknown", // 750 + "unknown", // 751 + "unknown", // 752 + "unknown", // 753 + "unknown", // 754 + "unknown", // 755 + "unknown", // 756 + "unknown", // 757 + "unknown", // 758 + "unknown", // 759 + "unknown", // 760 + "unknown", // 761 + "unknown", // 762 + "unknown", // 763 + "unknown", // 764 + "unknown", // 765 + "unknown", // 766 + "unknown", // 767 + "mstatus", // 768 + "misa", // 769 + "medeleg", // 770 + "mideleg", // 771 + "mie", // 772 + "mtvec", // 773 + "mcounteren", // 774 + "mtvt", // 775 + "mvien", // 776 + "mvip", // 777 + "menvcfg", // 778 + "unknown", // 779 + "mstateen0", // 780 + "mstateen1", // 781 + "mstateen2", // 782 + "mstateen3", // 783 + "mstatush", // 784 + "unknown", // 785 + "unknown", // 786 + "midelegh", // 787 + "mieh", // 788 + "unknown", // 789 + "unknown", // 790 + "unknown", // 791 + "mvienh", // 792 + "mviph", // 793 + "menvcfgh", // 794 + "unknown", // 795 + "mstateen0h", // 796 + "mstateen1h", // 797 + "mstateen2h", // 798 + "mstateen3h", // 799 + "mcountinhibit", // 800 + "mcyclecfg", // 801 + "minstretcfg", // 802 + "mhpmevent3", // 803 + "mhpmevent4", // 804 + "mhpmevent5", // 805 + "mhpmevent6", // 806 + "mhpmevent7", // 807 + "mhpmevent8", // 808 + "mhpmevent9", // 809 + "mhpmevent10", // 810 + "mhpmevent11", // 811 + "mhpmevent12", // 812 + "mhpmevent13", // 813 + "mhpmevent14", // 814 + "mhpmevent15", // 815 + "mhpmevent16", // 816 + "mhpmevent17", // 817 + "mhpmevent18", // 818 + "mhpmevent19", // 819 + "mhpmevent20", // 820 + "mhpmevent21", // 821 + "mhpmevent22", // 822 + "mhpmevent23", // 823 + "mhpmevent24", // 824 + "mhpmevent25", // 825 + "mhpmevent26", // 826 + "mhpmevent27", // 827 + "mhpmevent28", // 828 + "mhpmevent29", // 829 + "mhpmevent30", // 830 + "mhpmevent31", // 831 + "mscratch", // 832 + "mepc", // 833 + "mcause", // 834 + "mtval", // 835 + "mip", // 836 + "mnxti", // 837 + "mintstatus", // 838 + "unknown", // 839 + "mscratchcsw", // 840 + "mscratchcswl", // 841 + "mtinst", // 842 + "mtval2", // 843 + "unknown", // 844 + "unknown", // 845 + "mctrctl", // 846 + "unknown", // 847 + "miselect", // 848 + "mireg", // 849 + "mireg2", // 850 + "mireg3", // 851 + "miph", // 852 + "mireg4", // 853 + "mireg5", // 854 + "mireg6", // 855 + "unknown", // 856 + "unknown", // 857 + "unknown", // 858 + "unknown", // 859 + "mtopei", // 860 + "unknown", // 861 + "unknown", // 862 + "unknown", // 863 + "unknown", // 864 + "unknown", // 865 + "unknown", // 866 + "unknown", // 867 + "unknown", // 868 + "unknown", // 869 + "unknown", // 870 + "unknown", // 871 + "unknown", // 872 + "unknown", // 873 + "unknown", // 874 + "unknown", // 875 + "unknown", // 876 + "unknown", // 877 + "unknown", // 878 + "unknown", // 879 + "unknown", // 880 + "unknown", // 881 + "unknown", // 882 + "unknown", // 883 + "unknown", // 884 + "unknown", // 885 + "unknown", // 886 + "unknown", // 887 + "unknown", // 888 + "unknown", // 889 + "unknown", // 890 + "unknown", // 891 + "unknown", // 892 + "unknown", // 893 + "unknown", // 894 + "unknown", // 895 + "unknown", // 896 + "unknown", // 897 + "unknown", // 898 + "unknown", // 899 + "unknown", // 900 + "unknown", // 901 + "unknown", // 902 + "unknown", // 903 + "unknown", // 904 + "unknown", // 905 + "unknown", // 906 + "unknown", // 907 + "unknown", // 908 + "unknown", // 909 + "unknown", // 910 + "unknown", // 911 + "unknown", // 912 + "unknown", // 913 + "unknown", // 914 + "unknown", // 915 + "unknown", // 916 + "unknown", // 917 + "unknown", // 918 + "unknown", // 919 + "unknown", // 920 + "unknown", // 921 + "unknown", // 922 + "unknown", // 923 + "unknown", // 924 + "unknown", // 925 + "unknown", // 926 + "unknown", // 927 + "pmpcfg0", // 928 + "pmpcfg1", // 929 + "pmpcfg2", // 930 + "pmpcfg3", // 931 + "pmpcfg4", // 932 + "pmpcfg5", // 933 + "pmpcfg6", // 934 + "pmpcfg7", // 935 + "pmpcfg8", // 936 + "pmpcfg9", // 937 + "pmpcfg10", // 938 + "pmpcfg11", // 939 + "pmpcfg12", // 940 + "pmpcfg13", // 941 + "pmpcfg14", // 942 + "pmpcfg15", // 943 + "pmpaddr0", // 944 + "pmpaddr1", // 945 + "pmpaddr2", // 946 + "pmpaddr3", // 947 + "pmpaddr4", // 948 + "pmpaddr5", // 949 + "pmpaddr6", // 950 + "pmpaddr7", // 951 + "pmpaddr8", // 952 + "pmpaddr9", // 953 + "pmpaddr10", // 954 + "pmpaddr11", // 955 + "pmpaddr12", // 956 + "pmpaddr13", // 957 + "pmpaddr14", // 958 + "pmpaddr15", // 959 + "pmpaddr16", // 960 + "pmpaddr17", // 961 + "pmpaddr18", // 962 + "pmpaddr19", // 963 + "pmpaddr20", // 964 + "pmpaddr21", // 965 + "pmpaddr22", // 966 + "pmpaddr23", // 967 + "pmpaddr24", // 968 + "pmpaddr25", // 969 + "pmpaddr26", // 970 + "pmpaddr27", // 971 + "pmpaddr28", // 972 + "pmpaddr29", // 973 + "pmpaddr30", // 974 + "pmpaddr31", // 975 + "pmpaddr32", // 976 + "pmpaddr33", // 977 + "pmpaddr34", // 978 + "pmpaddr35", // 979 + "pmpaddr36", // 980 + "pmpaddr37", // 981 + "pmpaddr38", // 982 + "pmpaddr39", // 983 + "pmpaddr40", // 984 + "pmpaddr41", // 985 + "pmpaddr42", // 986 + "pmpaddr43", // 987 + "pmpaddr44", // 988 + "pmpaddr45", // 989 + "pmpaddr46", // 990 + "pmpaddr47", // 991 + "pmpaddr48", // 992 + "pmpaddr49", // 993 + "pmpaddr50", // 994 + "pmpaddr51", // 995 + "pmpaddr52", // 996 + "pmpaddr53", // 997 + "pmpaddr54", // 998 + "pmpaddr55", // 999 + "pmpaddr56", // 1000 + "pmpaddr57", // 1001 + "pmpaddr58", // 1002 + "pmpaddr59", // 1003 + "pmpaddr60", // 1004 + "pmpaddr61", // 1005 + "pmpaddr62", // 1006 + "pmpaddr63", // 1007 + "unknown", // 1008 + "unknown", // 1009 + "unknown", // 1010 + "unknown", // 1011 + "unknown", // 1012 + "unknown", // 1013 + "unknown", // 1014 + "unknown", // 1015 + "unknown", // 1016 + "unknown", // 1017 + "unknown", // 1018 + "unknown", // 1019 + "unknown", // 1020 + "unknown", // 1021 + "unknown", // 1022 + "unknown", // 1023 + "unknown", // 1024 + "unknown", // 1025 + "unknown", // 1026 + "unknown", // 1027 + "unknown", // 1028 + "unknown", // 1029 + "unknown", // 1030 + "unknown", // 1031 + "unknown", // 1032 + "unknown", // 1033 + "unknown", // 1034 + "unknown", // 1035 + "unknown", // 1036 + "unknown", // 1037 + "unknown", // 1038 + "unknown", // 1039 + "unknown", // 1040 + "unknown", // 1041 + "unknown", // 1042 + "unknown", // 1043 + "unknown", // 1044 + "unknown", // 1045 + "unknown", // 1046 + "unknown", // 1047 + "unknown", // 1048 + "unknown", // 1049 + "unknown", // 1050 + "unknown", // 1051 + "unknown", // 1052 + "unknown", // 1053 + "unknown", // 1054 + "unknown", // 1055 + "unknown", // 1056 + "unknown", // 1057 + "unknown", // 1058 + "unknown", // 1059 + "unknown", // 1060 + "unknown", // 1061 + "unknown", // 1062 + "unknown", // 1063 + "unknown", // 1064 + "unknown", // 1065 + "unknown", // 1066 + "unknown", // 1067 + "unknown", // 1068 + "unknown", // 1069 + "unknown", // 1070 + "unknown", // 1071 + "unknown", // 1072 + "unknown", // 1073 + "unknown", // 1074 + "unknown", // 1075 + "unknown", // 1076 + "unknown", // 1077 + "unknown", // 1078 + "unknown", // 1079 + "unknown", // 1080 + "unknown", // 1081 + "unknown", // 1082 + "unknown", // 1083 + "unknown", // 1084 + "unknown", // 1085 + "unknown", // 1086 + "unknown", // 1087 + "unknown", // 1088 + "unknown", // 1089 + "unknown", // 1090 + "unknown", // 1091 + "unknown", // 1092 + "unknown", // 1093 + "unknown", // 1094 + "unknown", // 1095 + "unknown", // 1096 + "unknown", // 1097 + "unknown", // 1098 + "unknown", // 1099 + "unknown", // 1100 + "unknown", // 1101 + "unknown", // 1102 + "unknown", // 1103 + "unknown", // 1104 + "unknown", // 1105 + "unknown", // 1106 + "unknown", // 1107 + "unknown", // 1108 + "unknown", // 1109 + "unknown", // 1110 + "unknown", // 1111 + "unknown", // 1112 + "unknown", // 1113 + "unknown", // 1114 + "unknown", // 1115 + "unknown", // 1116 + "unknown", // 1117 + "unknown", // 1118 + "unknown", // 1119 + "unknown", // 1120 + "unknown", // 1121 + "unknown", // 1122 + "unknown", // 1123 + "unknown", // 1124 + "unknown", // 1125 + "unknown", // 1126 + "unknown", // 1127 + "unknown", // 1128 + "unknown", // 1129 + "unknown", // 1130 + "unknown", // 1131 + "unknown", // 1132 + "unknown", // 1133 + "unknown", // 1134 + "unknown", // 1135 + "unknown", // 1136 + "unknown", // 1137 + "unknown", // 1138 + "unknown", // 1139 + "unknown", // 1140 + "unknown", // 1141 + "unknown", // 1142 + "unknown", // 1143 + "unknown", // 1144 + "unknown", // 1145 + "unknown", // 1146 + "unknown", // 1147 + "unknown", // 1148 + "unknown", // 1149 + "unknown", // 1150 + "unknown", // 1151 + "unknown", // 1152 + "unknown", // 1153 + "unknown", // 1154 + "unknown", // 1155 + "unknown", // 1156 + "unknown", // 1157 + "unknown", // 1158 + "unknown", // 1159 + "unknown", // 1160 + "unknown", // 1161 + "unknown", // 1162 + "unknown", // 1163 + "unknown", // 1164 + "unknown", // 1165 + "unknown", // 1166 + "unknown", // 1167 + "unknown", // 1168 + "unknown", // 1169 + "unknown", // 1170 + "unknown", // 1171 + "unknown", // 1172 + "unknown", // 1173 + "unknown", // 1174 + "unknown", // 1175 + "unknown", // 1176 + "unknown", // 1177 + "unknown", // 1178 + "unknown", // 1179 + "unknown", // 1180 + "unknown", // 1181 + "unknown", // 1182 + "unknown", // 1183 + "unknown", // 1184 + "unknown", // 1185 + "unknown", // 1186 + "unknown", // 1187 + "unknown", // 1188 + "unknown", // 1189 + "unknown", // 1190 + "unknown", // 1191 + "unknown", // 1192 + "unknown", // 1193 + "unknown", // 1194 + "unknown", // 1195 + "unknown", // 1196 + "unknown", // 1197 + "unknown", // 1198 + "unknown", // 1199 + "unknown", // 1200 + "unknown", // 1201 + "unknown", // 1202 + "unknown", // 1203 + "unknown", // 1204 + "unknown", // 1205 + "unknown", // 1206 + "unknown", // 1207 + "unknown", // 1208 + "unknown", // 1209 + "unknown", // 1210 + "unknown", // 1211 + "unknown", // 1212 + "unknown", // 1213 + "unknown", // 1214 + "unknown", // 1215 + "unknown", // 1216 + "unknown", // 1217 + "unknown", // 1218 + "unknown", // 1219 + "unknown", // 1220 + "unknown", // 1221 + "unknown", // 1222 + "unknown", // 1223 + "unknown", // 1224 + "unknown", // 1225 + "unknown", // 1226 + "unknown", // 1227 + "unknown", // 1228 + "unknown", // 1229 + "unknown", // 1230 + "unknown", // 1231 + "unknown", // 1232 + "unknown", // 1233 + "unknown", // 1234 + "unknown", // 1235 + "unknown", // 1236 + "unknown", // 1237 + "unknown", // 1238 + "unknown", // 1239 + "unknown", // 1240 + "unknown", // 1241 + "unknown", // 1242 + "unknown", // 1243 + "unknown", // 1244 + "unknown", // 1245 + "unknown", // 1246 + "unknown", // 1247 + "unknown", // 1248 + "unknown", // 1249 + "unknown", // 1250 + "unknown", // 1251 + "unknown", // 1252 + "unknown", // 1253 + "unknown", // 1254 + "unknown", // 1255 + "unknown", // 1256 + "unknown", // 1257 + "unknown", // 1258 + "unknown", // 1259 + "unknown", // 1260 + "unknown", // 1261 + "unknown", // 1262 + "unknown", // 1263 + "unknown", // 1264 + "unknown", // 1265 + "unknown", // 1266 + "unknown", // 1267 + "unknown", // 1268 + "unknown", // 1269 + "unknown", // 1270 + "unknown", // 1271 + "unknown", // 1272 + "unknown", // 1273 + "unknown", // 1274 + "unknown", // 1275 + "unknown", // 1276 + "unknown", // 1277 + "unknown", // 1278 + "unknown", // 1279 + "unknown", // 1280 + "unknown", // 1281 + "unknown", // 1282 + "unknown", // 1283 + "unknown", // 1284 + "unknown", // 1285 + "unknown", // 1286 + "unknown", // 1287 + "unknown", // 1288 + "unknown", // 1289 + "unknown", // 1290 + "unknown", // 1291 + "unknown", // 1292 + "unknown", // 1293 + "unknown", // 1294 + "unknown", // 1295 + "unknown", // 1296 + "unknown", // 1297 + "unknown", // 1298 + "unknown", // 1299 + "unknown", // 1300 + "unknown", // 1301 + "unknown", // 1302 + "unknown", // 1303 + "unknown", // 1304 + "unknown", // 1305 + "unknown", // 1306 + "unknown", // 1307 + "unknown", // 1308 + "unknown", // 1309 + "unknown", // 1310 + "unknown", // 1311 + "unknown", // 1312 + "unknown", // 1313 + "unknown", // 1314 + "unknown", // 1315 + "unknown", // 1316 + "unknown", // 1317 + "unknown", // 1318 + "unknown", // 1319 + "unknown", // 1320 + "unknown", // 1321 + "unknown", // 1322 + "unknown", // 1323 + "unknown", // 1324 + "unknown", // 1325 + "unknown", // 1326 + "unknown", // 1327 + "unknown", // 1328 + "unknown", // 1329 + "unknown", // 1330 + "unknown", // 1331 + "unknown", // 1332 + "unknown", // 1333 + "unknown", // 1334 + "unknown", // 1335 + "unknown", // 1336 + "unknown", // 1337 + "unknown", // 1338 + "unknown", // 1339 + "unknown", // 1340 + "unknown", // 1341 + "unknown", // 1342 + "unknown", // 1343 + "unknown", // 1344 + "unknown", // 1345 + "unknown", // 1346 + "unknown", // 1347 + "unknown", // 1348 + "unknown", // 1349 + "unknown", // 1350 + "unknown", // 1351 + "unknown", // 1352 + "unknown", // 1353 + "unknown", // 1354 + "unknown", // 1355 + "unknown", // 1356 + "unknown", // 1357 + "unknown", // 1358 + "unknown", // 1359 + "unknown", // 1360 + "unknown", // 1361 + "unknown", // 1362 + "unknown", // 1363 + "unknown", // 1364 + "unknown", // 1365 + "unknown", // 1366 + "unknown", // 1367 + "unknown", // 1368 + "unknown", // 1369 + "unknown", // 1370 + "unknown", // 1371 + "unknown", // 1372 + "unknown", // 1373 + "unknown", // 1374 + "unknown", // 1375 + "unknown", // 1376 + "unknown", // 1377 + "unknown", // 1378 + "unknown", // 1379 + "unknown", // 1380 + "unknown", // 1381 + "unknown", // 1382 + "unknown", // 1383 + "unknown", // 1384 + "unknown", // 1385 + "unknown", // 1386 + "unknown", // 1387 + "unknown", // 1388 + "unknown", // 1389 + "unknown", // 1390 + "unknown", // 1391 + "unknown", // 1392 + "unknown", // 1393 + "unknown", // 1394 + "unknown", // 1395 + "unknown", // 1396 + "unknown", // 1397 + "unknown", // 1398 + "unknown", // 1399 + "unknown", // 1400 + "unknown", // 1401 + "unknown", // 1402 + "unknown", // 1403 + "unknown", // 1404 + "unknown", // 1405 + "unknown", // 1406 + "unknown", // 1407 + "unknown", // 1408 + "unknown", // 1409 + "unknown", // 1410 + "unknown", // 1411 + "unknown", // 1412 + "unknown", // 1413 + "unknown", // 1414 + "unknown", // 1415 + "unknown", // 1416 + "unknown", // 1417 + "unknown", // 1418 + "unknown", // 1419 + "unknown", // 1420 + "unknown", // 1421 + "unknown", // 1422 + "unknown", // 1423 + "unknown", // 1424 + "unknown", // 1425 + "unknown", // 1426 + "unknown", // 1427 + "unknown", // 1428 + "unknown", // 1429 + "unknown", // 1430 + "unknown", // 1431 + "unknown", // 1432 + "unknown", // 1433 + "unknown", // 1434 + "unknown", // 1435 + "unknown", // 1436 + "unknown", // 1437 + "unknown", // 1438 + "unknown", // 1439 + "unknown", // 1440 + "unknown", // 1441 + "unknown", // 1442 + "unknown", // 1443 + "unknown", // 1444 + "unknown", // 1445 + "unknown", // 1446 + "unknown", // 1447 + "scontext", // 1448 + "unknown", // 1449 + "unknown", // 1450 + "unknown", // 1451 + "unknown", // 1452 + "unknown", // 1453 + "unknown", // 1454 + "unknown", // 1455 + "unknown", // 1456 + "unknown", // 1457 + "unknown", // 1458 + "unknown", // 1459 + "unknown", // 1460 + "unknown", // 1461 + "unknown", // 1462 + "unknown", // 1463 + "unknown", // 1464 + "unknown", // 1465 + "unknown", // 1466 + "unknown", // 1467 + "unknown", // 1468 + "unknown", // 1469 + "unknown", // 1470 + "unknown", // 1471 + "unknown", // 1472 + "unknown", // 1473 + "unknown", // 1474 + "unknown", // 1475 + "unknown", // 1476 + "unknown", // 1477 + "unknown", // 1478 + "unknown", // 1479 + "unknown", // 1480 + "unknown", // 1481 + "unknown", // 1482 + "unknown", // 1483 + "unknown", // 1484 + "unknown", // 1485 + "unknown", // 1486 + "unknown", // 1487 + "unknown", // 1488 + "unknown", // 1489 + "unknown", // 1490 + "unknown", // 1491 + "unknown", // 1492 + "unknown", // 1493 + "unknown", // 1494 + "unknown", // 1495 + "unknown", // 1496 + "unknown", // 1497 + "unknown", // 1498 + "unknown", // 1499 + "unknown", // 1500 + "unknown", // 1501 + "unknown", // 1502 + "unknown", // 1503 + "unknown", // 1504 + "unknown", // 1505 + "unknown", // 1506 + "unknown", // 1507 + "unknown", // 1508 + "unknown", // 1509 + "unknown", // 1510 + "unknown", // 1511 + "unknown", // 1512 + "unknown", // 1513 + "unknown", // 1514 + "unknown", // 1515 + "unknown", // 1516 + "unknown", // 1517 + "unknown", // 1518 + "unknown", // 1519 + "unknown", // 1520 + "unknown", // 1521 + "unknown", // 1522 + "unknown", // 1523 + "unknown", // 1524 + "unknown", // 1525 + "unknown", // 1526 + "unknown", // 1527 + "unknown", // 1528 + "unknown", // 1529 + "unknown", // 1530 + "unknown", // 1531 + "unknown", // 1532 + "unknown", // 1533 + "unknown", // 1534 + "unknown", // 1535 + "hstatus", // 1536 + "unknown", // 1537 + "hedeleg", // 1538 + "hideleg", // 1539 + "hie", // 1540 + "htimedelta", // 1541 + "hcounteren", // 1542 + "hgeie", // 1543 + "hvien", // 1544 + "hvictl", // 1545 + "henvcfg", // 1546 + "unknown", // 1547 + "hstateen0", // 1548 + "hstateen1", // 1549 + "hstateen2", // 1550 + "hstateen3", // 1551 + "unknown", // 1552 + "unknown", // 1553 + "unknown", // 1554 + "hidelegh", // 1555 + "unknown", // 1556 + "htimedeltah", // 1557 + "unknown", // 1558 + "unknown", // 1559 + "hvienh", // 1560 + "unknown", // 1561 + "henvcfgh", // 1562 + "unknown", // 1563 + "hstateen0h", // 1564 + "hstateen1h", // 1565 + "hstateen2h", // 1566 + "hstateen3h", // 1567 + "unknown", // 1568 + "unknown", // 1569 + "unknown", // 1570 + "unknown", // 1571 + "unknown", // 1572 + "unknown", // 1573 + "unknown", // 1574 + "unknown", // 1575 + "unknown", // 1576 + "unknown", // 1577 + "unknown", // 1578 + "unknown", // 1579 + "unknown", // 1580 + "unknown", // 1581 + "unknown", // 1582 + "unknown", // 1583 + "unknown", // 1584 + "unknown", // 1585 + "unknown", // 1586 + "unknown", // 1587 + "unknown", // 1588 + "unknown", // 1589 + "unknown", // 1590 + "unknown", // 1591 + "unknown", // 1592 + "unknown", // 1593 + "unknown", // 1594 + "unknown", // 1595 + "unknown", // 1596 + "unknown", // 1597 + "unknown", // 1598 + "unknown", // 1599 + "unknown", // 1600 + "unknown", // 1601 + "unknown", // 1602 + "htval", // 1603 + "hip", // 1604 + "hvip", // 1605 + "hviprio1", // 1606 + "hviprio2", // 1607 + "unknown", // 1608 + "unknown", // 1609 + "htinst", // 1610 + "unknown", // 1611 + "unknown", // 1612 + "unknown", // 1613 + "unknown", // 1614 + "unknown", // 1615 + "unknown", // 1616 + "unknown", // 1617 + "unknown", // 1618 + "unknown", // 1619 + "unknown", // 1620 + "hviph", // 1621 + "hviprio1h", // 1622 + "hviprio2h", // 1623 + "unknown", // 1624 + "unknown", // 1625 + "unknown", // 1626 + "unknown", // 1627 + "unknown", // 1628 + "unknown", // 1629 + "unknown", // 1630 + "unknown", // 1631 + "unknown", // 1632 + "unknown", // 1633 + "unknown", // 1634 + "unknown", // 1635 + "unknown", // 1636 + "unknown", // 1637 + "unknown", // 1638 + "unknown", // 1639 + "unknown", // 1640 + "unknown", // 1641 + "unknown", // 1642 + "unknown", // 1643 + "unknown", // 1644 + "unknown", // 1645 + "unknown", // 1646 + "unknown", // 1647 + "unknown", // 1648 + "unknown", // 1649 + "unknown", // 1650 + "unknown", // 1651 + "unknown", // 1652 + "unknown", // 1653 + "unknown", // 1654 + "unknown", // 1655 + "unknown", // 1656 + "unknown", // 1657 + "unknown", // 1658 + "unknown", // 1659 + "unknown", // 1660 + "unknown", // 1661 + "unknown", // 1662 + "unknown", // 1663 + "hgatp", // 1664 + "unknown", // 1665 + "unknown", // 1666 + "unknown", // 1667 + "unknown", // 1668 + "unknown", // 1669 + "unknown", // 1670 + "unknown", // 1671 + "unknown", // 1672 + "unknown", // 1673 + "unknown", // 1674 + "unknown", // 1675 + "unknown", // 1676 + "unknown", // 1677 + "unknown", // 1678 + "unknown", // 1679 + "unknown", // 1680 + "unknown", // 1681 + "unknown", // 1682 + "unknown", // 1683 + "unknown", // 1684 + "unknown", // 1685 + "unknown", // 1686 + "unknown", // 1687 + "unknown", // 1688 + "unknown", // 1689 + "unknown", // 1690 + "unknown", // 1691 + "unknown", // 1692 + "unknown", // 1693 + "unknown", // 1694 + "unknown", // 1695 + "unknown", // 1696 + "unknown", // 1697 + "unknown", // 1698 + "unknown", // 1699 + "unknown", // 1700 + "unknown", // 1701 + "unknown", // 1702 + "unknown", // 1703 + "hcontext", // 1704 + "unknown", // 1705 + "unknown", // 1706 + "unknown", // 1707 + "unknown", // 1708 + "unknown", // 1709 + "unknown", // 1710 + "unknown", // 1711 + "unknown", // 1712 + "unknown", // 1713 + "unknown", // 1714 + "unknown", // 1715 + "unknown", // 1716 + "unknown", // 1717 + "unknown", // 1718 + "unknown", // 1719 + "unknown", // 1720 + "unknown", // 1721 + "unknown", // 1722 + "unknown", // 1723 + "unknown", // 1724 + "unknown", // 1725 + "unknown", // 1726 + "unknown", // 1727 + "unknown", // 1728 + "unknown", // 1729 + "unknown", // 1730 + "unknown", // 1731 + "unknown", // 1732 + "unknown", // 1733 + "unknown", // 1734 + "unknown", // 1735 + "unknown", // 1736 + "unknown", // 1737 + "unknown", // 1738 + "unknown", // 1739 + "unknown", // 1740 + "unknown", // 1741 + "unknown", // 1742 + "unknown", // 1743 + "unknown", // 1744 + "unknown", // 1745 + "unknown", // 1746 + "unknown", // 1747 + "unknown", // 1748 + "unknown", // 1749 + "unknown", // 1750 + "unknown", // 1751 + "unknown", // 1752 + "unknown", // 1753 + "unknown", // 1754 + "unknown", // 1755 + "unknown", // 1756 + "unknown", // 1757 + "unknown", // 1758 + "unknown", // 1759 + "unknown", // 1760 + "unknown", // 1761 + "unknown", // 1762 + "unknown", // 1763 + "unknown", // 1764 + "unknown", // 1765 + "unknown", // 1766 + "unknown", // 1767 + "unknown", // 1768 + "unknown", // 1769 + "unknown", // 1770 + "unknown", // 1771 + "unknown", // 1772 + "unknown", // 1773 + "unknown", // 1774 + "unknown", // 1775 + "unknown", // 1776 + "unknown", // 1777 + "unknown", // 1778 + "unknown", // 1779 + "unknown", // 1780 + "unknown", // 1781 + "unknown", // 1782 + "unknown", // 1783 + "unknown", // 1784 + "unknown", // 1785 + "unknown", // 1786 + "unknown", // 1787 + "unknown", // 1788 + "unknown", // 1789 + "unknown", // 1790 + "unknown", // 1791 + "unknown", // 1792 + "unknown", // 1793 + "unknown", // 1794 + "unknown", // 1795 + "unknown", // 1796 + "unknown", // 1797 + "unknown", // 1798 + "unknown", // 1799 + "unknown", // 1800 + "unknown", // 1801 + "unknown", // 1802 + "unknown", // 1803 + "unknown", // 1804 + "unknown", // 1805 + "unknown", // 1806 + "unknown", // 1807 + "unknown", // 1808 + "unknown", // 1809 + "unknown", // 1810 + "unknown", // 1811 + "unknown", // 1812 + "unknown", // 1813 + "unknown", // 1814 + "unknown", // 1815 + "unknown", // 1816 + "unknown", // 1817 + "unknown", // 1818 + "unknown", // 1819 + "unknown", // 1820 + "unknown", // 1821 + "unknown", // 1822 + "unknown", // 1823 + "unknown", // 1824 + "mcyclecfgh", // 1825 + "minstretcfgh", // 1826 + "mhpmevent3h", // 1827 + "mhpmevent4h", // 1828 + "mhpmevent5h", // 1829 + "mhpmevent6h", // 1830 + "mhpmevent7h", // 1831 + "mhpmevent8h", // 1832 + "mhpmevent9h", // 1833 + "mhpmevent10h", // 1834 + "mhpmevent11h", // 1835 + "mhpmevent12h", // 1836 + "mhpmevent13h", // 1837 + "mhpmevent14h", // 1838 + "mhpmevent15h", // 1839 + "mhpmevent16h", // 1840 + "mhpmevent17h", // 1841 + "mhpmevent18h", // 1842 + "mhpmevent19h", // 1843 + "mhpmevent20h", // 1844 + "mhpmevent21h", // 1845 + "mhpmevent22h", // 1846 + "mhpmevent23h", // 1847 + "mhpmevent24h", // 1848 + "mhpmevent25h", // 1849 + "mhpmevent26h", // 1850 + "mhpmevent27h", // 1851 + "mhpmevent28h", // 1852 + "mhpmevent29h", // 1853 + "mhpmevent30h", // 1854 + "mhpmevent31h", // 1855 + "mnscratch", // 1856 + "mnepc", // 1857 + "mncause", // 1858 + "unknown", // 1859 + "mnstatus", // 1860 + "unknown", // 1861 + "unknown", // 1862 + "mseccfg", // 1863 + "unknown", // 1864 + "unknown", // 1865 + "unknown", // 1866 + "unknown", // 1867 + "unknown", // 1868 + "unknown", // 1869 + "unknown", // 1870 + "unknown", // 1871 + "unknown", // 1872 + "unknown", // 1873 + "unknown", // 1874 + "unknown", // 1875 + "unknown", // 1876 + "unknown", // 1877 + "unknown", // 1878 + "mseccfgh", // 1879 + "unknown", // 1880 + "unknown", // 1881 + "unknown", // 1882 + "unknown", // 1883 + "unknown", // 1884 + "unknown", // 1885 + "unknown", // 1886 + "unknown", // 1887 + "unknown", // 1888 + "unknown", // 1889 + "unknown", // 1890 + "unknown", // 1891 + "unknown", // 1892 + "unknown", // 1893 + "unknown", // 1894 + "unknown", // 1895 + "unknown", // 1896 + "unknown", // 1897 + "unknown", // 1898 + "unknown", // 1899 + "unknown", // 1900 + "unknown", // 1901 + "unknown", // 1902 + "unknown", // 1903 + "unknown", // 1904 + "unknown", // 1905 + "unknown", // 1906 + "unknown", // 1907 + "unknown", // 1908 + "unknown", // 1909 + "unknown", // 1910 + "unknown", // 1911 + "unknown", // 1912 + "unknown", // 1913 + "unknown", // 1914 + "unknown", // 1915 + "unknown", // 1916 + "unknown", // 1917 + "unknown", // 1918 + "unknown", // 1919 + "unknown", // 1920 + "unknown", // 1921 + "unknown", // 1922 + "unknown", // 1923 + "unknown", // 1924 + "unknown", // 1925 + "unknown", // 1926 + "unknown", // 1927 + "unknown", // 1928 + "unknown", // 1929 + "unknown", // 1930 + "unknown", // 1931 + "unknown", // 1932 + "unknown", // 1933 + "unknown", // 1934 + "unknown", // 1935 + "unknown", // 1936 + "unknown", // 1937 + "unknown", // 1938 + "unknown", // 1939 + "unknown", // 1940 + "unknown", // 1941 + "unknown", // 1942 + "unknown", // 1943 + "unknown", // 1944 + "unknown", // 1945 + "unknown", // 1946 + "unknown", // 1947 + "unknown", // 1948 + "unknown", // 1949 + "unknown", // 1950 + "unknown", // 1951 + "tselect", // 1952 + "tdata1", // 1953 + "tdata2", // 1954 + "tdata3", // 1955 + "tinfo", // 1956 + "tcontrol", // 1957 + "unknown", // 1958 + "unknown", // 1959 + "mcontext", // 1960 + "unknown", // 1961 + "mscontext", // 1962 + "unknown", // 1963 + "unknown", // 1964 + "unknown", // 1965 + "unknown", // 1966 + "unknown", // 1967 + "dcsr", // 1968 + "dpc", // 1969 + "dscratch0", // 1970 + "dscratch1", // 1971 + "unknown", // 1972 + "unknown", // 1973 + "unknown", // 1974 + "unknown", // 1975 + "unknown", // 1976 + "unknown", // 1977 + "unknown", // 1978 + "unknown", // 1979 + "unknown", // 1980 + "unknown", // 1981 + "unknown", // 1982 + "unknown", // 1983 + "unknown", // 1984 + "unknown", // 1985 + "unknown", // 1986 + "unknown", // 1987 + "unknown", // 1988 + "unknown", // 1989 + "unknown", // 1990 + "unknown", // 1991 + "unknown", // 1992 + "unknown", // 1993 + "unknown", // 1994 + "unknown", // 1995 + "unknown", // 1996 + "unknown", // 1997 + "unknown", // 1998 + "unknown", // 1999 + "unknown", // 2000 + "unknown", // 2001 + "unknown", // 2002 + "unknown", // 2003 + "unknown", // 2004 + "unknown", // 2005 + "unknown", // 2006 + "unknown", // 2007 + "unknown", // 2008 + "unknown", // 2009 + "unknown", // 2010 + "unknown", // 2011 + "unknown", // 2012 + "unknown", // 2013 + "unknown", // 2014 + "unknown", // 2015 + "unknown", // 2016 + "unknown", // 2017 + "unknown", // 2018 + "unknown", // 2019 + "unknown", // 2020 + "unknown", // 2021 + "unknown", // 2022 + "unknown", // 2023 + "unknown", // 2024 + "unknown", // 2025 + "unknown", // 2026 + "unknown", // 2027 + "unknown", // 2028 + "unknown", // 2029 + "unknown", // 2030 + "unknown", // 2031 + "unknown", // 2032 + "unknown", // 2033 + "unknown", // 2034 + "unknown", // 2035 + "unknown", // 2036 + "unknown", // 2037 + "unknown", // 2038 + "unknown", // 2039 + "unknown", // 2040 + "unknown", // 2041 + "unknown", // 2042 + "unknown", // 2043 + "unknown", // 2044 + "unknown", // 2045 + "unknown", // 2046 + "unknown", // 2047 + "unknown", // 2048 + "unknown", // 2049 + "unknown", // 2050 + "unknown", // 2051 + "unknown", // 2052 + "unknown", // 2053 + "unknown", // 2054 + "unknown", // 2055 + "unknown", // 2056 + "unknown", // 2057 + "unknown", // 2058 + "unknown", // 2059 + "unknown", // 2060 + "unknown", // 2061 + "unknown", // 2062 + "unknown", // 2063 + "unknown", // 2064 + "unknown", // 2065 + "unknown", // 2066 + "unknown", // 2067 + "unknown", // 2068 + "unknown", // 2069 + "unknown", // 2070 + "unknown", // 2071 + "unknown", // 2072 + "unknown", // 2073 + "unknown", // 2074 + "unknown", // 2075 + "unknown", // 2076 + "unknown", // 2077 + "unknown", // 2078 + "unknown", // 2079 + "unknown", // 2080 + "unknown", // 2081 + "unknown", // 2082 + "unknown", // 2083 + "unknown", // 2084 + "unknown", // 2085 + "unknown", // 2086 + "unknown", // 2087 + "unknown", // 2088 + "unknown", // 2089 + "unknown", // 2090 + "unknown", // 2091 + "unknown", // 2092 + "unknown", // 2093 + "unknown", // 2094 + "unknown", // 2095 + "unknown", // 2096 + "unknown", // 2097 + "unknown", // 2098 + "unknown", // 2099 + "unknown", // 2100 + "unknown", // 2101 + "unknown", // 2102 + "unknown", // 2103 + "unknown", // 2104 + "unknown", // 2105 + "unknown", // 2106 + "unknown", // 2107 + "unknown", // 2108 + "unknown", // 2109 + "unknown", // 2110 + "unknown", // 2111 + "unknown", // 2112 + "unknown", // 2113 + "unknown", // 2114 + "unknown", // 2115 + "unknown", // 2116 + "unknown", // 2117 + "unknown", // 2118 + "unknown", // 2119 + "unknown", // 2120 + "unknown", // 2121 + "unknown", // 2122 + "unknown", // 2123 + "unknown", // 2124 + "unknown", // 2125 + "unknown", // 2126 + "unknown", // 2127 + "unknown", // 2128 + "unknown", // 2129 + "unknown", // 2130 + "unknown", // 2131 + "unknown", // 2132 + "unknown", // 2133 + "unknown", // 2134 + "unknown", // 2135 + "unknown", // 2136 + "unknown", // 2137 + "unknown", // 2138 + "unknown", // 2139 + "unknown", // 2140 + "unknown", // 2141 + "unknown", // 2142 + "unknown", // 2143 + "unknown", // 2144 + "unknown", // 2145 + "unknown", // 2146 + "unknown", // 2147 + "unknown", // 2148 + "unknown", // 2149 + "unknown", // 2150 + "unknown", // 2151 + "unknown", // 2152 + "unknown", // 2153 + "unknown", // 2154 + "unknown", // 2155 + "unknown", // 2156 + "unknown", // 2157 + "unknown", // 2158 + "unknown", // 2159 + "unknown", // 2160 + "unknown", // 2161 + "unknown", // 2162 + "unknown", // 2163 + "unknown", // 2164 + "unknown", // 2165 + "unknown", // 2166 + "unknown", // 2167 + "unknown", // 2168 + "unknown", // 2169 + "unknown", // 2170 + "unknown", // 2171 + "unknown", // 2172 + "unknown", // 2173 + "unknown", // 2174 + "unknown", // 2175 + "unknown", // 2176 + "unknown", // 2177 + "unknown", // 2178 + "unknown", // 2179 + "unknown", // 2180 + "unknown", // 2181 + "unknown", // 2182 + "unknown", // 2183 + "unknown", // 2184 + "unknown", // 2185 + "unknown", // 2186 + "unknown", // 2187 + "unknown", // 2188 + "unknown", // 2189 + "unknown", // 2190 + "unknown", // 2191 + "unknown", // 2192 + "unknown", // 2193 + "unknown", // 2194 + "unknown", // 2195 + "unknown", // 2196 + "unknown", // 2197 + "unknown", // 2198 + "unknown", // 2199 + "unknown", // 2200 + "unknown", // 2201 + "unknown", // 2202 + "unknown", // 2203 + "unknown", // 2204 + "unknown", // 2205 + "unknown", // 2206 + "unknown", // 2207 + "unknown", // 2208 + "unknown", // 2209 + "unknown", // 2210 + "unknown", // 2211 + "unknown", // 2212 + "unknown", // 2213 + "unknown", // 2214 + "unknown", // 2215 + "unknown", // 2216 + "unknown", // 2217 + "unknown", // 2218 + "unknown", // 2219 + "unknown", // 2220 + "unknown", // 2221 + "unknown", // 2222 + "unknown", // 2223 + "unknown", // 2224 + "unknown", // 2225 + "unknown", // 2226 + "unknown", // 2227 + "unknown", // 2228 + "unknown", // 2229 + "unknown", // 2230 + "unknown", // 2231 + "unknown", // 2232 + "unknown", // 2233 + "unknown", // 2234 + "unknown", // 2235 + "unknown", // 2236 + "unknown", // 2237 + "unknown", // 2238 + "unknown", // 2239 + "unknown", // 2240 + "unknown", // 2241 + "unknown", // 2242 + "unknown", // 2243 + "unknown", // 2244 + "unknown", // 2245 + "unknown", // 2246 + "unknown", // 2247 + "unknown", // 2248 + "unknown", // 2249 + "unknown", // 2250 + "unknown", // 2251 + "unknown", // 2252 + "unknown", // 2253 + "unknown", // 2254 + "unknown", // 2255 + "unknown", // 2256 + "unknown", // 2257 + "unknown", // 2258 + "unknown", // 2259 + "unknown", // 2260 + "unknown", // 2261 + "unknown", // 2262 + "unknown", // 2263 + "unknown", // 2264 + "unknown", // 2265 + "unknown", // 2266 + "unknown", // 2267 + "unknown", // 2268 + "unknown", // 2269 + "unknown", // 2270 + "unknown", // 2271 + "unknown", // 2272 + "unknown", // 2273 + "unknown", // 2274 + "unknown", // 2275 + "unknown", // 2276 + "unknown", // 2277 + "unknown", // 2278 + "unknown", // 2279 + "unknown", // 2280 + "unknown", // 2281 + "unknown", // 2282 + "unknown", // 2283 + "unknown", // 2284 + "unknown", // 2285 + "unknown", // 2286 + "unknown", // 2287 + "unknown", // 2288 + "unknown", // 2289 + "unknown", // 2290 + "unknown", // 2291 + "unknown", // 2292 + "unknown", // 2293 + "unknown", // 2294 + "unknown", // 2295 + "unknown", // 2296 + "unknown", // 2297 + "unknown", // 2298 + "unknown", // 2299 + "unknown", // 2300 + "unknown", // 2301 + "unknown", // 2302 + "unknown", // 2303 + "unknown", // 2304 + "unknown", // 2305 + "unknown", // 2306 + "unknown", // 2307 + "unknown", // 2308 + "unknown", // 2309 + "unknown", // 2310 + "unknown", // 2311 + "unknown", // 2312 + "unknown", // 2313 + "unknown", // 2314 + "unknown", // 2315 + "unknown", // 2316 + "unknown", // 2317 + "unknown", // 2318 + "unknown", // 2319 + "unknown", // 2320 + "unknown", // 2321 + "unknown", // 2322 + "unknown", // 2323 + "unknown", // 2324 + "unknown", // 2325 + "unknown", // 2326 + "unknown", // 2327 + "unknown", // 2328 + "unknown", // 2329 + "unknown", // 2330 + "unknown", // 2331 + "unknown", // 2332 + "unknown", // 2333 + "unknown", // 2334 + "unknown", // 2335 + "unknown", // 2336 + "unknown", // 2337 + "unknown", // 2338 + "unknown", // 2339 + "unknown", // 2340 + "unknown", // 2341 + "unknown", // 2342 + "unknown", // 2343 + "unknown", // 2344 + "unknown", // 2345 + "unknown", // 2346 + "unknown", // 2347 + "unknown", // 2348 + "unknown", // 2349 + "unknown", // 2350 + "unknown", // 2351 + "unknown", // 2352 + "unknown", // 2353 + "unknown", // 2354 + "unknown", // 2355 + "unknown", // 2356 + "unknown", // 2357 + "unknown", // 2358 + "unknown", // 2359 + "unknown", // 2360 + "unknown", // 2361 + "unknown", // 2362 + "unknown", // 2363 + "unknown", // 2364 + "unknown", // 2365 + "unknown", // 2366 + "unknown", // 2367 + "unknown", // 2368 + "unknown", // 2369 + "unknown", // 2370 + "unknown", // 2371 + "unknown", // 2372 + "unknown", // 2373 + "unknown", // 2374 + "unknown", // 2375 + "unknown", // 2376 + "unknown", // 2377 + "unknown", // 2378 + "unknown", // 2379 + "unknown", // 2380 + "unknown", // 2381 + "unknown", // 2382 + "unknown", // 2383 + "unknown", // 2384 + "unknown", // 2385 + "unknown", // 2386 + "unknown", // 2387 + "unknown", // 2388 + "unknown", // 2389 + "unknown", // 2390 + "unknown", // 2391 + "unknown", // 2392 + "unknown", // 2393 + "unknown", // 2394 + "unknown", // 2395 + "unknown", // 2396 + "unknown", // 2397 + "unknown", // 2398 + "unknown", // 2399 + "unknown", // 2400 + "unknown", // 2401 + "unknown", // 2402 + "unknown", // 2403 + "unknown", // 2404 + "unknown", // 2405 + "unknown", // 2406 + "unknown", // 2407 + "unknown", // 2408 + "unknown", // 2409 + "unknown", // 2410 + "unknown", // 2411 + "unknown", // 2412 + "unknown", // 2413 + "unknown", // 2414 + "unknown", // 2415 + "unknown", // 2416 + "unknown", // 2417 + "unknown", // 2418 + "unknown", // 2419 + "unknown", // 2420 + "unknown", // 2421 + "unknown", // 2422 + "unknown", // 2423 + "unknown", // 2424 + "unknown", // 2425 + "unknown", // 2426 + "unknown", // 2427 + "unknown", // 2428 + "unknown", // 2429 + "unknown", // 2430 + "unknown", // 2431 + "unknown", // 2432 + "unknown", // 2433 + "unknown", // 2434 + "unknown", // 2435 + "unknown", // 2436 + "unknown", // 2437 + "unknown", // 2438 + "unknown", // 2439 + "unknown", // 2440 + "unknown", // 2441 + "unknown", // 2442 + "unknown", // 2443 + "unknown", // 2444 + "unknown", // 2445 + "unknown", // 2446 + "unknown", // 2447 + "unknown", // 2448 + "unknown", // 2449 + "unknown", // 2450 + "unknown", // 2451 + "unknown", // 2452 + "unknown", // 2453 + "unknown", // 2454 + "unknown", // 2455 + "unknown", // 2456 + "unknown", // 2457 + "unknown", // 2458 + "unknown", // 2459 + "unknown", // 2460 + "unknown", // 2461 + "unknown", // 2462 + "unknown", // 2463 + "unknown", // 2464 + "unknown", // 2465 + "unknown", // 2466 + "unknown", // 2467 + "unknown", // 2468 + "unknown", // 2469 + "unknown", // 2470 + "unknown", // 2471 + "unknown", // 2472 + "unknown", // 2473 + "unknown", // 2474 + "unknown", // 2475 + "unknown", // 2476 + "unknown", // 2477 + "unknown", // 2478 + "unknown", // 2479 + "unknown", // 2480 + "unknown", // 2481 + "unknown", // 2482 + "unknown", // 2483 + "unknown", // 2484 + "unknown", // 2485 + "unknown", // 2486 + "unknown", // 2487 + "unknown", // 2488 + "unknown", // 2489 + "unknown", // 2490 + "unknown", // 2491 + "unknown", // 2492 + "unknown", // 2493 + "unknown", // 2494 + "unknown", // 2495 + "unknown", // 2496 + "unknown", // 2497 + "unknown", // 2498 + "unknown", // 2499 + "unknown", // 2500 + "unknown", // 2501 + "unknown", // 2502 + "unknown", // 2503 + "unknown", // 2504 + "unknown", // 2505 + "unknown", // 2506 + "unknown", // 2507 + "unknown", // 2508 + "unknown", // 2509 + "unknown", // 2510 + "unknown", // 2511 + "unknown", // 2512 + "unknown", // 2513 + "unknown", // 2514 + "unknown", // 2515 + "unknown", // 2516 + "unknown", // 2517 + "unknown", // 2518 + "unknown", // 2519 + "unknown", // 2520 + "unknown", // 2521 + "unknown", // 2522 + "unknown", // 2523 + "unknown", // 2524 + "unknown", // 2525 + "unknown", // 2526 + "unknown", // 2527 + "unknown", // 2528 + "unknown", // 2529 + "unknown", // 2530 + "unknown", // 2531 + "unknown", // 2532 + "unknown", // 2533 + "unknown", // 2534 + "unknown", // 2535 + "unknown", // 2536 + "unknown", // 2537 + "unknown", // 2538 + "unknown", // 2539 + "unknown", // 2540 + "unknown", // 2541 + "unknown", // 2542 + "unknown", // 2543 + "unknown", // 2544 + "unknown", // 2545 + "unknown", // 2546 + "unknown", // 2547 + "unknown", // 2548 + "unknown", // 2549 + "unknown", // 2550 + "unknown", // 2551 + "unknown", // 2552 + "unknown", // 2553 + "unknown", // 2554 + "unknown", // 2555 + "unknown", // 2556 + "unknown", // 2557 + "unknown", // 2558 + "unknown", // 2559 + "unknown", // 2560 + "unknown", // 2561 + "unknown", // 2562 + "unknown", // 2563 + "unknown", // 2564 + "unknown", // 2565 + "unknown", // 2566 + "unknown", // 2567 + "unknown", // 2568 + "unknown", // 2569 + "unknown", // 2570 + "unknown", // 2571 + "unknown", // 2572 + "unknown", // 2573 + "unknown", // 2574 + "unknown", // 2575 + "unknown", // 2576 + "unknown", // 2577 + "unknown", // 2578 + "unknown", // 2579 + "unknown", // 2580 + "unknown", // 2581 + "unknown", // 2582 + "unknown", // 2583 + "unknown", // 2584 + "unknown", // 2585 + "unknown", // 2586 + "unknown", // 2587 + "unknown", // 2588 + "unknown", // 2589 + "unknown", // 2590 + "unknown", // 2591 + "unknown", // 2592 + "unknown", // 2593 + "unknown", // 2594 + "unknown", // 2595 + "unknown", // 2596 + "unknown", // 2597 + "unknown", // 2598 + "unknown", // 2599 + "unknown", // 2600 + "unknown", // 2601 + "unknown", // 2602 + "unknown", // 2603 + "unknown", // 2604 + "unknown", // 2605 + "unknown", // 2606 + "unknown", // 2607 + "unknown", // 2608 + "unknown", // 2609 + "unknown", // 2610 + "unknown", // 2611 + "unknown", // 2612 + "unknown", // 2613 + "unknown", // 2614 + "unknown", // 2615 + "unknown", // 2616 + "unknown", // 2617 + "unknown", // 2618 + "unknown", // 2619 + "unknown", // 2620 + "unknown", // 2621 + "unknown", // 2622 + "unknown", // 2623 + "unknown", // 2624 + "unknown", // 2625 + "unknown", // 2626 + "unknown", // 2627 + "unknown", // 2628 + "unknown", // 2629 + "unknown", // 2630 + "unknown", // 2631 + "unknown", // 2632 + "unknown", // 2633 + "unknown", // 2634 + "unknown", // 2635 + "unknown", // 2636 + "unknown", // 2637 + "unknown", // 2638 + "unknown", // 2639 + "unknown", // 2640 + "unknown", // 2641 + "unknown", // 2642 + "unknown", // 2643 + "unknown", // 2644 + "unknown", // 2645 + "unknown", // 2646 + "unknown", // 2647 + "unknown", // 2648 + "unknown", // 2649 + "unknown", // 2650 + "unknown", // 2651 + "unknown", // 2652 + "unknown", // 2653 + "unknown", // 2654 + "unknown", // 2655 + "unknown", // 2656 + "unknown", // 2657 + "unknown", // 2658 + "unknown", // 2659 + "unknown", // 2660 + "unknown", // 2661 + "unknown", // 2662 + "unknown", // 2663 + "unknown", // 2664 + "unknown", // 2665 + "unknown", // 2666 + "unknown", // 2667 + "unknown", // 2668 + "unknown", // 2669 + "unknown", // 2670 + "unknown", // 2671 + "unknown", // 2672 + "unknown", // 2673 + "unknown", // 2674 + "unknown", // 2675 + "unknown", // 2676 + "unknown", // 2677 + "unknown", // 2678 + "unknown", // 2679 + "unknown", // 2680 + "unknown", // 2681 + "unknown", // 2682 + "unknown", // 2683 + "unknown", // 2684 + "unknown", // 2685 + "unknown", // 2686 + "unknown", // 2687 + "unknown", // 2688 + "unknown", // 2689 + "unknown", // 2690 + "unknown", // 2691 + "unknown", // 2692 + "unknown", // 2693 + "unknown", // 2694 + "unknown", // 2695 + "unknown", // 2696 + "unknown", // 2697 + "unknown", // 2698 + "unknown", // 2699 + "unknown", // 2700 + "unknown", // 2701 + "unknown", // 2702 + "unknown", // 2703 + "unknown", // 2704 + "unknown", // 2705 + "unknown", // 2706 + "unknown", // 2707 + "unknown", // 2708 + "unknown", // 2709 + "unknown", // 2710 + "unknown", // 2711 + "unknown", // 2712 + "unknown", // 2713 + "unknown", // 2714 + "unknown", // 2715 + "unknown", // 2716 + "unknown", // 2717 + "unknown", // 2718 + "unknown", // 2719 + "unknown", // 2720 + "unknown", // 2721 + "unknown", // 2722 + "unknown", // 2723 + "unknown", // 2724 + "unknown", // 2725 + "unknown", // 2726 + "unknown", // 2727 + "unknown", // 2728 + "unknown", // 2729 + "unknown", // 2730 + "unknown", // 2731 + "unknown", // 2732 + "unknown", // 2733 + "unknown", // 2734 + "unknown", // 2735 + "unknown", // 2736 + "unknown", // 2737 + "unknown", // 2738 + "unknown", // 2739 + "unknown", // 2740 + "unknown", // 2741 + "unknown", // 2742 + "unknown", // 2743 + "unknown", // 2744 + "unknown", // 2745 + "unknown", // 2746 + "unknown", // 2747 + "unknown", // 2748 + "unknown", // 2749 + "unknown", // 2750 + "unknown", // 2751 + "unknown", // 2752 + "unknown", // 2753 + "unknown", // 2754 + "unknown", // 2755 + "unknown", // 2756 + "unknown", // 2757 + "unknown", // 2758 + "unknown", // 2759 + "unknown", // 2760 + "unknown", // 2761 + "unknown", // 2762 + "unknown", // 2763 + "unknown", // 2764 + "unknown", // 2765 + "unknown", // 2766 + "unknown", // 2767 + "unknown", // 2768 + "unknown", // 2769 + "unknown", // 2770 + "unknown", // 2771 + "unknown", // 2772 + "unknown", // 2773 + "unknown", // 2774 + "unknown", // 2775 + "unknown", // 2776 + "unknown", // 2777 + "unknown", // 2778 + "unknown", // 2779 + "unknown", // 2780 + "unknown", // 2781 + "unknown", // 2782 + "unknown", // 2783 + "unknown", // 2784 + "unknown", // 2785 + "unknown", // 2786 + "unknown", // 2787 + "unknown", // 2788 + "unknown", // 2789 + "unknown", // 2790 + "unknown", // 2791 + "unknown", // 2792 + "unknown", // 2793 + "unknown", // 2794 + "unknown", // 2795 + "unknown", // 2796 + "unknown", // 2797 + "unknown", // 2798 + "unknown", // 2799 + "unknown", // 2800 + "unknown", // 2801 + "unknown", // 2802 + "unknown", // 2803 + "unknown", // 2804 + "unknown", // 2805 + "unknown", // 2806 + "unknown", // 2807 + "unknown", // 2808 + "unknown", // 2809 + "unknown", // 2810 + "unknown", // 2811 + "unknown", // 2812 + "unknown", // 2813 + "unknown", // 2814 + "unknown", // 2815 + "mcycle", // 2816 + "unknown", // 2817 + "minstret", // 2818 + "mhpmcounter3", // 2819 + "mhpmcounter4", // 2820 + "mhpmcounter5", // 2821 + "mhpmcounter6", // 2822 + "mhpmcounter7", // 2823 + "mhpmcounter8", // 2824 + "mhpmcounter9", // 2825 + "mhpmcounter10", // 2826 + "mhpmcounter11", // 2827 + "mhpmcounter12", // 2828 + "mhpmcounter13", // 2829 + "mhpmcounter14", // 2830 + "mhpmcounter15", // 2831 + "mhpmcounter16", // 2832 + "mhpmcounter17", // 2833 + "mhpmcounter18", // 2834 + "mhpmcounter19", // 2835 + "mhpmcounter20", // 2836 + "mhpmcounter21", // 2837 + "mhpmcounter22", // 2838 + "mhpmcounter23", // 2839 + "mhpmcounter24", // 2840 + "mhpmcounter25", // 2841 + "mhpmcounter26", // 2842 + "mhpmcounter27", // 2843 + "mhpmcounter28", // 2844 + "mhpmcounter29", // 2845 + "mhpmcounter30", // 2846 + "mhpmcounter31", // 2847 + "unknown", // 2848 + "unknown", // 2849 + "unknown", // 2850 + "unknown", // 2851 + "unknown", // 2852 + "unknown", // 2853 + "unknown", // 2854 + "unknown", // 2855 + "unknown", // 2856 + "unknown", // 2857 + "unknown", // 2858 + "unknown", // 2859 + "unknown", // 2860 + "unknown", // 2861 + "unknown", // 2862 + "unknown", // 2863 + "unknown", // 2864 + "unknown", // 2865 + "unknown", // 2866 + "unknown", // 2867 + "unknown", // 2868 + "unknown", // 2869 + "unknown", // 2870 + "unknown", // 2871 + "unknown", // 2872 + "unknown", // 2873 + "unknown", // 2874 + "unknown", // 2875 + "unknown", // 2876 + "unknown", // 2877 + "unknown", // 2878 + "unknown", // 2879 + "unknown", // 2880 + "unknown", // 2881 + "unknown", // 2882 + "unknown", // 2883 + "unknown", // 2884 + "unknown", // 2885 + "unknown", // 2886 + "unknown", // 2887 + "unknown", // 2888 + "unknown", // 2889 + "unknown", // 2890 + "unknown", // 2891 + "unknown", // 2892 + "unknown", // 2893 + "unknown", // 2894 + "unknown", // 2895 + "unknown", // 2896 + "unknown", // 2897 + "unknown", // 2898 + "unknown", // 2899 + "unknown", // 2900 + "unknown", // 2901 + "unknown", // 2902 + "unknown", // 2903 + "unknown", // 2904 + "unknown", // 2905 + "unknown", // 2906 + "unknown", // 2907 + "unknown", // 2908 + "unknown", // 2909 + "unknown", // 2910 + "unknown", // 2911 + "unknown", // 2912 + "unknown", // 2913 + "unknown", // 2914 + "unknown", // 2915 + "unknown", // 2916 + "unknown", // 2917 + "unknown", // 2918 + "unknown", // 2919 + "unknown", // 2920 + "unknown", // 2921 + "unknown", // 2922 + "unknown", // 2923 + "unknown", // 2924 + "unknown", // 2925 + "unknown", // 2926 + "unknown", // 2927 + "unknown", // 2928 + "unknown", // 2929 + "unknown", // 2930 + "unknown", // 2931 + "unknown", // 2932 + "unknown", // 2933 + "unknown", // 2934 + "unknown", // 2935 + "unknown", // 2936 + "unknown", // 2937 + "unknown", // 2938 + "unknown", // 2939 + "unknown", // 2940 + "unknown", // 2941 + "unknown", // 2942 + "unknown", // 2943 + "mcycleh", // 2944 + "unknown", // 2945 + "minstreth", // 2946 + "mhpmcounter3h", // 2947 + "mhpmcounter4h", // 2948 + "mhpmcounter5h", // 2949 + "mhpmcounter6h", // 2950 + "mhpmcounter7h", // 2951 + "mhpmcounter8h", // 2952 + "mhpmcounter9h", // 2953 + "mhpmcounter10h", // 2954 + "mhpmcounter11h", // 2955 + "mhpmcounter12h", // 2956 + "mhpmcounter13h", // 2957 + "mhpmcounter14h", // 2958 + "mhpmcounter15h", // 2959 + "mhpmcounter16h", // 2960 + "mhpmcounter17h", // 2961 + "mhpmcounter18h", // 2962 + "mhpmcounter19h", // 2963 + "mhpmcounter20h", // 2964 + "mhpmcounter21h", // 2965 + "mhpmcounter22h", // 2966 + "mhpmcounter23h", // 2967 + "mhpmcounter24h", // 2968 + "mhpmcounter25h", // 2969 + "mhpmcounter26h", // 2970 + "mhpmcounter27h", // 2971 + "mhpmcounter28h", // 2972 + "mhpmcounter29h", // 2973 + "mhpmcounter30h", // 2974 + "mhpmcounter31h", // 2975 + "unknown", // 2976 + "unknown", // 2977 + "unknown", // 2978 + "unknown", // 2979 + "unknown", // 2980 + "unknown", // 2981 + "unknown", // 2982 + "unknown", // 2983 + "unknown", // 2984 + "unknown", // 2985 + "unknown", // 2986 + "unknown", // 2987 + "unknown", // 2988 + "unknown", // 2989 + "unknown", // 2990 + "unknown", // 2991 + "unknown", // 2992 + "unknown", // 2993 + "unknown", // 2994 + "unknown", // 2995 + "unknown", // 2996 + "unknown", // 2997 + "unknown", // 2998 + "unknown", // 2999 + "unknown", // 3000 + "unknown", // 3001 + "unknown", // 3002 + "unknown", // 3003 + "unknown", // 3004 + "unknown", // 3005 + "unknown", // 3006 + "unknown", // 3007 + "unknown", // 3008 + "unknown", // 3009 + "unknown", // 3010 + "unknown", // 3011 + "unknown", // 3012 + "unknown", // 3013 + "unknown", // 3014 + "unknown", // 3015 + "unknown", // 3016 + "unknown", // 3017 + "unknown", // 3018 + "unknown", // 3019 + "unknown", // 3020 + "unknown", // 3021 + "unknown", // 3022 + "unknown", // 3023 + "unknown", // 3024 + "unknown", // 3025 + "unknown", // 3026 + "unknown", // 3027 + "unknown", // 3028 + "unknown", // 3029 + "unknown", // 3030 + "unknown", // 3031 + "unknown", // 3032 + "unknown", // 3033 + "unknown", // 3034 + "unknown", // 3035 + "unknown", // 3036 + "unknown", // 3037 + "unknown", // 3038 + "unknown", // 3039 + "unknown", // 3040 + "unknown", // 3041 + "unknown", // 3042 + "unknown", // 3043 + "unknown", // 3044 + "unknown", // 3045 + "unknown", // 3046 + "unknown", // 3047 + "unknown", // 3048 + "unknown", // 3049 + "unknown", // 3050 + "unknown", // 3051 + "unknown", // 3052 + "unknown", // 3053 + "unknown", // 3054 + "unknown", // 3055 + "unknown", // 3056 + "unknown", // 3057 + "unknown", // 3058 + "unknown", // 3059 + "unknown", // 3060 + "unknown", // 3061 + "unknown", // 3062 + "unknown", // 3063 + "unknown", // 3064 + "unknown", // 3065 + "unknown", // 3066 + "unknown", // 3067 + "unknown", // 3068 + "unknown", // 3069 + "unknown", // 3070 + "unknown", // 3071 + "cycle", // 3072 + "time", // 3073 + "instret", // 3074 + "hpmcounter3", // 3075 + "hpmcounter4", // 3076 + "hpmcounter5", // 3077 + "hpmcounter6", // 3078 + "hpmcounter7", // 3079 + "hpmcounter8", // 3080 + "hpmcounter9", // 3081 + "hpmcounter10", // 3082 + "hpmcounter11", // 3083 + "hpmcounter12", // 3084 + "hpmcounter13", // 3085 + "hpmcounter14", // 3086 + "hpmcounter15", // 3087 + "hpmcounter16", // 3088 + "hpmcounter17", // 3089 + "hpmcounter18", // 3090 + "hpmcounter19", // 3091 + "hpmcounter20", // 3092 + "hpmcounter21", // 3093 + "hpmcounter22", // 3094 + "hpmcounter23", // 3095 + "hpmcounter24", // 3096 + "hpmcounter25", // 3097 + "hpmcounter26", // 3098 + "hpmcounter27", // 3099 + "hpmcounter28", // 3100 + "hpmcounter29", // 3101 + "hpmcounter30", // 3102 + "hpmcounter31", // 3103 + "vl", // 3104 + "vtype", // 3105 + "vlenb", // 3106 + "unknown", // 3107 + "unknown", // 3108 + "unknown", // 3109 + "unknown", // 3110 + "unknown", // 3111 + "unknown", // 3112 + "unknown", // 3113 + "unknown", // 3114 + "unknown", // 3115 + "unknown", // 3116 + "unknown", // 3117 + "unknown", // 3118 + "unknown", // 3119 + "unknown", // 3120 + "unknown", // 3121 + "unknown", // 3122 + "unknown", // 3123 + "unknown", // 3124 + "unknown", // 3125 + "unknown", // 3126 + "unknown", // 3127 + "unknown", // 3128 + "unknown", // 3129 + "unknown", // 3130 + "unknown", // 3131 + "unknown", // 3132 + "unknown", // 3133 + "unknown", // 3134 + "unknown", // 3135 + "unknown", // 3136 + "unknown", // 3137 + "unknown", // 3138 + "unknown", // 3139 + "unknown", // 3140 + "unknown", // 3141 + "unknown", // 3142 + "unknown", // 3143 + "unknown", // 3144 + "unknown", // 3145 + "unknown", // 3146 + "unknown", // 3147 + "unknown", // 3148 + "unknown", // 3149 + "unknown", // 3150 + "unknown", // 3151 + "unknown", // 3152 + "unknown", // 3153 + "unknown", // 3154 + "unknown", // 3155 + "unknown", // 3156 + "unknown", // 3157 + "unknown", // 3158 + "unknown", // 3159 + "unknown", // 3160 + "unknown", // 3161 + "unknown", // 3162 + "unknown", // 3163 + "unknown", // 3164 + "unknown", // 3165 + "unknown", // 3166 + "unknown", // 3167 + "unknown", // 3168 + "unknown", // 3169 + "unknown", // 3170 + "unknown", // 3171 + "unknown", // 3172 + "unknown", // 3173 + "unknown", // 3174 + "unknown", // 3175 + "unknown", // 3176 + "unknown", // 3177 + "unknown", // 3178 + "unknown", // 3179 + "unknown", // 3180 + "unknown", // 3181 + "unknown", // 3182 + "unknown", // 3183 + "unknown", // 3184 + "unknown", // 3185 + "unknown", // 3186 + "unknown", // 3187 + "unknown", // 3188 + "unknown", // 3189 + "unknown", // 3190 + "unknown", // 3191 + "unknown", // 3192 + "unknown", // 3193 + "unknown", // 3194 + "unknown", // 3195 + "unknown", // 3196 + "unknown", // 3197 + "unknown", // 3198 + "unknown", // 3199 + "cycleh", // 3200 + "timeh", // 3201 + "instreth", // 3202 + "hpmcounter3h", // 3203 + "hpmcounter4h", // 3204 + "hpmcounter5h", // 3205 + "hpmcounter6h", // 3206 + "hpmcounter7h", // 3207 + "hpmcounter8h", // 3208 + "hpmcounter9h", // 3209 + "hpmcounter10h", // 3210 + "hpmcounter11h", // 3211 + "hpmcounter12h", // 3212 + "hpmcounter13h", // 3213 + "hpmcounter14h", // 3214 + "hpmcounter15h", // 3215 + "hpmcounter16h", // 3216 + "hpmcounter17h", // 3217 + "hpmcounter18h", // 3218 + "hpmcounter19h", // 3219 + "hpmcounter20h", // 3220 + "hpmcounter21h", // 3221 + "hpmcounter22h", // 3222 + "hpmcounter23h", // 3223 + "hpmcounter24h", // 3224 + "hpmcounter25h", // 3225 + "hpmcounter26h", // 3226 + "hpmcounter27h", // 3227 + "hpmcounter28h", // 3228 + "hpmcounter29h", // 3229 + "hpmcounter30h", // 3230 + "hpmcounter31h", // 3231 + "unknown", // 3232 + "unknown", // 3233 + "unknown", // 3234 + "unknown", // 3235 + "unknown", // 3236 + "unknown", // 3237 + "unknown", // 3238 + "unknown", // 3239 + "unknown", // 3240 + "unknown", // 3241 + "unknown", // 3242 + "unknown", // 3243 + "unknown", // 3244 + "unknown", // 3245 + "unknown", // 3246 + "unknown", // 3247 + "unknown", // 3248 + "unknown", // 3249 + "unknown", // 3250 + "unknown", // 3251 + "unknown", // 3252 + "unknown", // 3253 + "unknown", // 3254 + "unknown", // 3255 + "unknown", // 3256 + "unknown", // 3257 + "unknown", // 3258 + "unknown", // 3259 + "unknown", // 3260 + "unknown", // 3261 + "unknown", // 3262 + "unknown", // 3263 + "unknown", // 3264 + "unknown", // 3265 + "unknown", // 3266 + "unknown", // 3267 + "unknown", // 3268 + "unknown", // 3269 + "unknown", // 3270 + "unknown", // 3271 + "unknown", // 3272 + "unknown", // 3273 + "unknown", // 3274 + "unknown", // 3275 + "unknown", // 3276 + "unknown", // 3277 + "unknown", // 3278 + "unknown", // 3279 + "unknown", // 3280 + "unknown", // 3281 + "unknown", // 3282 + "unknown", // 3283 + "unknown", // 3284 + "unknown", // 3285 + "unknown", // 3286 + "unknown", // 3287 + "unknown", // 3288 + "unknown", // 3289 + "unknown", // 3290 + "unknown", // 3291 + "unknown", // 3292 + "unknown", // 3293 + "unknown", // 3294 + "unknown", // 3295 + "unknown", // 3296 + "unknown", // 3297 + "unknown", // 3298 + "unknown", // 3299 + "unknown", // 3300 + "unknown", // 3301 + "unknown", // 3302 + "unknown", // 3303 + "unknown", // 3304 + "unknown", // 3305 + "unknown", // 3306 + "unknown", // 3307 + "unknown", // 3308 + "unknown", // 3309 + "unknown", // 3310 + "unknown", // 3311 + "unknown", // 3312 + "unknown", // 3313 + "unknown", // 3314 + "unknown", // 3315 + "unknown", // 3316 + "unknown", // 3317 + "unknown", // 3318 + "unknown", // 3319 + "unknown", // 3320 + "unknown", // 3321 + "unknown", // 3322 + "unknown", // 3323 + "unknown", // 3324 + "unknown", // 3325 + "unknown", // 3326 + "unknown", // 3327 + "unknown", // 3328 + "unknown", // 3329 + "unknown", // 3330 + "unknown", // 3331 + "unknown", // 3332 + "unknown", // 3333 + "unknown", // 3334 + "unknown", // 3335 + "unknown", // 3336 + "unknown", // 3337 + "unknown", // 3338 + "unknown", // 3339 + "unknown", // 3340 + "unknown", // 3341 + "unknown", // 3342 + "unknown", // 3343 + "unknown", // 3344 + "unknown", // 3345 + "unknown", // 3346 + "unknown", // 3347 + "unknown", // 3348 + "unknown", // 3349 + "unknown", // 3350 + "unknown", // 3351 + "unknown", // 3352 + "unknown", // 3353 + "unknown", // 3354 + "unknown", // 3355 + "unknown", // 3356 + "unknown", // 3357 + "unknown", // 3358 + "unknown", // 3359 + "unknown", // 3360 + "unknown", // 3361 + "unknown", // 3362 + "unknown", // 3363 + "unknown", // 3364 + "unknown", // 3365 + "unknown", // 3366 + "unknown", // 3367 + "unknown", // 3368 + "unknown", // 3369 + "unknown", // 3370 + "unknown", // 3371 + "unknown", // 3372 + "unknown", // 3373 + "unknown", // 3374 + "unknown", // 3375 + "unknown", // 3376 + "unknown", // 3377 + "unknown", // 3378 + "unknown", // 3379 + "unknown", // 3380 + "unknown", // 3381 + "unknown", // 3382 + "unknown", // 3383 + "unknown", // 3384 + "unknown", // 3385 + "unknown", // 3386 + "unknown", // 3387 + "unknown", // 3388 + "unknown", // 3389 + "unknown", // 3390 + "unknown", // 3391 + "unknown", // 3392 + "unknown", // 3393 + "unknown", // 3394 + "unknown", // 3395 + "unknown", // 3396 + "unknown", // 3397 + "unknown", // 3398 + "unknown", // 3399 + "unknown", // 3400 + "unknown", // 3401 + "unknown", // 3402 + "unknown", // 3403 + "unknown", // 3404 + "unknown", // 3405 + "unknown", // 3406 + "unknown", // 3407 + "unknown", // 3408 + "unknown", // 3409 + "unknown", // 3410 + "unknown", // 3411 + "unknown", // 3412 + "unknown", // 3413 + "unknown", // 3414 + "unknown", // 3415 + "unknown", // 3416 + "unknown", // 3417 + "unknown", // 3418 + "unknown", // 3419 + "unknown", // 3420 + "unknown", // 3421 + "unknown", // 3422 + "unknown", // 3423 + "unknown", // 3424 + "unknown", // 3425 + "unknown", // 3426 + "unknown", // 3427 + "unknown", // 3428 + "unknown", // 3429 + "unknown", // 3430 + "unknown", // 3431 + "unknown", // 3432 + "unknown", // 3433 + "unknown", // 3434 + "unknown", // 3435 + "unknown", // 3436 + "unknown", // 3437 + "unknown", // 3438 + "unknown", // 3439 + "unknown", // 3440 + "unknown", // 3441 + "unknown", // 3442 + "unknown", // 3443 + "unknown", // 3444 + "unknown", // 3445 + "unknown", // 3446 + "unknown", // 3447 + "unknown", // 3448 + "unknown", // 3449 + "unknown", // 3450 + "unknown", // 3451 + "unknown", // 3452 + "unknown", // 3453 + "unknown", // 3454 + "unknown", // 3455 + "unknown", // 3456 + "unknown", // 3457 + "unknown", // 3458 + "unknown", // 3459 + "unknown", // 3460 + "unknown", // 3461 + "unknown", // 3462 + "unknown", // 3463 + "unknown", // 3464 + "unknown", // 3465 + "unknown", // 3466 + "unknown", // 3467 + "unknown", // 3468 + "unknown", // 3469 + "unknown", // 3470 + "unknown", // 3471 + "unknown", // 3472 + "unknown", // 3473 + "unknown", // 3474 + "unknown", // 3475 + "unknown", // 3476 + "unknown", // 3477 + "unknown", // 3478 + "unknown", // 3479 + "unknown", // 3480 + "unknown", // 3481 + "unknown", // 3482 + "unknown", // 3483 + "unknown", // 3484 + "unknown", // 3485 + "unknown", // 3486 + "unknown", // 3487 + "scountovf", // 3488 + "unknown", // 3489 + "unknown", // 3490 + "unknown", // 3491 + "unknown", // 3492 + "unknown", // 3493 + "unknown", // 3494 + "unknown", // 3495 + "unknown", // 3496 + "unknown", // 3497 + "unknown", // 3498 + "unknown", // 3499 + "unknown", // 3500 + "unknown", // 3501 + "unknown", // 3502 + "unknown", // 3503 + "stopi", // 3504 + "unknown", // 3505 + "unknown", // 3506 + "unknown", // 3507 + "unknown", // 3508 + "unknown", // 3509 + "unknown", // 3510 + "unknown", // 3511 + "unknown", // 3512 + "unknown", // 3513 + "unknown", // 3514 + "unknown", // 3515 + "unknown", // 3516 + "unknown", // 3517 + "unknown", // 3518 + "unknown", // 3519 + "unknown", // 3520 + "unknown", // 3521 + "unknown", // 3522 + "unknown", // 3523 + "unknown", // 3524 + "unknown", // 3525 + "unknown", // 3526 + "unknown", // 3527 + "unknown", // 3528 + "unknown", // 3529 + "unknown", // 3530 + "unknown", // 3531 + "unknown", // 3532 + "unknown", // 3533 + "unknown", // 3534 + "unknown", // 3535 + "unknown", // 3536 + "unknown", // 3537 + "unknown", // 3538 + "unknown", // 3539 + "unknown", // 3540 + "unknown", // 3541 + "unknown", // 3542 + "unknown", // 3543 + "unknown", // 3544 + "unknown", // 3545 + "unknown", // 3546 + "unknown", // 3547 + "unknown", // 3548 + "unknown", // 3549 + "unknown", // 3550 + "unknown", // 3551 + "unknown", // 3552 + "unknown", // 3553 + "unknown", // 3554 + "unknown", // 3555 + "unknown", // 3556 + "unknown", // 3557 + "unknown", // 3558 + "unknown", // 3559 + "unknown", // 3560 + "unknown", // 3561 + "unknown", // 3562 + "unknown", // 3563 + "unknown", // 3564 + "unknown", // 3565 + "unknown", // 3566 + "unknown", // 3567 + "unknown", // 3568 + "unknown", // 3569 + "unknown", // 3570 + "unknown", // 3571 + "unknown", // 3572 + "unknown", // 3573 + "unknown", // 3574 + "unknown", // 3575 + "unknown", // 3576 + "unknown", // 3577 + "unknown", // 3578 + "unknown", // 3579 + "unknown", // 3580 + "unknown", // 3581 + "unknown", // 3582 + "unknown", // 3583 + "unknown", // 3584 + "unknown", // 3585 + "unknown", // 3586 + "unknown", // 3587 + "unknown", // 3588 + "unknown", // 3589 + "unknown", // 3590 + "unknown", // 3591 + "unknown", // 3592 + "unknown", // 3593 + "unknown", // 3594 + "unknown", // 3595 + "unknown", // 3596 + "unknown", // 3597 + "unknown", // 3598 + "unknown", // 3599 + "unknown", // 3600 + "unknown", // 3601 + "hgeip", // 3602 + "unknown", // 3603 + "unknown", // 3604 + "unknown", // 3605 + "unknown", // 3606 + "unknown", // 3607 + "unknown", // 3608 + "unknown", // 3609 + "unknown", // 3610 + "unknown", // 3611 + "unknown", // 3612 + "unknown", // 3613 + "unknown", // 3614 + "unknown", // 3615 + "unknown", // 3616 + "unknown", // 3617 + "unknown", // 3618 + "unknown", // 3619 + "unknown", // 3620 + "unknown", // 3621 + "unknown", // 3622 + "unknown", // 3623 + "unknown", // 3624 + "unknown", // 3625 + "unknown", // 3626 + "unknown", // 3627 + "unknown", // 3628 + "unknown", // 3629 + "unknown", // 3630 + "unknown", // 3631 + "unknown", // 3632 + "unknown", // 3633 + "unknown", // 3634 + "unknown", // 3635 + "unknown", // 3636 + "unknown", // 3637 + "unknown", // 3638 + "unknown", // 3639 + "unknown", // 3640 + "unknown", // 3641 + "unknown", // 3642 + "unknown", // 3643 + "unknown", // 3644 + "unknown", // 3645 + "unknown", // 3646 + "unknown", // 3647 + "unknown", // 3648 + "unknown", // 3649 + "unknown", // 3650 + "unknown", // 3651 + "unknown", // 3652 + "unknown", // 3653 + "unknown", // 3654 + "unknown", // 3655 + "unknown", // 3656 + "unknown", // 3657 + "unknown", // 3658 + "unknown", // 3659 + "unknown", // 3660 + "unknown", // 3661 + "unknown", // 3662 + "unknown", // 3663 + "unknown", // 3664 + "unknown", // 3665 + "unknown", // 3666 + "unknown", // 3667 + "unknown", // 3668 + "unknown", // 3669 + "unknown", // 3670 + "unknown", // 3671 + "unknown", // 3672 + "unknown", // 3673 + "unknown", // 3674 + "unknown", // 3675 + "unknown", // 3676 + "unknown", // 3677 + "unknown", // 3678 + "unknown", // 3679 + "unknown", // 3680 + "unknown", // 3681 + "unknown", // 3682 + "unknown", // 3683 + "unknown", // 3684 + "unknown", // 3685 + "unknown", // 3686 + "unknown", // 3687 + "unknown", // 3688 + "unknown", // 3689 + "unknown", // 3690 + "unknown", // 3691 + "unknown", // 3692 + "unknown", // 3693 + "unknown", // 3694 + "unknown", // 3695 + "unknown", // 3696 + "unknown", // 3697 + "unknown", // 3698 + "unknown", // 3699 + "unknown", // 3700 + "unknown", // 3701 + "unknown", // 3702 + "unknown", // 3703 + "unknown", // 3704 + "unknown", // 3705 + "unknown", // 3706 + "unknown", // 3707 + "unknown", // 3708 + "unknown", // 3709 + "unknown", // 3710 + "unknown", // 3711 + "unknown", // 3712 + "unknown", // 3713 + "unknown", // 3714 + "unknown", // 3715 + "unknown", // 3716 + "unknown", // 3717 + "unknown", // 3718 + "unknown", // 3719 + "unknown", // 3720 + "unknown", // 3721 + "unknown", // 3722 + "unknown", // 3723 + "unknown", // 3724 + "unknown", // 3725 + "unknown", // 3726 + "unknown", // 3727 + "unknown", // 3728 + "unknown", // 3729 + "unknown", // 3730 + "unknown", // 3731 + "unknown", // 3732 + "unknown", // 3733 + "unknown", // 3734 + "unknown", // 3735 + "unknown", // 3736 + "unknown", // 3737 + "unknown", // 3738 + "unknown", // 3739 + "unknown", // 3740 + "unknown", // 3741 + "unknown", // 3742 + "unknown", // 3743 + "unknown", // 3744 + "unknown", // 3745 + "unknown", // 3746 + "unknown", // 3747 + "unknown", // 3748 + "unknown", // 3749 + "unknown", // 3750 + "unknown", // 3751 + "unknown", // 3752 + "unknown", // 3753 + "unknown", // 3754 + "unknown", // 3755 + "unknown", // 3756 + "unknown", // 3757 + "unknown", // 3758 + "unknown", // 3759 + "vstopi", // 3760 + "unknown", // 3761 + "unknown", // 3762 + "unknown", // 3763 + "unknown", // 3764 + "unknown", // 3765 + "unknown", // 3766 + "unknown", // 3767 + "unknown", // 3768 + "unknown", // 3769 + "unknown", // 3770 + "unknown", // 3771 + "unknown", // 3772 + "unknown", // 3773 + "unknown", // 3774 + "unknown", // 3775 + "unknown", // 3776 + "unknown", // 3777 + "unknown", // 3778 + "unknown", // 3779 + "unknown", // 3780 + "unknown", // 3781 + "unknown", // 3782 + "unknown", // 3783 + "unknown", // 3784 + "unknown", // 3785 + "unknown", // 3786 + "unknown", // 3787 + "unknown", // 3788 + "unknown", // 3789 + "unknown", // 3790 + "unknown", // 3791 + "unknown", // 3792 + "unknown", // 3793 + "unknown", // 3794 + "unknown", // 3795 + "unknown", // 3796 + "unknown", // 3797 + "unknown", // 3798 + "unknown", // 3799 + "unknown", // 3800 + "unknown", // 3801 + "unknown", // 3802 + "unknown", // 3803 + "unknown", // 3804 + "unknown", // 3805 + "unknown", // 3806 + "unknown", // 3807 + "unknown", // 3808 + "unknown", // 3809 + "unknown", // 3810 + "unknown", // 3811 + "unknown", // 3812 + "unknown", // 3813 + "unknown", // 3814 + "unknown", // 3815 + "unknown", // 3816 + "unknown", // 3817 + "unknown", // 3818 + "unknown", // 3819 + "unknown", // 3820 + "unknown", // 3821 + "unknown", // 3822 + "unknown", // 3823 + "unknown", // 3824 + "unknown", // 3825 + "unknown", // 3826 + "unknown", // 3827 + "unknown", // 3828 + "unknown", // 3829 + "unknown", // 3830 + "unknown", // 3831 + "unknown", // 3832 + "unknown", // 3833 + "unknown", // 3834 + "unknown", // 3835 + "unknown", // 3836 + "unknown", // 3837 + "unknown", // 3838 + "unknown", // 3839 + "unknown", // 3840 + "unknown", // 3841 + "unknown", // 3842 + "unknown", // 3843 + "unknown", // 3844 + "unknown", // 3845 + "unknown", // 3846 + "unknown", // 3847 + "unknown", // 3848 + "unknown", // 3849 + "unknown", // 3850 + "unknown", // 3851 + "unknown", // 3852 + "unknown", // 3853 + "unknown", // 3854 + "unknown", // 3855 + "unknown", // 3856 + "mvendorid", // 3857 + "marchid", // 3858 + "mimpid", // 3859 + "mhartid", // 3860 + "mconfigptr", // 3861 + "unknown", // 3862 + "unknown", // 3863 + "unknown", // 3864 + "unknown", // 3865 + "unknown", // 3866 + "unknown", // 3867 + "unknown", // 3868 + "unknown", // 3869 + "unknown", // 3870 + "unknown", // 3871 + "unknown", // 3872 + "unknown", // 3873 + "unknown", // 3874 + "unknown", // 3875 + "unknown", // 3876 + "unknown", // 3877 + "unknown", // 3878 + "unknown", // 3879 + "unknown", // 3880 + "unknown", // 3881 + "unknown", // 3882 + "unknown", // 3883 + "unknown", // 3884 + "unknown", // 3885 + "unknown", // 3886 + "unknown", // 3887 + "unknown", // 3888 + "unknown", // 3889 + "unknown", // 3890 + "unknown", // 3891 + "unknown", // 3892 + "unknown", // 3893 + "unknown", // 3894 + "unknown", // 3895 + "unknown", // 3896 + "unknown", // 3897 + "unknown", // 3898 + "unknown", // 3899 + "unknown", // 3900 + "unknown", // 3901 + "unknown", // 3902 + "unknown", // 3903 + "unknown", // 3904 + "unknown", // 3905 + "unknown", // 3906 + "unknown", // 3907 + "unknown", // 3908 + "unknown", // 3909 + "unknown", // 3910 + "unknown", // 3911 + "unknown", // 3912 + "unknown", // 3913 + "unknown", // 3914 + "unknown", // 3915 + "unknown", // 3916 + "unknown", // 3917 + "unknown", // 3918 + "unknown", // 3919 + "unknown", // 3920 + "unknown", // 3921 + "unknown", // 3922 + "unknown", // 3923 + "unknown", // 3924 + "unknown", // 3925 + "unknown", // 3926 + "unknown", // 3927 + "unknown", // 3928 + "unknown", // 3929 + "unknown", // 3930 + "unknown", // 3931 + "unknown", // 3932 + "unknown", // 3933 + "unknown", // 3934 + "unknown", // 3935 + "unknown", // 3936 + "unknown", // 3937 + "unknown", // 3938 + "unknown", // 3939 + "unknown", // 3940 + "unknown", // 3941 + "unknown", // 3942 + "unknown", // 3943 + "unknown", // 3944 + "unknown", // 3945 + "unknown", // 3946 + "unknown", // 3947 + "unknown", // 3948 + "unknown", // 3949 + "unknown", // 3950 + "unknown", // 3951 + "unknown", // 3952 + "unknown", // 3953 + "unknown", // 3954 + "unknown", // 3955 + "unknown", // 3956 + "unknown", // 3957 + "unknown", // 3958 + "unknown", // 3959 + "unknown", // 3960 + "unknown", // 3961 + "unknown", // 3962 + "unknown", // 3963 + "unknown", // 3964 + "unknown", // 3965 + "unknown", // 3966 + "unknown", // 3967 + "unknown", // 3968 + "unknown", // 3969 + "unknown", // 3970 + "unknown", // 3971 + "unknown", // 3972 + "unknown", // 3973 + "unknown", // 3974 + "unknown", // 3975 + "unknown", // 3976 + "unknown", // 3977 + "unknown", // 3978 + "unknown", // 3979 + "unknown", // 3980 + "unknown", // 3981 + "unknown", // 3982 + "unknown", // 3983 + "unknown", // 3984 + "unknown", // 3985 + "unknown", // 3986 + "unknown", // 3987 + "unknown", // 3988 + "unknown", // 3989 + "unknown", // 3990 + "unknown", // 3991 + "unknown", // 3992 + "unknown", // 3993 + "unknown", // 3994 + "unknown", // 3995 + "unknown", // 3996 + "unknown", // 3997 + "unknown", // 3998 + "unknown", // 3999 + "unknown", // 4000 + "unknown", // 4001 + "unknown", // 4002 + "unknown", // 4003 + "unknown", // 4004 + "unknown", // 4005 + "unknown", // 4006 + "unknown", // 4007 + "unknown", // 4008 + "unknown", // 4009 + "unknown", // 4010 + "unknown", // 4011 + "unknown", // 4012 + "unknown", // 4013 + "unknown", // 4014 + "unknown", // 4015 + "mtopi", // 4016 + "unknown", // 4017 + "unknown", // 4018 + "unknown", // 4019 + "unknown", // 4020 + "unknown", // 4021 + "unknown", // 4022 + "unknown", // 4023 + "unknown", // 4024 + "unknown", // 4025 + "unknown", // 4026 + "unknown", // 4027 + "unknown", // 4028 + "unknown", // 4029 + "unknown", // 4030 + "unknown", // 4031 + "unknown", // 4032 + "unknown", // 4033 + "unknown", // 4034 + "unknown", // 4035 + "unknown", // 4036 + "unknown", // 4037 + "unknown", // 4038 + "unknown", // 4039 + "unknown", // 4040 + "unknown", // 4041 + "unknown", // 4042 + "unknown", // 4043 + "unknown", // 4044 + "unknown", // 4045 + "unknown", // 4046 + "unknown", // 4047 + "unknown", // 4048 + "unknown", // 4049 + "unknown", // 4050 + "unknown", // 4051 + "unknown", // 4052 + "unknown", // 4053 + "unknown", // 4054 + "unknown", // 4055 + "unknown", // 4056 + "unknown", // 4057 + "unknown", // 4058 + "unknown", // 4059 + "unknown", // 4060 + "unknown", // 4061 + "unknown", // 4062 + "unknown", // 4063 + "unknown", // 4064 + "unknown", // 4065 + "unknown", // 4066 + "unknown", // 4067 + "unknown", // 4068 + "unknown", // 4069 + "unknown", // 4070 + "unknown", // 4071 + "unknown", // 4072 + "unknown", // 4073 + "unknown", // 4074 + "unknown", // 4075 + "unknown", // 4076 + "unknown", // 4077 + "unknown", // 4078 + "unknown", // 4079 + "unknown", // 4080 + "unknown", // 4081 + "unknown", // 4082 + "unknown", // 4083 + "unknown", // 4084 + "unknown", // 4085 + "unknown", // 4086 + "unknown", // 4087 + "unknown", // 4088 + "unknown", // 4089 + "unknown", // 4090 + "unknown", // 4091 + "unknown", // 4092 + "unknown", // 4093 + "unknown", // 4094 + "unknown", // 4095 +}; +char const* const get_csr_name(unsigned i) { return csr_names[i]; } + +} +} diff --git a/src/iss/debugger/riscv_target_adapter.h b/src/iss/debugger/riscv_target_adapter.h index 7e18339..5ee48d2 100644 --- a/src/iss/debugger/riscv_target_adapter.h +++ b/src/iss/debugger/riscv_target_adapter.h @@ -30,8 +30,8 @@ * *******************************************************************************/ -#ifndef _ISS_DEBUGGER_RISCV_TARGET_ADAPTER_H_ -#define _ISS_DEBUGGER_RISCV_TARGET_ADAPTER_H_ +#ifndef _ISS_ARCH_DEBUGGER_RISCV_TARGET_ADAPTER_H_ +#define _ISS_ARCH_DEBUGGER_RISCV_TARGET_ADAPTER_H_ #include "iss/arch_if.h" #include @@ -39,6 +39,8 @@ #include #include +#include +#include #include #ifndef FMT_HEADER_ONLY #define FMT_HEADER_ONLY @@ -48,6 +50,10 @@ namespace iss { namespace debugger { + +char const* const get_csr_name(unsigned); +constexpr auto csr_offset = 100U; + using namespace iss::arch; using namespace iss::debugger; @@ -103,7 +109,7 @@ public: status process_query(unsigned int& mask, const rp_thread_ref& arg, rp_thread_info& info) override; status thread_list_query(int first, const rp_thread_ref& arg, std::vector& result, size_t max_num, size_t& num, - bool& done) override; + bool& done) override; status current_thread_query(rp_thread_ref& thread) override; @@ -129,11 +135,21 @@ public: protected: static inline constexpr addr_t map_addr(const addr_t& i) { return i; } - + std::string csr_xml; iss::arch_if* core; rp_thread_ref thread_idx; }; +template +typename std::enable_if::FLEN!=0, unsigned>::type get_f0_offset() { + return iss::arch::traits::F0; +} + +template +typename std::enable_if::FLEN==0, unsigned>::type get_f0_offset() { + return 0; +} + template status riscv_target_adapter::set_gen_thread(rp_thread_ref& thread) { thread_idx = thread; return Ok; @@ -175,34 +191,37 @@ template status riscv_target_adapter::current_thread_query template status riscv_target_adapter::read_registers(std::vector& data, std::vector& avail) { CPPLOG(TRACE) << "reading target registers"; - // return idx<0?:; data.clear(); avail.clear(); const uint8_t* reg_base = core->get_regs_base_ptr(); auto start_reg = arch::traits::X0; - for(size_t reg_no = start_reg; reg_no < start_reg + 33 /*arch::traits::NUM_REGS*/; ++reg_no) { - auto reg_width = arch::traits::reg_bit_widths[reg_no] / 8; - unsigned offset = traits::reg_byte_offsets[reg_no]; - for(size_t j = 0; j < reg_width; ++j) { - data.push_back(*(reg_base + offset + j)); - avail.push_back(0xff); + for(size_t i = 0; i < 33; ++i) { + if(i < arch::traits::RFS || i == arch::traits::PC) { + auto reg_no = i<32? start_reg + i: arch::traits::PC; + unsigned offset = traits::reg_byte_offsets[reg_no]; + for(size_t j = 0; j < arch::traits::XLEN/8; ++j) { + data.push_back(*(reg_base + offset + j)); + avail.push_back(0xff); + } + } else { + for(size_t j = 0; j < arch::traits::XLEN/8; ++j) { + data.push_back(0); + avail.push_back(0); + } + } + } + if(iss::arch::traits::FLEN > 0) { + auto fstart_reg = get_f0_offset(); + for(size_t i = 0; i < 32; ++i) { + auto reg_no = fstart_reg + i; + auto reg_width = arch::traits::reg_bit_widths[reg_no] / 8; + unsigned offset = traits::reg_byte_offsets[reg_no]; + for(size_t j = 0; j < reg_width; ++j) { + data.push_back(*(reg_base + offset + j)); + avail.push_back(0xff); + } } } - // work around fill with F type registers - // if (arch::traits::NUM_REGS < 65) { - // auto reg_width = sizeof(typename arch::traits::reg_t); - // for (size_t reg_no = 0; reg_no < 33; ++reg_no) { - // for (size_t j = 0; j < reg_width; ++j) { - // data.push_back(0x0); - // avail.push_back(0x00); - // } - // // if(arch::traits::XLEN < 64) - // // for(unsigned j=0; j<4; ++j){ - // // data.push_back(0x0); - // // avail.push_back(0x00); - // // } - // } - // } return Ok; } @@ -210,25 +229,25 @@ template status riscv_target_adapter::write_registers(cons auto start_reg = arch::traits::X0; auto* reg_base = core->get_regs_base_ptr(); auto iter = data.data(); - bool e_ext = arch::traits::PC < 32; - for(size_t reg_no = 0; reg_no < start_reg + 33 /*arch::traits::NUM_REGS*/; ++reg_no) { - if(e_ext && reg_no > 15) { - if(reg_no == 32) { - auto reg_width = arch::traits::reg_bit_widths[arch::traits::PC] / 8; - auto offset = traits::reg_byte_offsets[arch::traits::PC]; - std::copy(iter, iter + reg_width, reg_base); - } else { - const uint64_t zero_val = 0; - auto reg_width = arch::traits::reg_bit_widths[15] / 8; - auto iter = (uint8_t*)&zero_val; - std::copy(iter, iter + reg_width, reg_base); - } - } else { - auto reg_width = arch::traits::reg_bit_widths[reg_no] / 8; - auto offset = traits::reg_byte_offsets[reg_no]; - std::copy(iter, iter + reg_width, reg_base); - iter += 4; - reg_base += offset; + auto iter_end = data.data()+data.size(); + for(size_t i = 0; i < 33 && iter < iter_end; ++i) { + auto reg_width = arch::traits::XLEN / 8; + if(i < arch::traits::RFS) { + auto offset = traits::reg_byte_offsets[start_reg + i]; + std::copy(iter, iter + reg_width, reg_base+offset); + } else if(i == 32) { + auto offset = traits::reg_byte_offsets[arch::traits::PC]; + std::copy(iter, iter + reg_width, reg_base+offset); + } + iter += reg_width; + } + if(iss::arch::traits::FLEN > 0) { + auto fstart_reg = get_f0_offset(); + auto reg_width = arch::traits::FLEN / 8; + for(size_t i = 0; i < 32 && iter < iter_end; ++i) { + unsigned offset = traits::reg_byte_offsets[fstart_reg + i]; + std::copy(iter, iter + reg_width, reg_base+offset); + iter += reg_width; } } return Ok; @@ -236,7 +255,7 @@ template status riscv_target_adapter::write_registers(cons template status riscv_target_adapter::read_single_register(unsigned int reg_no, std::vector& data, std::vector& avail) { - if(reg_no < 65) { + if(reg_no ::reg_bit_width(static_cast::reg_e>(reg_no))/8; auto* reg_base = core->get_regs_base_ptr(); @@ -247,23 +266,24 @@ status riscv_target_adapter::read_single_register(unsigned int reg_no, std std::copy(reg_base + offset, reg_base + offset + reg_width, data.begin()); std::fill(avail.begin(), avail.end(), 0xff); } else { - typed_addr_t a(iss::access_type::DEBUG_READ, traits::CSR, reg_no - 65); + typed_addr_t a(iss::access_type::DEBUG_READ, traits::CSR, reg_no - csr_offset); data.resize(sizeof(typename traits::reg_t)); avail.resize(sizeof(typename traits::reg_t)); std::fill(avail.begin(), avail.end(), 0xff); core->read(a, data.size(), data.data()); + std::fill(avail.begin(), avail.end(), 0xff); } return data.size() > 0 ? Ok : Err; } template status riscv_target_adapter::write_single_register(unsigned int reg_no, const std::vector& data) { - if(reg_no < 65) { + if(reg_no < csr_offset) { auto* reg_base = core->get_regs_base_ptr(); auto reg_width = arch::traits::reg_bit_widths[static_cast::reg_e>(reg_no)] / 8; auto offset = traits::reg_byte_offsets[reg_no]; std::copy(data.begin(), data.begin() + reg_width, reg_base + offset); } else { - typed_addr_t a(iss::access_type::DEBUG_WRITE, traits::CSR, reg_no - 65); + typed_addr_t a(iss::access_type::DEBUG_WRITE, traits::CSR, reg_no - csr_offset); core->write(a, data.size(), data.data()); } return Ok; @@ -276,7 +296,7 @@ template status riscv_target_adapter::read_mem(uint64_t ad } template status riscv_target_adapter::write_mem(uint64_t addr, const std::vector& data) { - auto a = map_addr({iss::access_type::DEBUG_READ, iss::address_type::VIRTUAL, 0, addr}); + auto a = map_addr({iss::access_type::DEBUG_WRITE, iss::address_type::VIRTUAL, 0, addr}); auto f = [&]() -> status { return core->write(a, data.size(), data.data()); }; return srv->execute_syncronized(f); } @@ -329,7 +349,7 @@ template status riscv_target_adapter::add_break(break_type auto eaddr = map_addr({iss::access_type::FETCH, iss::address_type::PHYSICAL, 0, addr + length}); target_adapter_base::bp_lut.addEntry(++target_adapter_base::bp_count, saddr.val, eaddr.val - saddr.val); CPPLOG(TRACE) << "Adding breakpoint with handle " << target_adapter_base::bp_count << " for addr 0x" << std::hex << saddr.val - << std::dec; + << std::dec; CPPLOG(TRACE) << "Now having " << target_adapter_base::bp_lut.size() << " breakpoints"; return Ok; } @@ -359,7 +379,7 @@ template status riscv_target_adapter::remove_break(break_t template status riscv_target_adapter::resume_from_addr(bool step, int sig, uint64_t addr, rp_thread_ref thread, - std::function stop_callback) { + std::function stop_callback) { auto* reg_base = core->get_regs_base_ptr(); auto reg_width = arch::traits::reg_bit_widths[arch::traits::PC] / 8; auto offset = traits::reg_byte_offsets[arch::traits::PC]; @@ -369,93 +389,55 @@ status riscv_target_adapter::resume_from_addr(bool step, int sig, uint64_t } template status riscv_target_adapter::target_xml_query(std::string& out_buf) { - const std::string res{"" - "riscv:rv32" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - //" \n" - ""}; - out_buf = res; + if(!csr_xml.size()) { + std::ostringstream oss; + oss << "\n"; + if(iss::arch::traits::XLEN == 32) + oss << "riscv:rv32\n"; + else if(iss::arch::traits::XLEN == 64) + oss << " \n"; + oss << " \n"; + auto reg_base_num = iss::arch::traits::X0; + for(auto i = 0U; i::RFS; ++i) { + oss << " ::reg_bit_widths[reg_base_num + i] << "\" type=\"int\" regnum=\"" << i << "\"/>\n"; + } + oss << " ::reg_bit_widths[iss::arch::traits::PC] << "\" type=\"code_ptr\" regnum=\"" << 32U << "\"/>\n"; + oss << " \n"; + if(iss::arch::traits::FLEN > 0) { + oss << " \n"; + auto reg_base_num = get_f0_offset(); + auto type = iss::arch::traits::FLEN==32?"ieee_single":"riscv_double"; + for(auto i = 0U; i<32; ++i) { + oss << " ::reg_bit_widths[reg_base_num + i] << "\" type=\""<\n"; + } + oss << " ::XLEN << "\" regnum=\"103\" type int/>\n"; + oss << " ::XLEN << "\" regnum=\"101\" type int/>\n"; + oss << " ::XLEN << "\" regnum=\"102\" type int/>\n"; + oss << " \n"; + } + oss << " \n"; + std::vector data; + std::vector avail; + data.resize(sizeof(typename traits::reg_t)); + avail.resize(sizeof(typename traits::reg_t)); + for(auto i = 0U; i<4096; ++i) { + typed_addr_t a(iss::access_type::DEBUG_READ, traits::CSR, i); + std::fill(avail.begin(), avail.end(), 0xff); + auto res = core->read(a, data.size(), data.data()); + if(res == iss::Ok) { + oss << " ::XLEN << "\" type=\"int\" regnum=\"" << (i + csr_offset) << "\"/>\n"; + } + } + oss << " \n"; + oss << "\n"; + csr_xml = oss.str(); + std::ofstream ofs("target.xml"); + ofs< - - - riscv:rv32 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ } // namespace debugger } // namespace iss -#endif /* _ISS_DEBUGGER_RISCV_TARGET_ADAPTER_H_ */ +#endif /* _ISS_ARCH_DEBUGGER_RISCV_TARGET_ADAPTER_H_ */