gem5 [DEVELOP-FOR-25.0]
Loading...
Searching...
No Matches
misc.hh
Go to the documentation of this file.
1/*
2 * Copyright (c) 2013 ARM Limited
3 * Copyright (c) 2014-2015 Sven Karlsson
4 * Copyright (c) 2019 Yifei Liu
5 * Copyright (c) 2020 Barkhausen Institut
6 * Copyright (c) 2021 StreamComputing Corp
7 * All rights reserved
8 *
9 * The license below extends only to copyright in the software and shall
10 * not be construed as granting a license to any other intellectual
11 * property including but not limited to intellectual property relating
12 * to a hardware implementation of the functionality of the software
13 * licensed hereunder. You may use the software subject to the license
14 * terms below provided that you ensure that this notice is replicated
15 * unmodified and in its entirety in all distributions of the software,
16 * modified or unmodified, in source code or in binary form.
17 *
18 * Copyright (c) 2016 RISC-V Foundation
19 * Copyright (c) 2016 The University of Virginia
20 * Copyright (c) 2024 University of Rostock
21 * All rights reserved.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions are
25 * met: redistributions of source code must retain the above copyright
26 * notice, this list of conditions and the following disclaimer;
27 * redistributions in binary form must reproduce the above copyright
28 * notice, this list of conditions and the following disclaimer in the
29 * documentation and/or other materials provided with the distribution;
30 * neither the name of the copyright holders nor the names of its
31 * contributors may be used to endorse or promote products derived from
32 * this software without specific prior written permission.
33 *
34 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
35 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
36 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
37 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
38 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
39 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
40 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
41 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
42 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
43 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
44 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
45 */
46
47#ifndef __ARCH_RISCV_REGS_MISC_HH__
48#define __ARCH_RISCV_REGS_MISC_HH__
49
50#include <string>
51#include <unordered_map>
52
55#include "arch/riscv/types.hh"
56#include "base/bitunion.hh"
57#include "base/types.hh"
58#include "cpu/reg_class.hh"
59#include "debug/MiscRegs.hh"
60#include "enums/RiscvType.hh"
61
62namespace gem5
63{
64
65namespace RiscvISA
66{
67
69{
147
157 MISCREG_PMPCFG1, // pmpcfg1 is rv32 only
159 MISCREG_PMPCFG3, // pmpcfg3 is rv32 only
176
187
195
203
204 // These registers are not in the standard, hence does not exist in the
205 // CSRData map. These are mainly used to provide a minimal implementation
206 // for non-maskable-interrupt in our simple cpu.
207 // non-maskable-interrupt-vector-base-address: NMI version of xTVEC
209 // non-maskable-interrupt-enable: NMI version of xIE
211 // non-maskable-interrupt-pending: NMI version of xIP
213
214 // Resumable Non-Maskable Interrupts
219
220 // the following MicsRegIndex are RV32 only
222
255
257
259
263 // This CSR shared the same space with MISCREG_FFLAGS
272
274};
275
277 NUM_MISCREGS, debug::MiscRegs);
278
280{
281 CSR_USTATUS = 0x000,
282 CSR_UIE = 0x004,
283 CSR_UTVEC = 0x005,
285 CSR_UEPC = 0x041,
286 CSR_UCAUSE = 0x042,
287 CSR_UTVAL = 0x043,
288 CSR_UIP = 0x044,
289 CSR_FFLAGS = 0x001,
290 CSR_FRM = 0x002,
291 CSR_FCSR = 0x003,
292 CSR_CYCLE = 0xC00,
293 CSR_TIME = 0xC01,
294 CSR_INSTRET = 0xC02,
324
325 // rv32 only csr register begin
326 CSR_CYCLEH = 0xC80,
327 CSR_TIMEH = 0xC81,
358 // rv32 only csr register end
359
360 CSR_SSTATUS = 0x100,
361 CSR_SEDELEG = 0x102,
362 CSR_SIDELEG = 0x103,
363 CSR_SIE = 0x104,
364 CSR_STVEC = 0x105,
367 CSR_SEPC = 0x141,
368 CSR_SCAUSE = 0x142,
369 CSR_STVAL = 0x143,
370 CSR_SIP = 0x144,
371 CSR_SATP = 0x180,
372 CSR_SENVCFG = 0x10A, // 20240411 RISCV spec, volume 2
373
375 CSR_MARCHID = 0xF12,
376 CSR_MIMPID = 0xF13,
377 CSR_MHARTID = 0xF14,
378 CSR_MSTATUS = 0x300,
379 CSR_MISA = 0x301,
380 CSR_MEDELEG = 0x302,
381 CSR_MIDELEG = 0x303,
382 CSR_MIE = 0x304,
383 CSR_MTVEC = 0x305,
385 CSR_MSTATUSH = 0x310, // rv32 only
387 CSR_MEPC = 0x341,
388 CSR_MCAUSE = 0x342,
389 CSR_MTVAL = 0x343,
390 CSR_MIP = 0x344,
391 CSR_PMPCFG0 = 0x3A0,
392 CSR_PMPCFG1 = 0x3A1, // pmpcfg1 rv32 only
393 CSR_PMPCFG2 = 0x3A2,
394 CSR_PMPCFG3 = 0x3A3,// pmpcfg3 rv32 only
411 CSR_MCYCLE = 0xB00,
442
443 // rv32 only csr register begin
444 CSR_MCYCLEH = 0xB80,
475 // rv32 only csr register end
476
506
507 CSR_TSELECT = 0x7A0,
508 CSR_TDATA1 = 0x7A1,
509 CSR_TDATA2 = 0x7A2,
510 CSR_TDATA3 = 0x7A3,
511 CSR_DCSR = 0x7B0,
512 CSR_DPC = 0x7B1,
514
515 CSR_VSTART = 0x008,
516 CSR_VXSAT = 0x009,
517 CSR_VXRM = 0x00A,
518 CSR_VCSR = 0x00F,
519 CSR_VL = 0xC20,
520 CSR_VTYPE = 0xC21,
521 CSR_VLENB = 0xC22,
522
524 CSR_MNEPC = 0x741,
525 CSR_MNCAUSE = 0x742,
527
528 CSR_JVT = 0x017,
529};
530
532{
533 const std::string name;
534 const int physIndex;
535 const uint64_t rvTypes;
536 const uint64_t isaExts;
537 const bool requireSmrnmi = false;
538};
539
540template <typename... T>
541constexpr uint64_t rvTypeFlags(T... args) {
542 return ((1 << args) | ...);
543}
544
545template <typename... T>
546constexpr uint64_t isaExtsFlags(T... isa_exts) {
547 return ((1ULL << (isa_exts - 'a')) | ...);
548}
549
550constexpr uint64_t isaExtsFlags() {
551 return 0ULL;
552}
553
554const std::unordered_map<int, CSRMetadata> CSRData = {
556 {"ustatus", MISCREG_USTATUS, rvTypeFlags(RV64, RV32),
557 isaExtsFlags('n')}},
558 {CSR_UIE,
559 {"uie", MISCREG_UIE, rvTypeFlags(RV64, RV32), isaExtsFlags('n')}},
560 {CSR_UTVEC,
561 {"utvec", MISCREG_UTVEC, rvTypeFlags(RV64, RV32), isaExtsFlags('n')}},
563 {"uscratch", MISCREG_USCRATCH, rvTypeFlags(RV64, RV32),
564 isaExtsFlags('n')}},
565 {CSR_UEPC,
566 {"uepc", MISCREG_UEPC, rvTypeFlags(RV64, RV32), isaExtsFlags('n')}},
567 {CSR_UCAUSE,
568 {"ucause", MISCREG_UCAUSE, rvTypeFlags(RV64, RV32),
569 isaExtsFlags('n')}},
570 {CSR_UTVAL,
571 {"utval", MISCREG_UTVAL, rvTypeFlags(RV64, RV32), isaExtsFlags('n')}},
572 {CSR_UIP,
573 {"uip", MISCREG_UIP, rvTypeFlags(RV64, RV32), isaExtsFlags('n')}},
574 {CSR_FFLAGS,
575 {"fflags", MISCREG_FFLAGS, rvTypeFlags(RV64, RV32),
576 isaExtsFlags('f')}},
577 {CSR_FRM,
578 {"frm", MISCREG_FRM, rvTypeFlags(RV64, RV32), isaExtsFlags('f')}},
579 {CSR_FCSR,
580 {"fcsr", MISCREG_FCSR, rvTypeFlags(RV64, RV32), isaExtsFlags('f')}},
581 {CSR_CYCLE,
583 {CSR_TIME,
588 {"hpmcounter03", MISCREG_HPMCOUNTER03, rvTypeFlags(RV64, RV32),
589 isaExtsFlags()}},
591 {"hpmcounter04", MISCREG_HPMCOUNTER04, rvTypeFlags(RV64, RV32),
592 isaExtsFlags()}},
594 {"hpmcounter05", MISCREG_HPMCOUNTER05, rvTypeFlags(RV64, RV32),
595 isaExtsFlags()}},
597 {"hpmcounter06", MISCREG_HPMCOUNTER06, rvTypeFlags(RV64, RV32),
598 isaExtsFlags()}},
600 {"hpmcounter07", MISCREG_HPMCOUNTER07, rvTypeFlags(RV64, RV32),
601 isaExtsFlags()}},
603 {"hpmcounter08", MISCREG_HPMCOUNTER08, rvTypeFlags(RV64, RV32),
604 isaExtsFlags()}},
606 {"hpmcounter09", MISCREG_HPMCOUNTER09, rvTypeFlags(RV64, RV32),
607 isaExtsFlags()}},
609 {"hpmcounter10", MISCREG_HPMCOUNTER10, rvTypeFlags(RV64, RV32),
610 isaExtsFlags()}},
612 {"hpmcounter11", MISCREG_HPMCOUNTER11, rvTypeFlags(RV64, RV32),
613 isaExtsFlags()}},
615 {"hpmcounter12", MISCREG_HPMCOUNTER12, rvTypeFlags(RV64, RV32),
616 isaExtsFlags()}},
618 {"hpmcounter13", MISCREG_HPMCOUNTER13, rvTypeFlags(RV64, RV32),
619 isaExtsFlags()}},
621 {"hpmcounter14", MISCREG_HPMCOUNTER14, rvTypeFlags(RV64, RV32),
622 isaExtsFlags()}},
624 {"hpmcounter15", MISCREG_HPMCOUNTER15, rvTypeFlags(RV64, RV32),
625 isaExtsFlags()}},
627 {"hpmcounter16", MISCREG_HPMCOUNTER16, rvTypeFlags(RV64, RV32),
628 isaExtsFlags()}},
630 {"hpmcounter17", MISCREG_HPMCOUNTER17, rvTypeFlags(RV64, RV32),
631 isaExtsFlags()}},
633 {"hpmcounter18", MISCREG_HPMCOUNTER18, rvTypeFlags(RV64, RV32),
634 isaExtsFlags()}},
636 {"hpmcounter19", MISCREG_HPMCOUNTER19, rvTypeFlags(RV64, RV32),
637 isaExtsFlags()}},
639 {"hpmcounter20", MISCREG_HPMCOUNTER20, rvTypeFlags(RV64, RV32),
640 isaExtsFlags()}},
642 {"hpmcounter21", MISCREG_HPMCOUNTER21, rvTypeFlags(RV64, RV32),
643 isaExtsFlags()}},
645 {"hpmcounter22", MISCREG_HPMCOUNTER22, rvTypeFlags(RV64, RV32),
646 isaExtsFlags()}},
648 {"hpmcounter23", MISCREG_HPMCOUNTER23, rvTypeFlags(RV64, RV32),
649 isaExtsFlags()}},
651 {"hpmcounter24", MISCREG_HPMCOUNTER24, rvTypeFlags(RV64, RV32),
652 isaExtsFlags()}},
654 {"hpmcounter25", MISCREG_HPMCOUNTER25, rvTypeFlags(RV64, RV32),
655 isaExtsFlags()}},
657 {"hpmcounter26", MISCREG_HPMCOUNTER26, rvTypeFlags(RV64, RV32),
658 isaExtsFlags()}},
660 {"hpmcounter27", MISCREG_HPMCOUNTER27, rvTypeFlags(RV64, RV32),
661 isaExtsFlags()}},
663 {"hpmcounter28", MISCREG_HPMCOUNTER28, rvTypeFlags(RV64, RV32),
664 isaExtsFlags()}},
666 {"hpmcounter29", MISCREG_HPMCOUNTER29, rvTypeFlags(RV64, RV32),
667 isaExtsFlags()}},
669 {"hpmcounter30", MISCREG_HPMCOUNTER30, rvTypeFlags(RV64, RV32),
670 isaExtsFlags()}},
672 {"hpmcounter31", MISCREG_HPMCOUNTER31, rvTypeFlags(RV64, RV32),
673 isaExtsFlags()}},
674 {CSR_CYCLEH,
676 {CSR_TIMEH,
679 {"instreth", MISCREG_INSTRETH, rvTypeFlags(RV32), isaExtsFlags()}},
681 {"hpmcounter03h", MISCREG_HPMCOUNTER03H, rvTypeFlags(RV32),
682 isaExtsFlags()}},
684 {"hpmcounter04h", MISCREG_HPMCOUNTER04H, rvTypeFlags(RV32),
685 isaExtsFlags()}},
687 {"hpmcounter05h", MISCREG_HPMCOUNTER05H, rvTypeFlags(RV32),
688 isaExtsFlags()}},
690 {"hpmcounter06h", MISCREG_HPMCOUNTER06H, rvTypeFlags(RV32),
691 isaExtsFlags()}},
693 {"hpmcounter07h", MISCREG_HPMCOUNTER07H, rvTypeFlags(RV32),
694 isaExtsFlags()}},
696 {"hpmcounter08h", MISCREG_HPMCOUNTER08H, rvTypeFlags(RV32),
697 isaExtsFlags()}},
699 {"hpmcounter09h", MISCREG_HPMCOUNTER09H, rvTypeFlags(RV32),
700 isaExtsFlags()}},
702 {"hpmcounter10h", MISCREG_HPMCOUNTER10H, rvTypeFlags(RV32),
703 isaExtsFlags()}},
705 {"hpmcounter11h", MISCREG_HPMCOUNTER11H, rvTypeFlags(RV32),
706 isaExtsFlags()}},
708 {"hpmcounter12h", MISCREG_HPMCOUNTER12H, rvTypeFlags(RV32),
709 isaExtsFlags()}},
711 {"hpmcounter13h", MISCREG_HPMCOUNTER13H, rvTypeFlags(RV32),
712 isaExtsFlags()}},
714 {"hpmcounter14h", MISCREG_HPMCOUNTER14H, rvTypeFlags(RV32),
715 isaExtsFlags()}},
717 {"hpmcounter15h", MISCREG_HPMCOUNTER15H, rvTypeFlags(RV32),
718 isaExtsFlags()}},
720 {"hpmcounter16h", MISCREG_HPMCOUNTER16H, rvTypeFlags(RV32),
721 isaExtsFlags()}},
723 {"hpmcounter17h", MISCREG_HPMCOUNTER17H, rvTypeFlags(RV32),
724 isaExtsFlags()}},
726 {"hpmcounter18h", MISCREG_HPMCOUNTER18H, rvTypeFlags(RV32),
727 isaExtsFlags()}},
729 {"hpmcounter19h", MISCREG_HPMCOUNTER19H, rvTypeFlags(RV32),
730 isaExtsFlags()}},
732 {"hpmcounter20h", MISCREG_HPMCOUNTER20H, rvTypeFlags(RV32),
733 isaExtsFlags()}},
735 {"hpmcounter21h", MISCREG_HPMCOUNTER21H, rvTypeFlags(RV32),
736 isaExtsFlags()}},
738 {"hpmcounter22h", MISCREG_HPMCOUNTER22H, rvTypeFlags(RV32),
739 isaExtsFlags()}},
741 {"hpmcounter23h", MISCREG_HPMCOUNTER23H, rvTypeFlags(RV32),
742 isaExtsFlags()}},
744 {"hpmcounter24h", MISCREG_HPMCOUNTER24H, rvTypeFlags(RV32),
745 isaExtsFlags()}},
747 {"hpmcounter25h", MISCREG_HPMCOUNTER25H, rvTypeFlags(RV32),
748 isaExtsFlags()}},
750 {"hpmcounter26h", MISCREG_HPMCOUNTER26H, rvTypeFlags(RV32),
751 isaExtsFlags()}},
753 {"hpmcounter27h", MISCREG_HPMCOUNTER27H, rvTypeFlags(RV32),
754 isaExtsFlags()}},
756 {"hpmcounter28h", MISCREG_HPMCOUNTER28H, rvTypeFlags(RV32),
757 isaExtsFlags()}},
759 {"hpmcounter29h", MISCREG_HPMCOUNTER29H, rvTypeFlags(RV32),
760 isaExtsFlags()}},
762 {"hpmcounter30h", MISCREG_HPMCOUNTER30H, rvTypeFlags(RV32),
763 isaExtsFlags()}},
765 {"hpmcounter31h", MISCREG_HPMCOUNTER31H, rvTypeFlags(RV32),
766 isaExtsFlags()}},
767
769 {"sstatus", MISCREG_SSTATUS, rvTypeFlags(RV64, RV32),
770 isaExtsFlags('s')}},
772 {"sedeleg", MISCREG_SEDELEG, rvTypeFlags(RV64, RV32),
773 isaExtsFlags('s')}},
775 {"sideleg", MISCREG_SIDELEG, rvTypeFlags(RV64, RV32),
776 isaExtsFlags('s')}},
777 {CSR_SIE,
778 {"sie", MISCREG_SIE, rvTypeFlags(RV64, RV32), isaExtsFlags('s')}},
779 {CSR_STVEC,
780 {"stvec", MISCREG_STVEC, rvTypeFlags(RV64, RV32), isaExtsFlags('s')}},
782 {"scounteren", MISCREG_SCOUNTEREN, rvTypeFlags(RV64, RV32),
783 isaExtsFlags('s')}},
785 {"sscratch", MISCREG_SSCRATCH, rvTypeFlags(RV64, RV32),
786 isaExtsFlags('s')}},
787 {CSR_SEPC,
788 {"sepc", MISCREG_SEPC, rvTypeFlags(RV64, RV32), isaExtsFlags('s')}},
789 {CSR_SCAUSE,
790 {"scause", MISCREG_SCAUSE, rvTypeFlags(RV64, RV32),
791 isaExtsFlags('s')}},
792 {CSR_STVAL,
793 {"stval", MISCREG_STVAL, rvTypeFlags(RV64, RV32), isaExtsFlags('s')}},
794 {CSR_SIP,
795 {"sip", MISCREG_SIP, rvTypeFlags(RV64, RV32), isaExtsFlags('s')}},
796 {CSR_SATP,
797 {"satp", MISCREG_SATP, rvTypeFlags(RV64, RV32), isaExtsFlags('s')}},
799 {"senvcfg", MISCREG_SENVCFG, rvTypeFlags(RV64, RV32),
800 isaExtsFlags('s')}},
801
803 {"mvendorid", MISCREG_VENDORID, rvTypeFlags(RV64, RV32),
804 isaExtsFlags()}},
806 {"marchid", MISCREG_ARCHID, rvTypeFlags(RV64, RV32), isaExtsFlags()}},
807 {CSR_MIMPID,
810 {"mhartid", MISCREG_HARTID, rvTypeFlags(RV64, RV32), isaExtsFlags()}},
813 {CSR_MISA,
819 {CSR_MIE,
821 {CSR_MTVEC,
824 {"mcounteren", MISCREG_MCOUNTEREN, rvTypeFlags(RV64, RV32),
825 isaExtsFlags()}},
827 {"mstatush", MISCREG_MSTATUSH, rvTypeFlags(RV32), isaExtsFlags()}},
829 {"mscratch", MISCREG_MSCRATCH, rvTypeFlags(RV64, RV32),
830 isaExtsFlags()}},
831 {CSR_MEPC,
833 {CSR_MCAUSE,
835 {CSR_MTVAL,
837 {CSR_MIP,
841 // pmpcfg1 rv32 only
843 {"pmpcfg1", MISCREG_PMPCFG1, rvTypeFlags(RV32), isaExtsFlags()}},
846 // pmpcfg3 rv32 only
848 {"pmpcfg3", MISCREG_PMPCFG3, rvTypeFlags(RV32), isaExtsFlags()}},
850 {"pmpaddr0", MISCREG_PMPADDR00, rvTypeFlags(RV64, RV32),
851 isaExtsFlags()}},
853 {"pmpaddr1", MISCREG_PMPADDR01, rvTypeFlags(RV64, RV32),
854 isaExtsFlags()}},
856 {"pmpaddr2", MISCREG_PMPADDR02, rvTypeFlags(RV64, RV32),
857 isaExtsFlags()}},
859 {"pmpaddr3", MISCREG_PMPADDR03, rvTypeFlags(RV64, RV32),
860 isaExtsFlags()}},
862 {"pmpaddr4", MISCREG_PMPADDR04, rvTypeFlags(RV64, RV32),
863 isaExtsFlags()}},
865 {"pmpaddr5", MISCREG_PMPADDR05, rvTypeFlags(RV64, RV32),
866 isaExtsFlags()}},
868 {"pmpaddr6", MISCREG_PMPADDR06, rvTypeFlags(RV64, RV32),
869 isaExtsFlags()}},
871 {"pmpaddr7", MISCREG_PMPADDR07, rvTypeFlags(RV64, RV32),
872 isaExtsFlags()}},
874 {"pmpaddr8", MISCREG_PMPADDR08, rvTypeFlags(RV64, RV32),
875 isaExtsFlags()}},
877 {"pmpaddr9", MISCREG_PMPADDR09, rvTypeFlags(RV64, RV32),
878 isaExtsFlags()}},
880 {"pmpaddr10", MISCREG_PMPADDR10, rvTypeFlags(RV64, RV32),
881 isaExtsFlags()}},
883 {"pmpaddr11", MISCREG_PMPADDR11, rvTypeFlags(RV64, RV32),
884 isaExtsFlags()}},
886 {"pmpaddr12", MISCREG_PMPADDR12, rvTypeFlags(RV64, RV32),
887 isaExtsFlags()}},
889 {"pmpaddr13", MISCREG_PMPADDR13, rvTypeFlags(RV64, RV32),
890 isaExtsFlags()}},
892 {"pmpaddr14", MISCREG_PMPADDR14, rvTypeFlags(RV64, RV32),
893 isaExtsFlags()}},
895 {"pmpaddr15", MISCREG_PMPADDR15, rvTypeFlags(RV64, RV32),
896 isaExtsFlags()}},
897 {CSR_MCYCLE,
900 {"minstret", MISCREG_INSTRET, rvTypeFlags(RV64, RV32),
901 isaExtsFlags()}},
903 {"mhpmcounter03", MISCREG_HPMCOUNTER03, rvTypeFlags(RV64, RV32),
904 isaExtsFlags()}},
906 {"mhpmcounter04", MISCREG_HPMCOUNTER04, rvTypeFlags(RV64, RV32),
907 isaExtsFlags()}},
909 {"mhpmcounter05", MISCREG_HPMCOUNTER05, rvTypeFlags(RV64, RV32),
910 isaExtsFlags()}},
912 {"mhpmcounter06", MISCREG_HPMCOUNTER06, rvTypeFlags(RV64, RV32),
913 isaExtsFlags()}},
915 {"mhpmcounter07", MISCREG_HPMCOUNTER07, rvTypeFlags(RV64, RV32),
916 isaExtsFlags()}},
918 {"mhpmcounter08", MISCREG_HPMCOUNTER08, rvTypeFlags(RV64, RV32),
919 isaExtsFlags()}},
921 {"mhpmcounter09", MISCREG_HPMCOUNTER09, rvTypeFlags(RV64, RV32),
922 isaExtsFlags()}},
924 {"mhpmcounter10", MISCREG_HPMCOUNTER10, rvTypeFlags(RV64, RV32),
925 isaExtsFlags()}},
927 {"mhpmcounter11", MISCREG_HPMCOUNTER11, rvTypeFlags(RV64, RV32),
928 isaExtsFlags()}},
930 {"mhpmcounter12", MISCREG_HPMCOUNTER12, rvTypeFlags(RV64, RV32),
931 isaExtsFlags()}},
933 {"mhpmcounter13", MISCREG_HPMCOUNTER13, rvTypeFlags(RV64, RV32),
934 isaExtsFlags()}},
936 {"mhpmcounter14", MISCREG_HPMCOUNTER14, rvTypeFlags(RV64, RV32),
937 isaExtsFlags()}},
939 {"mhpmcounter15", MISCREG_HPMCOUNTER15, rvTypeFlags(RV64, RV32),
940 isaExtsFlags()}},
942 {"mhpmcounter16", MISCREG_HPMCOUNTER16, rvTypeFlags(RV64, RV32),
943 isaExtsFlags()}},
945 {"mhpmcounter17", MISCREG_HPMCOUNTER17, rvTypeFlags(RV64, RV32),
946 isaExtsFlags()}},
948 {"mhpmcounter18", MISCREG_HPMCOUNTER18, rvTypeFlags(RV64, RV32),
949 isaExtsFlags()}},
951 {"mhpmcounter19", MISCREG_HPMCOUNTER19, rvTypeFlags(RV64, RV32),
952 isaExtsFlags()}},
954 {"mhpmcounter20", MISCREG_HPMCOUNTER20, rvTypeFlags(RV64, RV32),
955 isaExtsFlags()}},
957 {"mhpmcounter21", MISCREG_HPMCOUNTER21, rvTypeFlags(RV64, RV32),
958 isaExtsFlags()}},
960 {"mhpmcounter22", MISCREG_HPMCOUNTER22, rvTypeFlags(RV64, RV32),
961 isaExtsFlags()}},
963 {"mhpmcounter23", MISCREG_HPMCOUNTER23, rvTypeFlags(RV64, RV32),
964 isaExtsFlags()}},
966 {"mhpmcounter24", MISCREG_HPMCOUNTER24, rvTypeFlags(RV64, RV32),
967 isaExtsFlags()}},
969 {"mhpmcounter25", MISCREG_HPMCOUNTER25, rvTypeFlags(RV64, RV32),
970 isaExtsFlags()}},
972 {"mhpmcounter26", MISCREG_HPMCOUNTER26, rvTypeFlags(RV64, RV32),
973 isaExtsFlags()}},
975 {"mhpmcounter27", MISCREG_HPMCOUNTER27, rvTypeFlags(RV64, RV32),
976 isaExtsFlags()}},
978 {"mhpmcounter28", MISCREG_HPMCOUNTER28, rvTypeFlags(RV64, RV32),
979 isaExtsFlags()}},
981 {"mhpmcounter29", MISCREG_HPMCOUNTER29, rvTypeFlags(RV64, RV32),
982 isaExtsFlags()}},
984 {"mhpmcounter30", MISCREG_HPMCOUNTER30, rvTypeFlags(RV64, RV32),
985 isaExtsFlags()}},
987 {"mhpmcounter31", MISCREG_HPMCOUNTER31, rvTypeFlags(RV64, RV32),
988 isaExtsFlags()}},
989
991 {"mcycleh", MISCREG_CYCLEH, rvTypeFlags(RV32), isaExtsFlags()}},
993 {"minstreth", MISCREG_INSTRETH, rvTypeFlags(RV32), isaExtsFlags()}},
995 {"mhpmcounter03h", MISCREG_HPMCOUNTER03H, rvTypeFlags(RV32),
996 isaExtsFlags()}},
998 {"mhpmcounter04h", MISCREG_HPMCOUNTER04H, rvTypeFlags(RV32),
999 isaExtsFlags()}},
1001 {"mhpmcounter05h", MISCREG_HPMCOUNTER05H, rvTypeFlags(RV32),
1002 isaExtsFlags()}},
1004 {"mhpmcounter06h", MISCREG_HPMCOUNTER06H, rvTypeFlags(RV32),
1005 isaExtsFlags()}},
1007 {"mhpmcounter07h", MISCREG_HPMCOUNTER07H, rvTypeFlags(RV32),
1008 isaExtsFlags()}},
1010 {"mhpmcounter08h", MISCREG_HPMCOUNTER08H, rvTypeFlags(RV32),
1011 isaExtsFlags()}},
1013 {"mhpmcounter09h", MISCREG_HPMCOUNTER09H, rvTypeFlags(RV32),
1014 isaExtsFlags()}},
1016 {"mhpmcounter10h", MISCREG_HPMCOUNTER10H, rvTypeFlags(RV32),
1017 isaExtsFlags()}},
1019 {"mhpmcounter11h", MISCREG_HPMCOUNTER11H, rvTypeFlags(RV32),
1020 isaExtsFlags()}},
1022 {"mhpmcounter12h", MISCREG_HPMCOUNTER12H, rvTypeFlags(RV32),
1023 isaExtsFlags()}},
1025 {"mhpmcounter13h", MISCREG_HPMCOUNTER13H, rvTypeFlags(RV32),
1026 isaExtsFlags()}},
1028 {"mhpmcounter14h", MISCREG_HPMCOUNTER14H, rvTypeFlags(RV32),
1029 isaExtsFlags()}},
1031 {"mhpmcounter15h", MISCREG_HPMCOUNTER15H, rvTypeFlags(RV32),
1032 isaExtsFlags()}},
1034 {"mhpmcounter16h", MISCREG_HPMCOUNTER16H, rvTypeFlags(RV32),
1035 isaExtsFlags()}},
1037 {"mhpmcounter17h", MISCREG_HPMCOUNTER17H, rvTypeFlags(RV32),
1038 isaExtsFlags()}},
1040 {"mhpmcounter18h", MISCREG_HPMCOUNTER18H, rvTypeFlags(RV32),
1041 isaExtsFlags()}},
1043 {"mhpmcounter19h", MISCREG_HPMCOUNTER19H, rvTypeFlags(RV32),
1044 isaExtsFlags()}},
1046 {"mhpmcounter20h", MISCREG_HPMCOUNTER20H, rvTypeFlags(RV32),
1047 isaExtsFlags()}},
1049 {"mhpmcounter21h", MISCREG_HPMCOUNTER21H, rvTypeFlags(RV32),
1050 isaExtsFlags()}},
1052 {"mhpmcounter22h", MISCREG_HPMCOUNTER22H, rvTypeFlags(RV32),
1053 isaExtsFlags()}},
1055 {"mhpmcounter23h", MISCREG_HPMCOUNTER23H, rvTypeFlags(RV32),
1056 isaExtsFlags()}},
1058 {"mhpmcounter24h", MISCREG_HPMCOUNTER24H, rvTypeFlags(RV32),
1059 isaExtsFlags()}},
1061 {"mhpmcounter25h", MISCREG_HPMCOUNTER25H, rvTypeFlags(RV32),
1062 isaExtsFlags()}},
1064 {"mhpmcounter26h", MISCREG_HPMCOUNTER26H, rvTypeFlags(RV32),
1065 isaExtsFlags()}},
1067 {"mhpmcounter27h", MISCREG_HPMCOUNTER27H, rvTypeFlags(RV32),
1068 isaExtsFlags()}},
1070 {"mhpmcounter28h", MISCREG_HPMCOUNTER28H, rvTypeFlags(RV32),
1071 isaExtsFlags()}},
1073 {"mhpmcounter29h", MISCREG_HPMCOUNTER29H, rvTypeFlags(RV32),
1074 isaExtsFlags()}},
1076 {"mhpmcounter30h", MISCREG_HPMCOUNTER30H, rvTypeFlags(RV32),
1077 isaExtsFlags()}},
1079 {"mhpmcounter31h", MISCREG_HPMCOUNTER31H, rvTypeFlags(RV32),
1080 isaExtsFlags()}},
1081
1083 {"mhpmevent03", MISCREG_HPMEVENT03, rvTypeFlags(RV64, RV32),
1084 isaExtsFlags()}},
1086 {"mhpmevent04", MISCREG_HPMEVENT04, rvTypeFlags(RV64, RV32),
1087 isaExtsFlags()}},
1089 {"mhpmevent05", MISCREG_HPMEVENT05, rvTypeFlags(RV64, RV32),
1090 isaExtsFlags()}},
1092 {"mhpmevent06", MISCREG_HPMEVENT06, rvTypeFlags(RV64, RV32),
1093 isaExtsFlags()}},
1095 {"mhpmevent07", MISCREG_HPMEVENT07, rvTypeFlags(RV64, RV32),
1096 isaExtsFlags()}},
1098 {"mhpmevent08", MISCREG_HPMEVENT08, rvTypeFlags(RV64, RV32),
1099 isaExtsFlags()}},
1101 {"mhpmevent09", MISCREG_HPMEVENT09, rvTypeFlags(RV64, RV32),
1102 isaExtsFlags()}},
1104 {"mhpmevent10", MISCREG_HPMEVENT10, rvTypeFlags(RV64, RV32),
1105 isaExtsFlags()}},
1107 {"mhpmevent11", MISCREG_HPMEVENT11, rvTypeFlags(RV64, RV32),
1108 isaExtsFlags()}},
1110 {"mhpmevent12", MISCREG_HPMEVENT12, rvTypeFlags(RV64, RV32),
1111 isaExtsFlags()}},
1113 {"mhpmevent13", MISCREG_HPMEVENT13, rvTypeFlags(RV64, RV32),
1114 isaExtsFlags()}},
1116 {"mhpmevent14", MISCREG_HPMEVENT14, rvTypeFlags(RV64, RV32),
1117 isaExtsFlags()}},
1119 {"mhpmevent15", MISCREG_HPMEVENT15, rvTypeFlags(RV64, RV32),
1120 isaExtsFlags()}},
1122 {"mhpmevent16", MISCREG_HPMEVENT16, rvTypeFlags(RV64, RV32),
1123 isaExtsFlags()}},
1125 {"mhpmevent17", MISCREG_HPMEVENT17, rvTypeFlags(RV64, RV32),
1126 isaExtsFlags()}},
1128 {"mhpmevent18", MISCREG_HPMEVENT18, rvTypeFlags(RV64, RV32),
1129 isaExtsFlags()}},
1131 {"mhpmevent19", MISCREG_HPMEVENT19, rvTypeFlags(RV64, RV32),
1132 isaExtsFlags()}},
1134 {"mhpmevent20", MISCREG_HPMEVENT20, rvTypeFlags(RV64, RV32),
1135 isaExtsFlags()}},
1137 {"mhpmevent21", MISCREG_HPMEVENT21, rvTypeFlags(RV64, RV32),
1138 isaExtsFlags()}},
1140 {"mhpmevent22", MISCREG_HPMEVENT22, rvTypeFlags(RV64, RV32),
1141 isaExtsFlags()}},
1143 {"mhpmevent23", MISCREG_HPMEVENT23, rvTypeFlags(RV64, RV32),
1144 isaExtsFlags()}},
1146 {"mhpmevent24", MISCREG_HPMEVENT24, rvTypeFlags(RV64, RV32),
1147 isaExtsFlags()}},
1149 {"mhpmevent25", MISCREG_HPMEVENT25, rvTypeFlags(RV64, RV32),
1150 isaExtsFlags()}},
1152 {"mhpmevent26", MISCREG_HPMEVENT26, rvTypeFlags(RV64, RV32),
1153 isaExtsFlags()}},
1155 {"mhpmevent27", MISCREG_HPMEVENT27, rvTypeFlags(RV64, RV32),
1156 isaExtsFlags()}},
1158 {"mhpmevent28", MISCREG_HPMEVENT28, rvTypeFlags(RV64, RV32),
1159 isaExtsFlags()}},
1161 {"mhpmevent29", MISCREG_HPMEVENT29, rvTypeFlags(RV64, RV32),
1162 isaExtsFlags()}},
1164 {"mhpmevent30", MISCREG_HPMEVENT30, rvTypeFlags(RV64, RV32),
1165 isaExtsFlags()}},
1167 {"mhpmevent31", MISCREG_HPMEVENT31, rvTypeFlags(RV64, RV32),
1168 isaExtsFlags()}},
1169
1170 {CSR_TSELECT,
1171 {"tselect", MISCREG_TSELECT, rvTypeFlags(RV64, RV32), isaExtsFlags()}},
1172 {CSR_TDATA1,
1173 {"tdata1", MISCREG_TDATA1, rvTypeFlags(RV64, RV32), isaExtsFlags()}},
1174 {CSR_TDATA2,
1175 {"tdata2", MISCREG_TDATA2, rvTypeFlags(RV64, RV32), isaExtsFlags()}},
1176 {CSR_TDATA3,
1177 {"tdata3", MISCREG_TDATA3, rvTypeFlags(RV64, RV32), isaExtsFlags()}},
1178 {CSR_DCSR,
1180 {CSR_DPC,
1182 {CSR_DSCRATCH,
1183 {"dscratch", MISCREG_DSCRATCH, rvTypeFlags(RV64, RV32),
1184 isaExtsFlags()}},
1185
1186 {CSR_VSTART,
1187 {"vstart", MISCREG_VSTART, rvTypeFlags(RV64, RV32),
1188 isaExtsFlags('v')}},
1189 {CSR_VXSAT,
1190 {"vxsat", MISCREG_VXSAT, rvTypeFlags(RV64, RV32), isaExtsFlags('v')}},
1191 {CSR_VXRM,
1192 {"vxrm", MISCREG_VXRM, rvTypeFlags(RV64, RV32), isaExtsFlags('v')}},
1193 {CSR_VCSR,
1194 {"vcsr", MISCREG_VCSR, rvTypeFlags(RV64, RV32), isaExtsFlags('v')}},
1195 {CSR_VL,
1196 {"vl", MISCREG_VL, rvTypeFlags(RV64, RV32), isaExtsFlags('v')}},
1197 {CSR_VTYPE,
1198 {"vtype", MISCREG_VTYPE, rvTypeFlags(RV64, RV32), isaExtsFlags('v')}},
1199 {CSR_VLENB,
1200 {"VLENB", MISCREG_VLENB, rvTypeFlags(RV64, RV32), isaExtsFlags('v')}},
1201
1203 {"mnscratch", MISCREG_MNSCRATCH, rvTypeFlags(RV64, RV32),
1204 isaExtsFlags(), true}},
1205 {CSR_MNEPC,
1207 true}},
1208 {CSR_MNCAUSE,
1210 true}},
1211 {CSR_MNSTATUS,
1212 {"mnstatus", MISCREG_MNSTATUS, rvTypeFlags(RV64, RV32),
1213 isaExtsFlags(), true}},
1214
1215 {CSR_JVT,
1217};
1218
1227 Bitfield<63> rv64_sd;
1228 Bitfield<35, 34> sxl;
1229 Bitfield<33, 32> uxl;
1230 Bitfield<31> rv32_sd;
1231 Bitfield<22> tsr;
1232 Bitfield<21> tw;
1233 Bitfield<20> tvm;
1234 Bitfield<19> mxr;
1235 Bitfield<18> sum;
1236 Bitfield<17> mprv;
1237 Bitfield<16, 15> xs;
1238 Bitfield<14, 13> fs;
1239 Bitfield<12, 11> mpp;
1240 Bitfield<10, 9> vs;
1241 Bitfield<8> spp;
1242 Bitfield<7> mpie;
1243 Bitfield<5> spie;
1244 Bitfield<4> upie;
1245 Bitfield<3> mie;
1246 Bitfield<1> sie;
1247 Bitfield<0> uie;
1249
1250
1255BitUnion64(NSTATUS)
1256 Bitfield<12, 11> mnpp;
1257 Bitfield<7> mnv;
1258 Bitfield<3> nmie;
1260
1266BitUnion64(MISA)
1267 Bitfield<63, 62> rv64_mxl;
1268 Bitfield<31, 30> rv32_mxl;
1269 Bitfield<23> rvx;
1270 Bitfield<21> rvv;
1271 Bitfield<20> rvu;
1272 Bitfield<19> rvt;
1273 Bitfield<18> rvs;
1274 Bitfield<16> rvq;
1275 Bitfield<15> rvp;
1276 Bitfield<13> rvn;
1277 Bitfield<12> rvm;
1278 Bitfield<11> rvl;
1279 Bitfield<10> rvk;
1280 Bitfield<9> rvj;
1281 Bitfield<8> rvi;
1282 Bitfield<7> rvh;
1283 Bitfield<6> rvg;
1284 Bitfield<5> rvf;
1285 Bitfield<4> rve;
1286 Bitfield<3> rvd;
1287 Bitfield<2> rvc;
1288 Bitfield<1> rvb;
1289 Bitfield<0> rva;
1291
1299 Bitfield<63,16> local;
1300 Bitfield<11> mei;
1301 Bitfield<9> sei;
1302 Bitfield<8> uei;
1303 Bitfield<7> mti;
1304 Bitfield<5> sti;
1305 Bitfield<4> uti;
1306 Bitfield<3> msi;
1307 Bitfield<1> ssi;
1308 Bitfield<0> usi;
1310
1311
1312// From the RISCV specification version 20240411, volume 2,
1313// section 10.1.10, page 98
1314BitUnion64(SENVCFG)
1315 Bitfield<63,34> wpri_1;
1316 Bitfield<33,32> pmm;
1317 Bitfield<31,8> wpri_2;
1318 Bitfield<7> cbze;
1319 Bitfield<6> cbcfe;
1320 Bitfield<5,4> cbie;
1321 Bitfield<3,1> wpri_3;
1322 Bitfield<0> fiom;
1324
1325BitUnion64(JVT)
1326 Bitfield<63,6> base;
1327 Bitfield<5,0> mode;
1329
1330const off_t MXL_OFFSETS[enums::Num_RiscvType] = {
1331 [RV32] = (sizeof(uint32_t) * 8 - 2),
1332 [RV64] = (sizeof(uint64_t) * 8 - 2),
1333};
1334const off_t MBE_OFFSET[enums::Num_RiscvType] = {
1335 [RV32] = 5,
1336 [RV64] = 37,
1337};
1338const off_t SBE_OFFSET[enums::Num_RiscvType] = {
1339 [RV32] = 4,
1340 [RV64] = 36,
1341};
1342const off_t SXL_OFFSET = 34;
1343const off_t UXL_OFFSET = 32;
1344const off_t FS_OFFSET = 13;
1345const off_t VS_OFFSET = 9;
1346const off_t FRM_OFFSET = 5;
1347
1348const RegVal ISA_MXL_MASKS[enums::Num_RiscvType] = {
1349 [RV32] = 3ULL << MXL_OFFSETS[RV32],
1350 [RV64] = 3ULL << MXL_OFFSETS[RV64],
1351};
1353const RegVal ISA_EXT_C_MASK = 1UL << ('c' - 'a');
1354const RegVal MISA_MASKS[enums::Num_RiscvType] = {
1357};
1358
1359
1360const RegVal STATUS_SD_MASKS[enums::Num_RiscvType] = {
1361 [RV32] = 1ULL << ((sizeof(uint32_t) * 8) - 1),
1362 [RV64] = 1ULL << ((sizeof(uint64_t) * 8) - 1),
1363};
1364const RegVal STATUS_MBE_MASK[enums::Num_RiscvType] = {
1365 [RV32] = 1ULL << MBE_OFFSET[RV32],
1366 [RV64] = 1ULL << MBE_OFFSET[RV64],
1367};
1368const RegVal STATUS_SBE_MASK[enums::Num_RiscvType] = {
1369 [RV32] = 1ULL << SBE_OFFSET[RV32],
1370 [RV64] = 1ULL << SBE_OFFSET[RV64],
1371};
1374const RegVal STATUS_TSR_MASK = 1ULL << 22;
1375const RegVal STATUS_TW_MASK = 1ULL << 21;
1376const RegVal STATUS_TVM_MASK = 1ULL << 20;
1377const RegVal STATUS_MXR_MASK = 1ULL << 19;
1378const RegVal STATUS_SUM_MASK = 1ULL << 18;
1379const RegVal STATUS_MPRV_MASK = 1ULL << 17;
1380const RegVal STATUS_XS_MASK = 3ULL << 15;
1382const RegVal STATUS_MPP_MASK = 3ULL << 11;
1384const RegVal STATUS_SPP_MASK = 1ULL << 8;
1385const RegVal STATUS_MPIE_MASK = 1ULL << 7;
1386const RegVal STATUS_SPIE_MASK = 1ULL << 5;
1387const RegVal STATUS_UPIE_MASK = 1ULL << 4;
1388const RegVal STATUS_MIE_MASK = 1ULL << 3;
1389const RegVal STATUS_SIE_MASK = 1ULL << 1;
1390const RegVal STATUS_UIE_MASK = 1ULL << 0;
1391const RegVal
1392MSTATUS_MASKS[enums::Num_RiscvType][enums::Num_PrivilegeModeSet] = {
1393 [RV32] = {
1394 [enums::M] = STATUS_SD_MASKS[RV32] |
1397 [enums::MU] = STATUS_SD_MASKS[RV32] | STATUS_TW_MASK |
1401 [enums::MNU] = STATUS_SD_MASKS[RV32] | STATUS_TW_MASK |
1407 [enums::MSU] = STATUS_SD_MASKS[RV32] | STATUS_TSR_MASK |
1414 [enums::MNSU] = STATUS_SD_MASKS[RV32] | STATUS_TSR_MASK |
1422 },
1423 [RV64] = {
1424 [enums::M] = STATUS_SD_MASKS[RV64] | STATUS_MBE_MASK[RV64] |
1427 [enums::MU] = STATUS_SD_MASKS[RV64] | STATUS_MBE_MASK[RV64] |
1431 [enums::MNU] = STATUS_SD_MASKS[RV64] | STATUS_MBE_MASK[RV64] |
1437 [enums::MSU] = STATUS_SD_MASKS[RV64] |
1446 [enums::MNSU] = STATUS_SD_MASKS[RV64] |
1455 },
1456};
1457// rv32 only
1458const RegVal MSTATUSH_MASKS[enums::Num_PrivilegeModeSet] = {
1459 [enums::M] = STATUS_MBE_MASK[RV32],
1460 [enums::MU] = STATUS_MBE_MASK[RV32],
1461 [enums::MNU] = STATUS_MBE_MASK[RV32],
1462 [enums::MSU] = STATUS_MBE_MASK[RV32] | STATUS_SBE_MASK[RV32],
1463 [enums::MNSU] = STATUS_MBE_MASK[RV32] | STATUS_SBE_MASK[RV32],
1464};
1465const RegVal
1466SSTATUS_MASKS[enums::Num_RiscvType][enums::Num_PrivilegeModeSet] = {
1467 [RV32] = {
1468 [enums::M] = 0ULL,
1469 [enums::MU] = 0ULL,
1470 [enums::MNU] = 0ULL,
1471 [enums::MSU] = STATUS_SD_MASKS[RV32] | STATUS_MXR_MASK |
1475 [enums::MNSU] = STATUS_SD_MASKS[RV32] | STATUS_MXR_MASK |
1480 },
1481 [RV64] = {
1482 [enums::M] = 0ULL,
1483 [enums::MU] = 0ULL,
1484 [enums::MNU] = 0ULL,
1485 [enums::MSU] = STATUS_SD_MASKS[RV64] | STATUS_UXL_MASK |
1489 [enums::MNSU] = STATUS_SD_MASKS[RV64] | STATUS_UXL_MASK |
1494 },
1495};
1496const RegVal
1497USTATUS_MASKS[enums::Num_RiscvType][enums::Num_PrivilegeModeSet] = {
1498 [RV32] = {
1499 [enums::M] = 0ULL,
1500 [enums::MU] = 0ULL,
1501 [enums::MNU] = STATUS_SD_MASKS[RV32] |
1504 [enums::MSU] = 0ULL,
1505 [enums::MNSU] = STATUS_SD_MASKS[RV32] | STATUS_MXR_MASK |
1509 },
1510 [RV64] = {
1511 [enums::M] = 0ULL,
1512 [enums::MU] = 0ULL,
1513 [enums::MNU] = STATUS_SD_MASKS[RV64] |
1516 [enums::MSU] = 0ULL,
1517 [enums::MNSU] = STATUS_SD_MASKS[RV64] | STATUS_MXR_MASK |
1521 },
1522};
1523
1524const RegVal LOCAL_MASK = mask(63,16);
1525const RegVal MEI_MASK = 1ULL << 11;
1526const RegVal SEI_MASK = 1ULL << 9;
1527const RegVal UEI_MASK = 1ULL << 8;
1528const RegVal MTI_MASK = 1ULL << 7;
1529const RegVal STI_MASK = 1ULL << 5;
1530const RegVal UTI_MASK = 1ULL << 4;
1531const RegVal MSI_MASK = 1ULL << 3;
1532const RegVal SSI_MASK = 1ULL << 1;
1533const RegVal USI_MASK = 1ULL << 0;
1534const RegVal MIP_MASK[enums::Num_PrivilegeModeSet] = {
1535 [enums::M] = LOCAL_MASK,
1536 [enums::MU] = LOCAL_MASK,
1537 [enums::MNU] = LOCAL_MASK | UEI_MASK | UTI_MASK | USI_MASK,
1538 [enums::MSU] = LOCAL_MASK | SEI_MASK | STI_MASK | SSI_MASK,
1539 [enums::MNSU] = LOCAL_MASK | SEI_MASK | UEI_MASK | STI_MASK | UTI_MASK |
1541};
1542const RegVal MI_MASK[enums::Num_PrivilegeModeSet] = {
1543 [enums::M] = LOCAL_MASK | MEI_MASK| MTI_MASK | MSI_MASK,
1544 [enums::MU] = LOCAL_MASK | MEI_MASK| MTI_MASK | MSI_MASK,
1545 [enums::MNU] = LOCAL_MASK | MEI_MASK | UEI_MASK | MTI_MASK | UTI_MASK |
1547 [enums::MSU] = LOCAL_MASK | MEI_MASK | SEI_MASK | MTI_MASK | STI_MASK |
1549 [enums::MNSU] = LOCAL_MASK | MEI_MASK | SEI_MASK | UEI_MASK |
1552};
1553const RegVal SIP_MASK[enums::Num_PrivilegeModeSet] = {
1554 [enums::M] = LOCAL_MASK,
1555 [enums::MU] = LOCAL_MASK,
1556 [enums::MNU] = LOCAL_MASK | UEI_MASK | UTI_MASK | USI_MASK,
1557 [enums::MSU] = LOCAL_MASK | SSI_MASK,
1558 [enums::MNSU] = LOCAL_MASK | UEI_MASK | UTI_MASK | SSI_MASK | USI_MASK,
1559};
1560const RegVal SI_MASK[enums::Num_PrivilegeModeSet] = {
1561 [enums::M] = LOCAL_MASK,
1562 [enums::MU] = LOCAL_MASK,
1563 [enums::MNU] = LOCAL_MASK | UEI_MASK | UTI_MASK | USI_MASK,
1564 [enums::MSU] = LOCAL_MASK | SEI_MASK | STI_MASK | SSI_MASK,
1565 [enums::MNSU] = LOCAL_MASK | SEI_MASK | UEI_MASK | STI_MASK | UTI_MASK |
1567};
1568const RegVal MIDELEG_MASK[enums::Num_PrivilegeModeSet] = {
1569 [enums::M] = LOCAL_MASK,
1570 [enums::MU] = LOCAL_MASK,
1571 [enums::MNU] = LOCAL_MASK | UEI_MASK | UTI_MASK | USI_MASK,
1572 [enums::MSU] = LOCAL_MASK | SEI_MASK | STI_MASK | SSI_MASK,
1573 [enums::MNSU] = LOCAL_MASK | SEI_MASK | UEI_MASK | STI_MASK | UTI_MASK |
1575};
1576const RegVal UI_MASK[enums::Num_PrivilegeModeSet] = {
1577 [enums::M] = LOCAL_MASK,
1578 [enums::MU] = LOCAL_MASK,
1579 [enums::MNU] = LOCAL_MASK | UEI_MASK | UTI_MASK | USI_MASK,
1580 [enums::MSU] = LOCAL_MASK,
1581 [enums::MNSU] = LOCAL_MASK | UEI_MASK | UTI_MASK | USI_MASK,
1582};
1583const RegVal SIDELEG_MASK[enums::Num_PrivilegeModeSet] = {
1584 [enums::M] = LOCAL_MASK,
1585 [enums::MU] = LOCAL_MASK,
1586 [enums::MNU] = LOCAL_MASK | UEI_MASK | UTI_MASK | USI_MASK,
1587 [enums::MSU] = LOCAL_MASK,
1588 [enums::MNSU] = LOCAL_MASK | UEI_MASK | UTI_MASK | USI_MASK,
1589};
1590const RegVal FFLAGS_MASK = (1 << FRM_OFFSET) - 1;
1591const RegVal FRM_MASK = 0x7;
1592
1593const RegVal CAUSE_INTERRUPT_MASKS[enums::Num_RiscvType] = {
1594 [RV32] = (1ULL << 31),
1595 [RV64] = (1ULL << 63),
1596};
1597
1598const std::unordered_map<int, RegVal>
1599CSRMasks[enums::Num_RiscvType][enums::Num_PrivilegeModeSet] = {
1600 [RV32] = {
1601 [enums::M] = {
1602 {CSR_USTATUS, USTATUS_MASKS[RV32][enums::M]},
1603 {CSR_UIE, UI_MASK[enums::M]},
1604 {CSR_UIP, UI_MASK[enums::M]},
1606 {CSR_FRM, FRM_MASK},
1608 {CSR_SSTATUS, SSTATUS_MASKS[RV32][enums::M]},
1609 {CSR_SIE, SI_MASK[enums::M]},
1610 {CSR_SIP, SIP_MASK[enums::M]},
1611 {CSR_MSTATUS, MSTATUS_MASKS[RV32][enums::M]},
1613 {CSR_MIE, MI_MASK[enums::M]},
1614 {CSR_MSTATUSH, MSTATUSH_MASKS[enums::M]},
1615 {CSR_MIP, MIP_MASK[enums::M]},
1616 },
1617 [enums::MU] = {
1618 {CSR_USTATUS, USTATUS_MASKS[RV32][enums::MU]},
1619 {CSR_UIE, UI_MASK[enums::MU]},
1620 {CSR_UIP, UI_MASK[enums::MU]},
1622 {CSR_FRM, FRM_MASK},
1624 {CSR_SSTATUS, SSTATUS_MASKS[RV32][enums::MU]},
1625 {CSR_SIE, SI_MASK[enums::MU]},
1626 {CSR_SIP, SIP_MASK[enums::MU]},
1627 {CSR_MSTATUS, MSTATUS_MASKS[RV32][enums::MU]},
1629 {CSR_MIE, MI_MASK[enums::MU]},
1630 {CSR_MSTATUSH, MSTATUSH_MASKS[enums::MU]},
1631 {CSR_MIP, MIP_MASK[enums::MU]},
1632 },
1633 [enums::MNU] = {
1634 {CSR_USTATUS, USTATUS_MASKS[RV32][enums::MNU]},
1635 {CSR_UIE, UI_MASK[enums::MNU]},
1636 {CSR_UIP, UI_MASK[enums::MNU]},
1638 {CSR_FRM, FRM_MASK},
1640 {CSR_SSTATUS, SSTATUS_MASKS[RV32][enums::MNU]},
1641 {CSR_SIE, SI_MASK[enums::MNU]},
1642 {CSR_SIP, SIP_MASK[enums::MNU]},
1643 {CSR_MSTATUS, MSTATUS_MASKS[RV32][enums::MNU]},
1645 {CSR_MIE, MI_MASK[enums::MNU]},
1646 {CSR_MSTATUSH, MSTATUSH_MASKS[enums::MNU]},
1647 {CSR_MIP, MIP_MASK[enums::MNU]},
1648 },
1649 [enums::MSU] = {
1650 {CSR_USTATUS, USTATUS_MASKS[RV32][enums::MSU]},
1651 {CSR_UIE, UI_MASK[enums::MSU]},
1652 {CSR_UIP, UI_MASK[enums::MSU]},
1654 {CSR_FRM, FRM_MASK},
1656 {CSR_SSTATUS, SSTATUS_MASKS[RV32][enums::MSU]},
1657 {CSR_SIE, SI_MASK[enums::MSU]},
1658 {CSR_SIP, SIP_MASK[enums::MSU]},
1659 {CSR_MSTATUS, MSTATUS_MASKS[RV32][enums::MSU]},
1661 {CSR_MIE, MI_MASK[enums::MSU]},
1662 {CSR_MSTATUSH, MSTATUSH_MASKS[enums::MSU]},
1663 {CSR_MIP, MIP_MASK[enums::MSU]},
1664 },
1665 [enums::MNSU] = {
1666 {CSR_USTATUS, USTATUS_MASKS[RV32][enums::MNSU]},
1667 {CSR_UIE, UI_MASK[enums::MNSU]},
1668 {CSR_UIP, UI_MASK[enums::MNSU]},
1670 {CSR_FRM, FRM_MASK},
1672 {CSR_SSTATUS, SSTATUS_MASKS[RV32][enums::MNSU]},
1673 {CSR_SIE, SI_MASK[enums::MNSU]},
1674 {CSR_SIP, SIP_MASK[enums::MNSU]},
1675 {CSR_MSTATUS, MSTATUS_MASKS[RV32][enums::MNSU]},
1677 {CSR_MIE, MI_MASK[enums::MNSU]},
1678 {CSR_MSTATUSH, MSTATUSH_MASKS[enums::MNSU]},
1679 {CSR_MIP, MIP_MASK[enums::MNSU]},
1680 },
1681 },
1682 [RV64] = {
1683 [enums::M] = {
1684 {CSR_USTATUS, USTATUS_MASKS[RV64][enums::M]},
1685 {CSR_UIE, UI_MASK[enums::M]},
1686 {CSR_UIP, UI_MASK[enums::M]},
1688 {CSR_FRM, FRM_MASK},
1690 {CSR_SSTATUS, SSTATUS_MASKS[RV64][enums::M]},
1691 {CSR_SIE, SI_MASK[enums::M]},
1692 {CSR_SIP, SIP_MASK[enums::M]},
1693 {CSR_MSTATUS, MSTATUS_MASKS[RV64][enums::M]},
1695 {CSR_MIE, MI_MASK[enums::M]},
1696 {CSR_MIP, MIP_MASK[enums::M]},
1697 },
1698 [enums::MU] = {
1699 {CSR_USTATUS, USTATUS_MASKS[RV64][enums::MU]},
1700 {CSR_UIE, UI_MASK[enums::MU]},
1701 {CSR_UIP, UI_MASK[enums::MU]},
1703 {CSR_FRM, FRM_MASK},
1705 {CSR_SSTATUS, SSTATUS_MASKS[RV64][enums::MU]},
1706 {CSR_SIE, SI_MASK[enums::MU]},
1707 {CSR_SIP, SIP_MASK[enums::MU]},
1708 {CSR_MSTATUS, MSTATUS_MASKS[RV64][enums::MU]},
1710 {CSR_MIE, MI_MASK[enums::MU]},
1711 {CSR_MIP, MIP_MASK[enums::MU]},
1712 },
1713 [enums::MNU] = {
1714 {CSR_USTATUS, USTATUS_MASKS[RV64][enums::MNU]},
1715 {CSR_UIE, UI_MASK[enums::MNU]},
1716 {CSR_UIP, UI_MASK[enums::MNU]},
1718 {CSR_FRM, FRM_MASK},
1720 {CSR_SSTATUS, SSTATUS_MASKS[RV64][enums::MNU]},
1721 {CSR_SIE, SI_MASK[enums::MNU]},
1722 {CSR_SIP, SIP_MASK[enums::MNU]},
1723 {CSR_MSTATUS, MSTATUS_MASKS[RV64][enums::MNU]},
1725 {CSR_MIE, MI_MASK[enums::MNU]},
1726 {CSR_MIP, MIP_MASK[enums::MNU]},
1727 },
1728 [enums::MSU] = {
1729 {CSR_USTATUS, USTATUS_MASKS[RV64][enums::MSU]},
1730 {CSR_UIE, UI_MASK[enums::MSU]},
1731 {CSR_UIP, UI_MASK[enums::MSU]},
1733 {CSR_FRM, FRM_MASK},
1735 {CSR_SSTATUS, SSTATUS_MASKS[RV64][enums::MSU]},
1736 {CSR_SIE, SI_MASK[enums::MSU]},
1737 {CSR_SIP, SIP_MASK[enums::MSU]},
1738 {CSR_MSTATUS, MSTATUS_MASKS[RV64][enums::MSU]},
1740 {CSR_MIE, MI_MASK[enums::MSU]},
1741 {CSR_MIP, MIP_MASK[enums::MSU]},
1742 },
1743 [enums::MNSU] = {
1744 {CSR_USTATUS, USTATUS_MASKS[RV64][enums::MNSU]},
1745 {CSR_UIE, UI_MASK[enums::MNSU]},
1746 {CSR_UIP, UI_MASK[enums::MNSU]},
1748 {CSR_FRM, FRM_MASK},
1750 {CSR_SSTATUS, SSTATUS_MASKS[RV64][enums::MNSU]},
1751 {CSR_SIE, SI_MASK[enums::MNSU]},
1752 {CSR_SIP, SIP_MASK[enums::MNSU]},
1753 {CSR_MSTATUS, MSTATUS_MASKS[RV64][enums::MNSU]},
1755 {CSR_MIE, MI_MASK[enums::MNSU]},
1756 {CSR_MIP, MIP_MASK[enums::MNSU]},
1757 },
1758 },
1759};
1760
1761} // namespace RiscvISA
1762} // namespace gem5
1763
1764#endif // __ARCH_RISCV_REGS_MISC_HH__
Defines global host-dependent types: Counter, Tick, and (indirectly) {int,uint}{8,...
#define BitUnion64(name)
Use this to define conveniently sized values overlayed with bitfields.
Definition bitunion.hh:494
#define EndBitUnion(name)
This closes off the class and union started by the above macro.
Definition bitunion.hh:428
constexpr RegClass miscRegClass
Definition misc.hh:2992
const RegVal STATUS_TSR_MASK
Definition misc.hh:1374
Bitfield< 3 > nmie
Definition misc.hh:1258
const RegVal UI_MASK[enums::Num_PrivilegeModeSet]
Definition misc.hh:1576
const RegVal MSTATUSH_MASKS[enums::Num_PrivilegeModeSet]
Definition misc.hh:1458
const RegVal SIDELEG_MASK[enums::Num_PrivilegeModeSet]
Definition misc.hh:1583
Bitfield< 3 > rvd
Definition misc.hh:1286
const RegVal SI_MASK[enums::Num_PrivilegeModeSet]
Definition misc.hh:1560
Bitfield< 3 > msi
Definition misc.hh:1306
Bitfield< 0 > uie
Definition misc.hh:1247
Bitfield< 12, 11 > mpp
Definition misc.hh:1239
Bitfield< 21 > tw
Definition misc.hh:1232
constexpr uint64_t isaExtsFlags()
Definition misc.hh:550
@ CSR_MHPMEVENT19
Definition misc.hh:493
@ CSR_HPMCOUNTER18
Definition misc.hh:310
@ CSR_HPMCOUNTER05H
Definition misc.hh:331
@ CSR_HPMCOUNTER11
Definition misc.hh:303
@ CSR_HPMCOUNTER03H
Definition misc.hh:329
@ CSR_HPMCOUNTER05
Definition misc.hh:297
@ CSR_MHPMCOUNTER25H
Definition misc.hh:468
@ CSR_MHPMEVENT27
Definition misc.hh:501
@ CSR_MHPMCOUNTER07H
Definition misc.hh:450
@ CSR_HPMCOUNTER23
Definition misc.hh:315
@ CSR_MHPMCOUNTER03H
Definition misc.hh:446
@ CSR_MHPMEVENT17
Definition misc.hh:491
@ CSR_HPMCOUNTER20H
Definition misc.hh:346
@ CSR_HPMCOUNTER17
Definition misc.hh:309
@ CSR_MHPMEVENT21
Definition misc.hh:495
@ CSR_MHPMCOUNTER07
Definition misc.hh:417
@ CSR_HPMCOUNTER16
Definition misc.hh:308
@ CSR_HPMCOUNTER15
Definition misc.hh:307
@ CSR_HPMCOUNTER06H
Definition misc.hh:332
@ CSR_HPMCOUNTER07
Definition misc.hh:299
@ CSR_HPMCOUNTER27
Definition misc.hh:319
@ CSR_HPMCOUNTER08
Definition misc.hh:300
@ CSR_MHPMCOUNTER21H
Definition misc.hh:464
@ CSR_HPMCOUNTER21
Definition misc.hh:313
@ CSR_HPMCOUNTER24
Definition misc.hh:316
@ CSR_MHPMCOUNTER29H
Definition misc.hh:472
@ CSR_MHPMCOUNTER12H
Definition misc.hh:455
@ CSR_MHPMEVENT22
Definition misc.hh:496
@ CSR_MHPMCOUNTER16
Definition misc.hh:426
@ CSR_MHPMEVENT06
Definition misc.hh:480
@ CSR_MHPMCOUNTER23
Definition misc.hh:433
@ CSR_MHPMEVENT05
Definition misc.hh:479
@ CSR_MHPMCOUNTER22
Definition misc.hh:432
@ CSR_MHPMCOUNTER10H
Definition misc.hh:453
@ CSR_MHPMEVENT13
Definition misc.hh:487
@ CSR_HPMCOUNTER29
Definition misc.hh:321
@ CSR_MHPMCOUNTER06
Definition misc.hh:416
@ CSR_HPMCOUNTER04
Definition misc.hh:296
@ CSR_MHPMCOUNTER05H
Definition misc.hh:448
@ CSR_HPMCOUNTER25
Definition misc.hh:317
@ CSR_MHPMEVENT20
Definition misc.hh:494
@ CSR_HPMCOUNTER10H
Definition misc.hh:336
@ CSR_HPMCOUNTER26
Definition misc.hh:318
@ CSR_HPMCOUNTER11H
Definition misc.hh:337
@ CSR_MHPMEVENT31
Definition misc.hh:505
@ CSR_HPMCOUNTER28
Definition misc.hh:320
@ CSR_MHPMCOUNTER29
Definition misc.hh:439
@ CSR_MHPMCOUNTER15
Definition misc.hh:425
@ CSR_MHPMEVENT14
Definition misc.hh:488
@ CSR_HPMCOUNTER10
Definition misc.hh:302
@ CSR_MHPMCOUNTER28
Definition misc.hh:438
@ CSR_MHPMCOUNTER09H
Definition misc.hh:452
@ CSR_HPMCOUNTER19H
Definition misc.hh:345
@ CSR_MHPMCOUNTER13H
Definition misc.hh:456
@ CSR_MHPMCOUNTER27
Definition misc.hh:437
@ CSR_MHPMCOUNTER16H
Definition misc.hh:459
@ CSR_MHPMCOUNTER03
Definition misc.hh:413
@ CSR_HPMCOUNTER04H
Definition misc.hh:330
@ CSR_MHPMEVENT07
Definition misc.hh:481
@ CSR_MHPMCOUNTER11
Definition misc.hh:421
@ CSR_MHPMCOUNTER26H
Definition misc.hh:469
@ CSR_HPMCOUNTER07H
Definition misc.hh:333
@ CSR_MHPMCOUNTER17H
Definition misc.hh:460
@ CSR_MHPMEVENT03
Definition misc.hh:477
@ CSR_HPMCOUNTER30
Definition misc.hh:322
@ CSR_HPMCOUNTER28H
Definition misc.hh:354
@ CSR_HPMCOUNTER25H
Definition misc.hh:351
@ CSR_HPMCOUNTER17H
Definition misc.hh:343
@ CSR_HPMCOUNTER29H
Definition misc.hh:355
@ CSR_MHPMEVENT08
Definition misc.hh:482
@ CSR_MHPMEVENT25
Definition misc.hh:499
@ CSR_MHPMCOUNTER22H
Definition misc.hh:465
@ CSR_HPMCOUNTER31H
Definition misc.hh:357
@ CSR_MHPMCOUNTER19
Definition misc.hh:429
@ CSR_MHPMCOUNTER05
Definition misc.hh:415
@ CSR_MHPMCOUNTER15H
Definition misc.hh:458
@ CSR_MHPMEVENT30
Definition misc.hh:504
@ CSR_MHPMCOUNTER10
Definition misc.hh:420
@ CSR_HPMCOUNTER16H
Definition misc.hh:342
@ CSR_HPMCOUNTER30H
Definition misc.hh:356
@ CSR_HPMCOUNTER22
Definition misc.hh:314
@ CSR_MHPMEVENT16
Definition misc.hh:490
@ CSR_MHPMCOUNTER24H
Definition misc.hh:467
@ CSR_MHPMEVENT12
Definition misc.hh:486
@ CSR_HPMCOUNTER23H
Definition misc.hh:349
@ CSR_HPMCOUNTER20
Definition misc.hh:312
@ CSR_HPMCOUNTER14H
Definition misc.hh:340
@ CSR_HPMCOUNTER08H
Definition misc.hh:334
@ CSR_MHPMEVENT09
Definition misc.hh:483
@ CSR_HPMCOUNTER26H
Definition misc.hh:352
@ CSR_MHPMEVENT04
Definition misc.hh:478
@ CSR_MHPMCOUNTER18H
Definition misc.hh:461
@ CSR_MHPMEVENT29
Definition misc.hh:503
@ CSR_MHPMCOUNTER06H
Definition misc.hh:449
@ CSR_HPMCOUNTER27H
Definition misc.hh:353
@ CSR_HPMCOUNTER18H
Definition misc.hh:344
@ CSR_MHPMCOUNTER25
Definition misc.hh:435
@ CSR_MHPMCOUNTER23H
Definition misc.hh:466
@ CSR_MHPMEVENT15
Definition misc.hh:489
@ CSR_MHPMEVENT11
Definition misc.hh:485
@ CSR_HPMCOUNTER09H
Definition misc.hh:335
@ CSR_MHPMCOUNTER13
Definition misc.hh:423
@ CSR_HPMCOUNTER15H
Definition misc.hh:341
@ CSR_MHPMEVENT10
Definition misc.hh:484
@ CSR_MHPMCOUNTER11H
Definition misc.hh:454
@ CSR_MHPMEVENT18
Definition misc.hh:492
@ CSR_HPMCOUNTER06
Definition misc.hh:298
@ CSR_MHPMEVENT23
Definition misc.hh:497
@ CSR_MHPMEVENT26
Definition misc.hh:500
@ CSR_MHPMCOUNTER09
Definition misc.hh:419
@ CSR_MHPMCOUNTER24
Definition misc.hh:434
@ CSR_MHPMCOUNTER26
Definition misc.hh:436
@ CSR_HPMCOUNTER21H
Definition misc.hh:347
@ CSR_MHPMCOUNTER04H
Definition misc.hh:447
@ CSR_MHPMCOUNTER30H
Definition misc.hh:473
@ CSR_HPMCOUNTER22H
Definition misc.hh:348
@ CSR_MHPMCOUNTER17
Definition misc.hh:427
@ CSR_MHPMCOUNTER14H
Definition misc.hh:457
@ CSR_MHPMCOUNTER31H
Definition misc.hh:474
@ CSR_HPMCOUNTER13
Definition misc.hh:305
@ CSR_MHPMCOUNTER20
Definition misc.hh:430
@ CSR_MHPMCOUNTER20H
Definition misc.hh:463
@ CSR_HPMCOUNTER12
Definition misc.hh:304
@ CSR_MHPMCOUNTER21
Definition misc.hh:431
@ CSR_MHPMEVENT28
Definition misc.hh:502
@ CSR_HPMCOUNTER14
Definition misc.hh:306
@ CSR_MHPMCOUNTER31
Definition misc.hh:441
@ CSR_HPMCOUNTER31
Definition misc.hh:323
@ CSR_HPMCOUNTER13H
Definition misc.hh:339
@ CSR_MHPMCOUNTER28H
Definition misc.hh:471
@ CSR_MHPMCOUNTER14
Definition misc.hh:424
@ CSR_MHPMCOUNTER19H
Definition misc.hh:462
@ CSR_HPMCOUNTER12H
Definition misc.hh:338
@ CSR_HPMCOUNTER09
Definition misc.hh:301
@ CSR_HPMCOUNTER19
Definition misc.hh:311
@ CSR_HPMCOUNTER03
Definition misc.hh:295
@ CSR_MHPMCOUNTER18
Definition misc.hh:428
@ CSR_MHPMCOUNTER27H
Definition misc.hh:470
@ CSR_MHPMCOUNTER08H
Definition misc.hh:451
@ CSR_MHPMCOUNTER12
Definition misc.hh:422
@ CSR_MHPMCOUNTER30
Definition misc.hh:440
@ CSR_MHPMCOUNTER04
Definition misc.hh:414
@ CSR_MHPMEVENT24
Definition misc.hh:498
@ CSR_HPMCOUNTER24H
Definition misc.hh:350
@ CSR_MHPMCOUNTER08
Definition misc.hh:418
Bitfield< 1 > ssi
Definition misc.hh:1307
Bitfield< 35, 34 > sxl
Definition misc.hh:1228
Bitfield< 33, 32 > pmm
Definition misc.hh:1316
constexpr enums::RiscvType RV32
Definition pcstate.hh:56
const RegVal FRM_MASK
Definition misc.hh:1591
Bitfield< 8 > rvi
Definition misc.hh:1281
Bitfield< 21 > rvv
Definition misc.hh:1270
const RegVal STATUS_MBE_MASK[enums::Num_RiscvType]
Definition misc.hh:1364
const RegVal CAUSE_INTERRUPT_MASKS[enums::Num_RiscvType]
Definition misc.hh:1593
Bitfield< 6 > rvg
Definition misc.hh:1283
Bitfield< 0 > usi
Definition misc.hh:1308
Bitfield< 20 > rvu
Definition misc.hh:1271
Bitfield< 18 > sum
Definition misc.hh:1235
Bitfield< 8 > spp
Definition misc.hh:1241
Bitfield< 11 > mei
Definition misc.hh:1300
const RegVal STATUS_SBE_MASK[enums::Num_RiscvType]
Definition misc.hh:1368
Bitfield< 7 > rvh
Definition misc.hh:1282
Bitfield< 4 > uti
Definition misc.hh:1305
Bitfield< 0 > fiom
Definition misc.hh:1322
const RegVal MEI_MASK
Definition misc.hh:1525
Bitfield< 8 > uei
Definition misc.hh:1302
Bitfield< 4 > upie
Definition misc.hh:1244
Bitfield< 17 > mprv
Definition misc.hh:1236
const RegVal SEI_MASK
Definition misc.hh:1526
Bitfield< 23 > rvx
Definition misc.hh:1269
const RegVal SSI_MASK
Definition misc.hh:1532
const off_t UXL_OFFSET
Definition misc.hh:1343
Bitfield< 5 > sti
Definition misc.hh:1304
Bitfield< 1 > sie
Definition misc.hh:1246
Bitfield< 3, 1 > wpri_3
Definition misc.hh:1321
const RegVal UTI_MASK
Definition misc.hh:1530
Bitfield< 18 > rvs
Definition misc.hh:1273
const off_t SXL_OFFSET
Definition misc.hh:1342
const RegVal STATUS_MIE_MASK
Definition misc.hh:1388
Bitfield< 31 > rv32_sd
Definition misc.hh:1230
const RegVal MIP_MASK[enums::Num_PrivilegeModeSet]
Definition misc.hh:1534
const RegVal STATUS_SIE_MASK
Definition misc.hh:1389
const off_t FS_OFFSET
Definition misc.hh:1344
const RegVal STATUS_TW_MASK
Definition misc.hh:1375
const RegVal STATUS_MPIE_MASK
Definition misc.hh:1385
Bitfield< 14, 13 > fs
Definition misc.hh:1238
Bitfield< 12 > rvm
Definition misc.hh:1277
const RegVal SSTATUS_MASKS[enums::Num_RiscvType][enums::Num_PrivilegeModeSet]
Definition misc.hh:1466
const RegVal STATUS_VS_MASK
Definition misc.hh:1383
const off_t VS_OFFSET
Definition misc.hh:1345
const RegVal MTI_MASK
Definition misc.hh:1528
const off_t MBE_OFFSET[enums::Num_RiscvType]
Definition misc.hh:1334
Bitfield< 20 > tvm
Definition misc.hh:1233
const RegVal STATUS_XS_MASK
Definition misc.hh:1380
const RegVal STATUS_SXL_MASK
Definition misc.hh:1372
const RegVal FFLAGS_MASK
Definition misc.hh:1590
Bitfield< 7 > mti
Definition misc.hh:1303
EndBitUnion(SATP) enum AddrXlateMode
Definition pagetable.hh:49
Bitfield< 0 > rva
Definition misc.hh:1289
Bitfield< 16 > rvq
Definition misc.hh:1274
const RegVal STATUS_MPRV_MASK
Definition misc.hh:1379
Bitfield< 33, 32 > uxl
Definition misc.hh:1229
Bitfield< 15 > rvp
Definition misc.hh:1275
const RegVal MSI_MASK
Definition misc.hh:1531
Bitfield< 5 > spie
Definition misc.hh:1243
Bitfield< 3 > mie
Definition misc.hh:1245
Bitfield< 7 > mpie
Definition misc.hh:1242
Bitfield< 7 > mnv
Definition misc.hh:1257
const RegVal STATUS_UXL_MASK
Definition misc.hh:1373
const RegVal USI_MASK
Definition misc.hh:1533
const RegVal STATUS_MXR_MASK
Definition misc.hh:1377
const RegVal USTATUS_MASKS[enums::Num_RiscvType][enums::Num_PrivilegeModeSet]
Definition misc.hh:1497
const std::unordered_map< int, CSRMetadata > CSRData
Definition misc.hh:554
Bitfield< 22 > tsr
Definition misc.hh:1231
const std::unordered_map< int, RegVal > CSRMasks[enums::Num_RiscvType][enums::Num_PrivilegeModeSet]
Definition misc.hh:1599
const RegVal LOCAL_MASK
Definition misc.hh:1524
Bitfield< 6 > cbcfe
Definition misc.hh:1319
const RegVal UEI_MASK
Definition misc.hh:1527
const RegVal STATUS_FS_MASK
Definition misc.hh:1381
const RegVal STATUS_SPP_MASK
Definition misc.hh:1384
const RegVal ISA_EXT_MASK
Definition misc.hh:1352
Bitfield< 5, 4 > cbie
Definition misc.hh:1320
const RegVal SIP_MASK[enums::Num_PrivilegeModeSet]
Definition misc.hh:1553
const RegVal STATUS_SD_MASKS[enums::Num_RiscvType]
Definition misc.hh:1360
const RegVal STATUS_SPIE_MASK
Definition misc.hh:1386
const RegVal STATUS_MPP_MASK
Definition misc.hh:1382
const RegVal STATUS_UIE_MASK
Definition misc.hh:1390
Bitfield< 13 > rvn
Definition misc.hh:1276
Bitfield< 4 > rve
Definition misc.hh:1285
constexpr enums::RiscvType RV64
Definition pcstate.hh:57
const RegVal ISA_EXT_C_MASK
Definition misc.hh:1353
Bitfield< 1 > rvb
Definition misc.hh:1288
@ MISCREG_PMPADDR11
Definition misc.hh:171
@ MISCREG_HPMCOUNTER16H
Definition misc.hh:239
@ MISCREG_USTATUS
Definition misc.hh:266
@ MISCREG_HPMCOUNTER09
Definition misc.hh:88
@ MISCREG_HPMEVENT31
Definition misc.hh:139
@ MISCREG_IMPID
Definition misc.hh:74
@ MISCREG_HPMEVENT07
Definition misc.hh:115
@ MISCREG_HPMCOUNTER16
Definition misc.hh:95
@ MISCREG_HPMCOUNTER13H
Definition misc.hh:236
@ MISCREG_SENVCFG
Definition misc.hh:186
@ MISCREG_HPMCOUNTER19
Definition misc.hh:98
@ MISCREG_PMPADDR12
Definition misc.hh:172
@ MISCREG_HPMCOUNTER07
Definition misc.hh:86
@ MISCREG_HPMEVENT29
Definition misc.hh:137
@ MISCREG_HPMCOUNTER26
Definition misc.hh:105
@ MISCREG_PMPADDR05
Definition misc.hh:165
@ MISCREG_HPMCOUNTER13
Definition misc.hh:92
@ MISCREG_PMPADDR10
Definition misc.hh:170
@ MISCREG_SIDELEG
Definition misc.hh:178
@ MISCREG_PMPADDR14
Definition misc.hh:174
@ MISCREG_PMPCFG3
Definition misc.hh:159
@ NUM_PHYS_MISCREGS
Definition misc.hh:258
@ MISCREG_HPMCOUNTER22H
Definition misc.hh:245
@ MISCREG_PMPADDR09
Definition misc.hh:169
@ MISCREG_HPMEVENT06
Definition misc.hh:114
@ MISCREG_TSELECT
Definition misc.hh:140
@ MISCREG_MSCRATCH
Definition misc.hh:152
@ MISCREG_HPMCOUNTER04H
Definition misc.hh:227
@ MISCREG_MNCAUSE
Definition misc.hh:217
@ MISCREG_HPMEVENT21
Definition misc.hh:129
@ MISCREG_HPMCOUNTER12H
Definition misc.hh:235
@ MISCREG_STATUS
Definition misc.hh:76
@ MISCREG_HPMEVENT12
Definition misc.hh:120
@ MISCREG_HPMCOUNTER25
Definition misc.hh:104
@ MISCREG_PMPADDR04
Definition misc.hh:164
@ MISCREG_INSTRETH
Definition misc.hh:225
@ MISCREG_MCOUNTEREN
Definition misc.hh:151
@ MISCREG_PMPADDR00
Definition misc.hh:160
@ MISCREG_HPMCOUNTER22
Definition misc.hh:101
@ MISCREG_HPMEVENT17
Definition misc.hh:125
@ MISCREG_HPMEVENT20
Definition misc.hh:128
@ MISCREG_HPMCOUNTER03H
Definition misc.hh:226
@ MISCREG_HPMCOUNTER15H
Definition misc.hh:238
@ MISCREG_MEDELEG
Definition misc.hh:148
@ MISCREG_USCRATCH
Definition misc.hh:189
@ MISCREG_HPMEVENT25
Definition misc.hh:133
@ MISCREG_HPMCOUNTER31H
Definition misc.hh:254
@ MISCREG_HPMCOUNTER11
Definition misc.hh:90
@ MISCREG_HPMCOUNTER17H
Definition misc.hh:240
@ MISCREG_HPMEVENT03
Definition misc.hh:111
@ MISCREG_PMPCFG1
Definition misc.hh:157
@ MISCREG_SSTATUS
Definition misc.hh:269
@ MISCREG_HPMEVENT13
Definition misc.hh:121
@ MISCREG_PMPADDR13
Definition misc.hh:173
@ MISCREG_FFLAGS_EXE
Definition misc.hh:264
@ MISCREG_HPMCOUNTER12
Definition misc.hh:91
@ MISCREG_HPMCOUNTER29H
Definition misc.hh:252
@ MISCREG_HPMEVENT04
Definition misc.hh:112
@ MISCREG_HPMEVENT08
Definition misc.hh:116
@ MISCREG_HPMEVENT19
Definition misc.hh:127
@ MISCREG_DSCRATCH
Definition misc.hh:146
@ MISCREG_HPMEVENT30
Definition misc.hh:138
@ MISCREG_SEDELEG
Definition misc.hh:177
@ MISCREG_PMPADDR06
Definition misc.hh:166
@ MISCREG_HPMCOUNTER21
Definition misc.hh:100
@ MISCREG_HPMCOUNTER21H
Definition misc.hh:244
@ MISCREG_PMPADDR03
Definition misc.hh:163
@ MISCREG_SCOUNTEREN
Definition misc.hh:180
@ MISCREG_HPMCOUNTER18H
Definition misc.hh:241
@ MISCREG_HPMCOUNTER06
Definition misc.hh:85
@ MISCREG_HPMCOUNTER20H
Definition misc.hh:243
@ MISCREG_HPMCOUNTER28
Definition misc.hh:107
@ MISCREG_PMPADDR02
Definition misc.hh:162
@ MISCREG_MIDELEG
Definition misc.hh:149
@ MISCREG_HPMCOUNTER30
Definition misc.hh:109
@ MISCREG_HPMCOUNTER14
Definition misc.hh:93
@ MISCREG_MSTATUSH
Definition misc.hh:221
@ MISCREG_HPMEVENT10
Definition misc.hh:118
@ MISCREG_HPMEVENT26
Definition misc.hh:134
@ MISCREG_HPMEVENT18
Definition misc.hh:126
@ MISCREG_HPMEVENT23
Definition misc.hh:131
@ MISCREG_INSTRET
Definition misc.hh:81
@ MISCREG_HARTID
Definition misc.hh:75
@ MISCREG_MNSTATUS
Definition misc.hh:218
@ MISCREG_HPMCOUNTER05H
Definition misc.hh:228
@ MISCREG_HPMCOUNTER20
Definition misc.hh:99
@ MISCREG_HPMEVENT09
Definition misc.hh:117
@ MISCREG_HPMCOUNTER04
Definition misc.hh:83
@ MISCREG_HPMCOUNTER25H
Definition misc.hh:248
@ MISCREG_HPMCOUNTER27H
Definition misc.hh:250
@ MISCREG_HPMCOUNTER06H
Definition misc.hh:229
@ MISCREG_PMPADDR07
Definition misc.hh:167
@ MISCREG_HPMCOUNTER08H
Definition misc.hh:231
@ MISCREG_HPMEVENT16
Definition misc.hh:124
@ MISCREG_HPMCOUNTER18
Definition misc.hh:97
@ MISCREG_SSCRATCH
Definition misc.hh:181
@ MISCREG_HPMCOUNTER19H
Definition misc.hh:242
@ MISCREG_HPMEVENT14
Definition misc.hh:122
@ MISCREG_HPMCOUNTER10H
Definition misc.hh:233
@ MISCREG_HPMCOUNTER05
Definition misc.hh:84
@ MISCREG_HPMCOUNTER30H
Definition misc.hh:253
@ MISCREG_HPMCOUNTER17
Definition misc.hh:96
@ MISCREG_HPMCOUNTER09H
Definition misc.hh:232
@ MISCREG_HPMCOUNTER27
Definition misc.hh:106
@ MISCREG_HPMCOUNTER24
Definition misc.hh:103
@ MISCREG_HPMCOUNTER28H
Definition misc.hh:251
@ MISCREG_HPMCOUNTER14H
Definition misc.hh:237
@ MISCREG_HPMCOUNTER23
Definition misc.hh:102
@ MISCREG_CYCLE
Definition misc.hh:79
@ MISCREG_HPMCOUNTER07H
Definition misc.hh:230
@ MISCREG_MNSCRATCH
Definition misc.hh:215
@ MISCREG_HPMCOUNTER15
Definition misc.hh:94
@ MISCREG_HPMEVENT24
Definition misc.hh:132
@ MISCREG_HPMCOUNTER10
Definition misc.hh:89
@ MISCREG_HPMCOUNTER29
Definition misc.hh:108
@ MISCREG_VENDORID
Definition misc.hh:72
@ MISCREG_PMPADDR01
Definition misc.hh:161
@ MISCREG_HPMEVENT27
Definition misc.hh:135
@ MISCREG_HPMEVENT15
Definition misc.hh:123
@ MISCREG_HPMEVENT05
Definition misc.hh:113
@ MISCREG_ARCHID
Definition misc.hh:73
@ MISCREG_HPMCOUNTER24H
Definition misc.hh:247
@ MISCREG_MSTATUS
Definition misc.hh:260
@ MISCREG_HPMEVENT11
Definition misc.hh:119
@ MISCREG_HPMCOUNTER31
Definition misc.hh:110
@ MISCREG_HPMCOUNTER23H
Definition misc.hh:246
@ MISCREG_HPMCOUNTER11H
Definition misc.hh:234
@ MISCREG_PMPADDR08
Definition misc.hh:168
@ MISCREG_HPMCOUNTER03
Definition misc.hh:82
@ MISCREG_PMPADDR15
Definition misc.hh:175
@ MISCREG_HPMEVENT28
Definition misc.hh:136
@ MISCREG_HPMEVENT22
Definition misc.hh:130
@ MISCREG_PMPCFG0
Definition misc.hh:156
@ MISCREG_HPMCOUNTER08
Definition misc.hh:87
@ MISCREG_HPMCOUNTER26H
Definition misc.hh:249
@ MISCREG_PMPCFG2
Definition misc.hh:158
const RegVal MISA_MASKS[enums::Num_RiscvType]
Definition misc.hh:1354
Bitfield< 10 > rvk
Definition misc.hh:1279
Bitfield< 19 > rvt
Definition misc.hh:1272
const off_t FRM_OFFSET
Definition misc.hh:1346
Bitfield< 9, 5 > vs
Bitfield< 16, 15 > xs
Definition misc.hh:1237
const RegVal ISA_MXL_MASKS[enums::Num_RiscvType]
Definition misc.hh:1348
Bitfield< 31, 8 > wpri_2
Definition misc.hh:1317
const RegVal STI_MASK
Definition misc.hh:1529
const RegVal MI_MASK[enums::Num_PrivilegeModeSet]
Definition misc.hh:1542
const RegVal MIDELEG_MASK[enums::Num_PrivilegeModeSet]
Definition misc.hh:1568
const RegVal STATUS_SUM_MASK
Definition misc.hh:1378
BitUnion64(SATP) Bitfield< 63
Bitfield< 5 > rvf
Definition misc.hh:1284
Bitfield< 9 > rvj
Definition misc.hh:1280
Bitfield< 31, 30 > rv32_mxl
Definition misc.hh:1268
Bitfield< 2 > rvc
Definition misc.hh:1287
Bitfield< 11 > rvl
Definition misc.hh:1278
const off_t SBE_OFFSET[enums::Num_RiscvType]
Definition misc.hh:1338
Bitfield< 7 > cbze
Definition misc.hh:1318
Bitfield< 19 > mxr
Definition misc.hh:1234
const RegVal STATUS_UPIE_MASK
Definition misc.hh:1387
constexpr uint64_t rvTypeFlags(T... args)
Definition misc.hh:541
Bitfield< 9 > sei
Definition misc.hh:1301
const RegVal STATUS_TVM_MASK
Definition misc.hh:1376
const RegVal MSTATUS_MASKS[enums::Num_RiscvType][enums::Num_PrivilegeModeSet]
Definition misc.hh:1392
Copyright (c) 2024 Arm Limited All rights reserved.
Definition binary32.hh:36
constexpr char MiscRegClassName[]
Definition reg_class.hh:82
uint64_t RegVal
Definition types.hh:173
@ MiscRegClass
Control (misc) register.
Definition reg_class.hh:70
const uint64_t rvTypes
Definition misc.hh:535
const uint64_t isaExts
Definition misc.hh:536
const std::string name
Definition misc.hh:533
Vector Registers layout specification.

Generated on Mon May 26 2025 09:19:11 for gem5 by doxygen 1.13.2