registers.hh revision 12413
111723Sar4jc@virginia.edu/*
211723Sar4jc@virginia.edu * Copyright (c) 2013 ARM Limited
311723Sar4jc@virginia.edu * Copyright (c) 2014-2015 Sven Karlsson
411723Sar4jc@virginia.edu * All rights reserved
511723Sar4jc@virginia.edu *
611723Sar4jc@virginia.edu * The license below extends only to copyright in the software and shall
711723Sar4jc@virginia.edu * not be construed as granting a license to any other intellectual
811723Sar4jc@virginia.edu * property including but not limited to intellectual property relating
911723Sar4jc@virginia.edu * to a hardware implementation of the functionality of the software
1011723Sar4jc@virginia.edu * licensed hereunder.  You may use the software subject to the license
1111723Sar4jc@virginia.edu * terms below provided that you ensure that this notice is replicated
1211723Sar4jc@virginia.edu * unmodified and in its entirety in all distributions of the software,
1311723Sar4jc@virginia.edu * modified or unmodified, in source code or in binary form.
1411723Sar4jc@virginia.edu *
1511723Sar4jc@virginia.edu * Copyright (c) 2016 RISC-V Foundation
1611723Sar4jc@virginia.edu * Copyright (c) 2016 The University of Virginia
1711723Sar4jc@virginia.edu * All rights reserved.
1811723Sar4jc@virginia.edu *
1911723Sar4jc@virginia.edu * Redistribution and use in source and binary forms, with or without
2011723Sar4jc@virginia.edu * modification, are permitted provided that the following conditions are
2111723Sar4jc@virginia.edu * met: redistributions of source code must retain the above copyright
2211723Sar4jc@virginia.edu * notice, this list of conditions and the following disclaimer;
2311723Sar4jc@virginia.edu * redistributions in binary form must reproduce the above copyright
2411723Sar4jc@virginia.edu * notice, this list of conditions and the following disclaimer in the
2511723Sar4jc@virginia.edu * documentation and/or other materials provided with the distribution;
2611723Sar4jc@virginia.edu * neither the name of the copyright holders nor the names of its
2711723Sar4jc@virginia.edu * contributors may be used to endorse or promote products derived from
2811723Sar4jc@virginia.edu * this software without specific prior written permission.
2911723Sar4jc@virginia.edu *
3011723Sar4jc@virginia.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
3111723Sar4jc@virginia.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
3211723Sar4jc@virginia.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
3311723Sar4jc@virginia.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
3411723Sar4jc@virginia.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
3511723Sar4jc@virginia.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
3611723Sar4jc@virginia.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
3711723Sar4jc@virginia.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
3811723Sar4jc@virginia.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
3911723Sar4jc@virginia.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
4011723Sar4jc@virginia.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
4111723Sar4jc@virginia.edu *
4211723Sar4jc@virginia.edu * Authors: Andreas Hansson
4311723Sar4jc@virginia.edu *          Sven Karlsson
4411723Sar4jc@virginia.edu *          Alec Roelke
4511723Sar4jc@virginia.edu */
4611723Sar4jc@virginia.edu
4711723Sar4jc@virginia.edu#ifndef __ARCH_RISCV_REGISTERS_HH__
4811723Sar4jc@virginia.edu#define __ARCH_RISCV_REGISTERS_HH__
4911723Sar4jc@virginia.edu
5011723Sar4jc@virginia.edu#include <map>
5111723Sar4jc@virginia.edu#include <string>
5212119Sar4jc@virginia.edu#include <vector>
5311723Sar4jc@virginia.edu
5412104Snathanael.premillieu@arm.com#include "arch/generic/types.hh"
5512109SRekai.GonzalezAlberquilla@arm.com#include "arch/generic/vec_reg.hh"
5611911SBrandon.Potter@amd.com#include "arch/isa_traits.hh"
5711723Sar4jc@virginia.edu#include "arch/riscv/generated/max_inst_regs.hh"
5811723Sar4jc@virginia.edu#include "base/types.hh"
5911723Sar4jc@virginia.edu
6011723Sar4jc@virginia.edunamespace RiscvISA {
6111723Sar4jc@virginia.edu
6211723Sar4jc@virginia.eduusing RiscvISAInst::MaxInstSrcRegs;
6311723Sar4jc@virginia.eduusing RiscvISAInst::MaxInstDestRegs;
6411723Sar4jc@virginia.educonst int MaxMiscDestRegs = 1;
6511723Sar4jc@virginia.edu
6611723Sar4jc@virginia.edutypedef uint64_t IntReg;
6711723Sar4jc@virginia.edutypedef uint64_t FloatRegBits;
6811723Sar4jc@virginia.edutypedef double FloatReg;
6911723Sar4jc@virginia.edutypedef uint8_t CCReg; // Not applicable to Riscv
7011723Sar4jc@virginia.edutypedef uint64_t MiscReg;
7111723Sar4jc@virginia.edu
7212109SRekai.GonzalezAlberquilla@arm.com// dummy typedefs since we don't have vector regs
7312109SRekai.GonzalezAlberquilla@arm.comconst unsigned NumVecElemPerVecReg = 2;
7412109SRekai.GonzalezAlberquilla@arm.comusing VecElem = uint32_t;
7512109SRekai.GonzalezAlberquilla@arm.comusing VecReg = ::VecRegT<VecElem, NumVecElemPerVecReg, false>;
7612109SRekai.GonzalezAlberquilla@arm.comusing ConstVecReg = ::VecRegT<VecElem, NumVecElemPerVecReg, true>;
7712109SRekai.GonzalezAlberquilla@arm.comusing VecRegContainer = VecReg::Container;
7812109SRekai.GonzalezAlberquilla@arm.com
7911723Sar4jc@virginia.educonst int NumIntArchRegs = 32;
8011726Sar4jc@virginia.educonst int NumMicroIntRegs = 1;
8111726Sar4jc@virginia.educonst int NumIntRegs = NumIntArchRegs + NumMicroIntRegs;
8211725Sar4jc@virginia.educonst int NumFloatRegs = 32;
8312109SRekai.GonzalezAlberquilla@arm.com// This has to be one to prevent warnings that are treated as errors
8412109SRekai.GonzalezAlberquilla@arm.comconst unsigned NumVecRegs = 1;
8511723Sar4jc@virginia.educonst int NumCCRegs = 0;
8611723Sar4jc@virginia.educonst int NumMiscRegs = 4096;
8711723Sar4jc@virginia.edu
8811723Sar4jc@virginia.edu// Semantically meaningful register indices
8911723Sar4jc@virginia.educonst int ZeroReg = 0;
9011723Sar4jc@virginia.educonst int ReturnAddrReg = 1;
9111723Sar4jc@virginia.educonst int StackPointerReg = 2;
9211723Sar4jc@virginia.educonst int GlobalPointerReg = 3;
9311723Sar4jc@virginia.educonst int ThreadPointerReg = 4;
9411723Sar4jc@virginia.educonst int FramePointerReg = 8;
9512139Sar4jc@virginia.educonst int ReturnValueReg = 10;
9612119Sar4jc@virginia.educonst std::vector<int> ReturnValueRegs = {10, 11};
9712119Sar4jc@virginia.educonst std::vector<int> ArgumentRegs = {10, 11, 12, 13, 14, 15, 16, 17};
9811726Sar4jc@virginia.educonst int AMOTempReg = 32;
9911723Sar4jc@virginia.edu
10012413Sar4jc@virginia.educonst int SyscallPseudoReturnReg = 10;
10112413Sar4jc@virginia.educonst std::vector<int> SyscallArgumentRegs = {10, 11, 12, 13, 14, 15, 16};
10212413Sar4jc@virginia.educonst int SyscallNumReg = 17;
10312413Sar4jc@virginia.edu
10412119Sar4jc@virginia.educonst std::vector<std::string> IntRegNames = {
10512119Sar4jc@virginia.edu    "zero", "ra", "sp", "gp",
10611723Sar4jc@virginia.edu    "tp", "t0", "t1", "t2",
10711723Sar4jc@virginia.edu    "s0", "s1", "a0", "a1",
10811723Sar4jc@virginia.edu    "a2", "a3", "a4", "a5",
10911723Sar4jc@virginia.edu    "a6", "a7", "s2", "s3",
11011723Sar4jc@virginia.edu    "s4", "s5", "s6", "s7",
11111723Sar4jc@virginia.edu    "s8", "s9", "s10", "s11",
11212119Sar4jc@virginia.edu    "t3", "t4", "t5", "t6"
11312119Sar4jc@virginia.edu};
11412119Sar4jc@virginia.educonst std::vector<std::string> FloatRegNames = {
11512119Sar4jc@virginia.edu    "ft0", "ft1", "ft2", "ft3",
11612119Sar4jc@virginia.edu    "ft4", "ft5", "ft6", "ft7",
11712119Sar4jc@virginia.edu    "fs0", "fs1", "fa0", "fa1",
11812119Sar4jc@virginia.edu    "fa2", "fa3", "fa4", "fa5",
11912119Sar4jc@virginia.edu    "fa6", "fa7", "fs2", "fs3",
12012119Sar4jc@virginia.edu    "fs4", "fs5", "fs6", "fs7",
12112119Sar4jc@virginia.edu    "fs8", "fs9", "fs10", "fs11",
12212119Sar4jc@virginia.edu    "ft8", "ft9", "ft10", "ft11"
12312119Sar4jc@virginia.edu};
12411723Sar4jc@virginia.edu
12511723Sar4jc@virginia.eduenum MiscRegIndex {
12611963Sar4jc@virginia.edu    MISCREG_USTATUS = 0x000,
12711963Sar4jc@virginia.edu    MISCREG_UIE = 0x004,
12811963Sar4jc@virginia.edu    MISCREG_UTVEC = 0x005,
12911963Sar4jc@virginia.edu    MISCREG_USCRATCH = 0x040,
13011963Sar4jc@virginia.edu    MISCREG_UEPC = 0x041,
13111963Sar4jc@virginia.edu    MISCREG_UCAUSE = 0x042,
13211963Sar4jc@virginia.edu    MISCREG_UBADADDR = 0x043,
13311963Sar4jc@virginia.edu    MISCREG_UIP = 0x044,
13411723Sar4jc@virginia.edu    MISCREG_FFLAGS = 0x001,
13511723Sar4jc@virginia.edu    MISCREG_FRM = 0x002,
13611723Sar4jc@virginia.edu    MISCREG_FCSR = 0x003,
13711723Sar4jc@virginia.edu    MISCREG_CYCLE = 0xC00,
13811723Sar4jc@virginia.edu    MISCREG_TIME = 0xC01,
13911723Sar4jc@virginia.edu    MISCREG_INSTRET = 0xC02,
14011963Sar4jc@virginia.edu    MISCREG_HPMCOUNTER_BASE = 0xC03,
14111723Sar4jc@virginia.edu    MISCREG_CYCLEH = 0xC80,
14211723Sar4jc@virginia.edu    MISCREG_TIMEH = 0xC81,
14311723Sar4jc@virginia.edu    MISCREG_INSTRETH = 0xC82,
14411963Sar4jc@virginia.edu    MISCREG_HPMCOUNTERH_BASE = 0xC83,
14511723Sar4jc@virginia.edu
14611723Sar4jc@virginia.edu    MISCREG_SSTATUS = 0x100,
14711963Sar4jc@virginia.edu    MISCREG_SEDELEG = 0x102,
14811963Sar4jc@virginia.edu    MISCREG_SIDELEG = 0x103,
14911723Sar4jc@virginia.edu    MISCREG_SIE = 0x104,
15011963Sar4jc@virginia.edu    MISCREG_STVEC = 0x105,
15111723Sar4jc@virginia.edu    MISCREG_SSCRATCH = 0x140,
15211723Sar4jc@virginia.edu    MISCREG_SEPC = 0x141,
15311963Sar4jc@virginia.edu    MISCREG_SCAUSE = 0x142,
15411963Sar4jc@virginia.edu    MISCREG_SBADADDR = 0x143,
15511723Sar4jc@virginia.edu    MISCREG_SIP = 0x144,
15611723Sar4jc@virginia.edu    MISCREG_SPTBR = 0x180,
15711723Sar4jc@virginia.edu
15811723Sar4jc@virginia.edu    MISCREG_HSTATUS = 0x200,
15911963Sar4jc@virginia.edu    MISCREG_HEDELEG = 0x202,
16011963Sar4jc@virginia.edu    MISCREG_HIDELEG = 0x203,
16111963Sar4jc@virginia.edu    MISCREG_HIE = 0x204,
16211963Sar4jc@virginia.edu    MISCREG_HTVEC = 0x205,
16311723Sar4jc@virginia.edu    MISCREG_HSCRATCH = 0x240,
16411723Sar4jc@virginia.edu    MISCREG_HEPC = 0x241,
16511723Sar4jc@virginia.edu    MISCREG_HCAUSE = 0x242,
16611723Sar4jc@virginia.edu    MISCREG_HBADADDR = 0x243,
16711963Sar4jc@virginia.edu    MISCREG_HIP = 0x244,
16811723Sar4jc@virginia.edu
16911963Sar4jc@virginia.edu    MISCREG_MVENDORID = 0xF11,
17011963Sar4jc@virginia.edu    MISCREG_MARCHID = 0xF12,
17111963Sar4jc@virginia.edu    MISCREG_MIMPID = 0xF13,
17211963Sar4jc@virginia.edu    MISCREG_MHARTID = 0xF14,
17311723Sar4jc@virginia.edu    MISCREG_MSTATUS = 0x300,
17411963Sar4jc@virginia.edu    MISCREG_MISA = 0x301,
17511963Sar4jc@virginia.edu    MISCREG_MEDELEG = 0x302,
17611963Sar4jc@virginia.edu    MISCREG_MIDELEG = 0x303,
17711723Sar4jc@virginia.edu    MISCREG_MIE = 0x304,
17811963Sar4jc@virginia.edu    MISCREG_MTVEC = 0x305,
17911723Sar4jc@virginia.edu    MISCREG_MSCRATCH = 0x340,
18011723Sar4jc@virginia.edu    MISCREG_MEPC = 0x341,
18111723Sar4jc@virginia.edu    MISCREG_MCAUSE = 0x342,
18211723Sar4jc@virginia.edu    MISCREG_MBADADDR = 0x343,
18311723Sar4jc@virginia.edu    MISCREG_MIP = 0x344,
18411723Sar4jc@virginia.edu    MISCREG_MBASE = 0x380,
18511723Sar4jc@virginia.edu    MISCREG_MBOUND = 0x381,
18611723Sar4jc@virginia.edu    MISCREG_MIBASE = 0x382,
18711723Sar4jc@virginia.edu    MISCREG_MIBOUND = 0x383,
18811723Sar4jc@virginia.edu    MISCREG_MDBASE = 0x384,
18911723Sar4jc@virginia.edu    MISCREG_MDBOUND = 0x385,
19011963Sar4jc@virginia.edu    MISCREG_MCYCLE = 0xB00,
19111963Sar4jc@virginia.edu    MISCREG_MINSTRET = 0xB02,
19211963Sar4jc@virginia.edu    MISCREG_MHPMCOUNTER_BASE = 0xB03,
19311963Sar4jc@virginia.edu    MISCREG_MUCOUNTEREN = 0x320,
19411963Sar4jc@virginia.edu    MISCREG_MSCOUNTEREN = 0x321,
19511963Sar4jc@virginia.edu    MISCREG_MHCOUNTEREN = 0x322,
19611963Sar4jc@virginia.edu    MISCREG_MHPMEVENT_BASE = 0x323,
19711963Sar4jc@virginia.edu
19811963Sar4jc@virginia.edu    MISCREG_TSELECT = 0x7A0,
19911963Sar4jc@virginia.edu    MISCREG_TDATA1 = 0x7A1,
20011963Sar4jc@virginia.edu    MISCREG_TDATA2 = 0x7A2,
20111963Sar4jc@virginia.edu    MISCREG_TDATA3 = 0x7A3,
20211963Sar4jc@virginia.edu    MISCREG_DCSR = 0x7B0,
20311963Sar4jc@virginia.edu    MISCREG_DPC = 0x7B1,
20411963Sar4jc@virginia.edu    MISCREG_DSCRATCH = 0x7B2
20511723Sar4jc@virginia.edu};
20611723Sar4jc@virginia.edu
20712119Sar4jc@virginia.educonst std::map<int, std::string> MiscRegNames = {
20812119Sar4jc@virginia.edu    {MISCREG_USTATUS, "ustatus"},
20912119Sar4jc@virginia.edu    {MISCREG_UIE, "uie"},
21012119Sar4jc@virginia.edu    {MISCREG_UTVEC, "utvec"},
21112119Sar4jc@virginia.edu    {MISCREG_USCRATCH, "uscratch"},
21212119Sar4jc@virginia.edu    {MISCREG_UEPC, "uepc"},
21312119Sar4jc@virginia.edu    {MISCREG_UCAUSE, "ucause"},
21412119Sar4jc@virginia.edu    {MISCREG_UBADADDR, "ubadaddr"},
21512119Sar4jc@virginia.edu    {MISCREG_UIP, "uip"},
21612119Sar4jc@virginia.edu    {MISCREG_FFLAGS, "fflags"},
21712119Sar4jc@virginia.edu    {MISCREG_FRM, "frm"},
21812119Sar4jc@virginia.edu    {MISCREG_FCSR, "fcsr"},
21912119Sar4jc@virginia.edu    {MISCREG_CYCLE, "cycle"},
22012119Sar4jc@virginia.edu    {MISCREG_TIME, "time"},
22112119Sar4jc@virginia.edu    {MISCREG_INSTRET, "instret"},
22212119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 0, "hpmcounter03"},
22312119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 1, "hpmcounter04"},
22412119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 2, "hpmcounter05"},
22512119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 3, "hpmcounter06"},
22612119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 4, "hpmcounter07"},
22712119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 5, "hpmcounter08"},
22812119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 6, "hpmcounter09"},
22912119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 7, "hpmcounter10"},
23012119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 8, "hpmcounter11"},
23112119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 9, "hpmcounter12"},
23212119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 10, "hpmcounter13"},
23312119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 11, "hpmcounter14"},
23412119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 12, "hpmcounter15"},
23512119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 13, "hpmcounter16"},
23612119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 14, "hpmcounter17"},
23712119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 15, "hpmcounter18"},
23812119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 16, "hpmcounter19"},
23912119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 17, "hpmcounter20"},
24012119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 18, "hpmcounter21"},
24112119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 19, "hpmcounter22"},
24212119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 20, "hpmcounter23"},
24312119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 21, "hpmcounter24"},
24412119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 22, "hpmcounter25"},
24512119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 23, "hpmcounter26"},
24612119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 24, "hpmcounter27"},
24712119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 25, "hpmcounter28"},
24812119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 26, "hpmcounter29"},
24912119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 27, "hpmcounter30"},
25012119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTER_BASE + 28, "hpmcounter31"},
25112119Sar4jc@virginia.edu    {MISCREG_CYCLEH, "cycleh"},
25212119Sar4jc@virginia.edu    {MISCREG_TIMEH, "timeh"},
25312119Sar4jc@virginia.edu    {MISCREG_INSTRETH, "instreth"},
25412119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 0, "hpmcounterh03"},
25512119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 1, "hpmcounterh04"},
25612119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 2, "hpmcounterh05"},
25712119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 3, "hpmcounterh06"},
25812119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 4, "hpmcounterh07"},
25912119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 5, "hpmcounterh08"},
26012119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 6, "hpmcounterh09"},
26112119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 7, "hpmcounterh10"},
26212119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 8, "hpmcounterh11"},
26312119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 9, "hpmcounterh12"},
26412119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 10, "hpmcounterh13"},
26512119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 11, "hpmcounterh14"},
26612119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 12, "hpmcounterh15"},
26712119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 13, "hpmcounterh16"},
26812119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 14, "hpmcounterh17"},
26912119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 15, "hpmcounterh18"},
27012119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 16, "hpmcounterh19"},
27112119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 17, "hpmcounterh20"},
27212119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 18, "hpmcounterh21"},
27312119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 19, "hpmcounterh22"},
27412119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 20, "hpmcounterh23"},
27512119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 21, "hpmcounterh24"},
27612119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 22, "hpmcounterh25"},
27712119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 23, "hpmcounterh26"},
27812119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 24, "hpmcounterh27"},
27912119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 25, "hpmcounterh28"},
28012119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 26, "hpmcounterh29"},
28112119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 27, "hpmcounterh30"},
28212119Sar4jc@virginia.edu    {MISCREG_HPMCOUNTERH_BASE + 28, "hpmcounterh31"},
28312119Sar4jc@virginia.edu
28412119Sar4jc@virginia.edu    {MISCREG_SSTATUS, "sstatus"},
28512119Sar4jc@virginia.edu    {MISCREG_SEDELEG, "sedeleg"},
28612119Sar4jc@virginia.edu    {MISCREG_SIDELEG, "sideleg"},
28712119Sar4jc@virginia.edu    {MISCREG_SIE, "sie"},
28812119Sar4jc@virginia.edu    {MISCREG_STVEC, "stvec"},
28912119Sar4jc@virginia.edu    {MISCREG_SSCRATCH, "sscratch"},
29012119Sar4jc@virginia.edu    {MISCREG_SEPC, "sepc"},
29112119Sar4jc@virginia.edu    {MISCREG_SCAUSE, "scause"},
29212119Sar4jc@virginia.edu    {MISCREG_SBADADDR, "sbadaddr"},
29312119Sar4jc@virginia.edu    {MISCREG_SIP, "sip"},
29412119Sar4jc@virginia.edu    {MISCREG_SPTBR, "sptbr"},
29512119Sar4jc@virginia.edu
29612119Sar4jc@virginia.edu    {MISCREG_HSTATUS, "hstatus"},
29712119Sar4jc@virginia.edu    {MISCREG_HEDELEG, "hedeleg"},
29812119Sar4jc@virginia.edu    {MISCREG_HIDELEG, "hideleg"},
29912119Sar4jc@virginia.edu    {MISCREG_HIE, "hie"},
30012119Sar4jc@virginia.edu    {MISCREG_HTVEC, "htvec"},
30112119Sar4jc@virginia.edu    {MISCREG_HSCRATCH, "hscratch"},
30212119Sar4jc@virginia.edu    {MISCREG_HEPC, "hepc"},
30312119Sar4jc@virginia.edu    {MISCREG_HCAUSE, "hcause"},
30412119Sar4jc@virginia.edu    {MISCREG_HBADADDR, "hbadaddr"},
30512119Sar4jc@virginia.edu    {MISCREG_HIP, "hip"},
30612119Sar4jc@virginia.edu
30712119Sar4jc@virginia.edu    {MISCREG_MVENDORID, "mvendorid"},
30812119Sar4jc@virginia.edu    {MISCREG_MARCHID, "marchid"},
30912119Sar4jc@virginia.edu    {MISCREG_MIMPID, "mimpid"},
31012119Sar4jc@virginia.edu    {MISCREG_MHARTID, "mhartid"},
31112119Sar4jc@virginia.edu    {MISCREG_MSTATUS, "mstatus"},
31212119Sar4jc@virginia.edu    {MISCREG_MISA, "misa"},
31312119Sar4jc@virginia.edu    {MISCREG_MEDELEG, "medeleg"},
31412119Sar4jc@virginia.edu    {MISCREG_MIDELEG, "mideleg"},
31512119Sar4jc@virginia.edu    {MISCREG_MIE, "mie"},
31612119Sar4jc@virginia.edu    {MISCREG_MTVEC, "mtvec"},
31712119Sar4jc@virginia.edu    {MISCREG_MSCRATCH, "mscratch"},
31812119Sar4jc@virginia.edu    {MISCREG_MEPC, "mepc"},
31912119Sar4jc@virginia.edu    {MISCREG_MCAUSE, "mcause"},
32012119Sar4jc@virginia.edu    {MISCREG_MBADADDR, "mbadaddr"},
32112119Sar4jc@virginia.edu    {MISCREG_MIP, "mip"},
32212119Sar4jc@virginia.edu    {MISCREG_MBASE, "mbase"},
32312119Sar4jc@virginia.edu    {MISCREG_MBOUND, "mbound"},
32412119Sar4jc@virginia.edu    {MISCREG_MIBASE, "mibase"},
32512119Sar4jc@virginia.edu    {MISCREG_MIBOUND, "mibound"},
32612119Sar4jc@virginia.edu    {MISCREG_MDBASE, "mdbase"},
32712119Sar4jc@virginia.edu    {MISCREG_MDBOUND, "mdbound"},
32812119Sar4jc@virginia.edu    {MISCREG_MCYCLE, "mcycle"},
32912119Sar4jc@virginia.edu    {MISCREG_MINSTRET, "minstret"},
33012119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 0, "mhpmcounter03"},
33112119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 1, "mhpmcounter04"},
33212119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 2, "mhpmcounter05"},
33312119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 3, "mhpmcounter06"},
33412119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 4, "mhpmcounter07"},
33512119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 5, "mhpmcounter08"},
33612119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 6, "mhpmcounter09"},
33712119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 7, "mhpmcounter10"},
33812119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 8, "mhpmcounter11"},
33912119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 9, "mhpmcounter12"},
34012119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 10, "mhpmcounter13"},
34112119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 11, "mhpmcounter14"},
34212119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 12, "mhpmcounter15"},
34312119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 13, "mhpmcounter16"},
34412119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 14, "mhpmcounter17"},
34512119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 15, "mhpmcounter18"},
34612119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 16, "mhpmcounter19"},
34712119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 17, "mhpmcounter20"},
34812119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 18, "mhpmcounter21"},
34912119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 19, "mhpmcounter22"},
35012119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 20, "mhpmcounter23"},
35112119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 21, "mhpmcounter24"},
35212119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 22, "mhpmcounter25"},
35312119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 23, "mhpmcounter26"},
35412119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 24, "mhpmcounter27"},
35512119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 25, "mhpmcounter28"},
35612119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 26, "mhpmcounter29"},
35712119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 27, "mhpmcounter30"},
35812119Sar4jc@virginia.edu    {MISCREG_MHPMCOUNTER_BASE + 28, "mhpmcounter31"},
35912119Sar4jc@virginia.edu    {MISCREG_MUCOUNTEREN, "mucounteren"},
36012119Sar4jc@virginia.edu    {MISCREG_MSCOUNTEREN, "mscounteren"},
36112119Sar4jc@virginia.edu    {MISCREG_MHCOUNTEREN, "mhcounteren"},
36212119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 0, "mhpmevent03"},
36312119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 1, "mhpmevent04"},
36412119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 2, "mhpmevent05"},
36512119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 3, "mhpmevent06"},
36612119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 4, "mhpmevent07"},
36712119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 5, "mhpmevent08"},
36812119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 6, "mhpmevent09"},
36912119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 7, "mhpmevent10"},
37012119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 8, "mhpmevent11"},
37112119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 9, "mhpmevent12"},
37212119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 10, "mhpmevent13"},
37312119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 11, "mhpmevent14"},
37412119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 12, "mhpmevent15"},
37512119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 13, "mhpmevent16"},
37612119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 14, "mhpmevent17"},
37712119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 15, "mhpmevent18"},
37812119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 16, "mhpmevent19"},
37912119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 17, "mhpmevent20"},
38012119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 18, "mhpmevent21"},
38112119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 19, "mhpmevent22"},
38212119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 20, "mhpmevent23"},
38312119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 21, "mhpmevent24"},
38412119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 22, "mhpmevent25"},
38512119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 23, "mhpmevent26"},
38612119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 24, "mhpmevent27"},
38712119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 25, "mhpmevent28"},
38812119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 26, "mhpmevent29"},
38912119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 27, "mhpmevent30"},
39012119Sar4jc@virginia.edu    {MISCREG_MHPMEVENT_BASE + 28, "mhpmevent31"},
39112119Sar4jc@virginia.edu
39212119Sar4jc@virginia.edu    {MISCREG_TSELECT, "tselect"},
39312119Sar4jc@virginia.edu    {MISCREG_TDATA1, "tdata1"},
39412119Sar4jc@virginia.edu    {MISCREG_TDATA2, "tdata2"},
39512119Sar4jc@virginia.edu    {MISCREG_TDATA3, "tdata3"},
39612119Sar4jc@virginia.edu    {MISCREG_DCSR, "dcsr"},
39712119Sar4jc@virginia.edu    {MISCREG_DPC, "dpc"},
39812119Sar4jc@virginia.edu    {MISCREG_DSCRATCH, "dscratch"}
39912119Sar4jc@virginia.edu};
40012119Sar4jc@virginia.edu
40111723Sar4jc@virginia.edu}
40211723Sar4jc@virginia.edu
40311723Sar4jc@virginia.edu#endif // __ARCH_RISCV_REGISTERS_HH__
404