registers.hh revision 13610
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" 5513610Sgiacomo.gabrielli@arm.com#include "arch/generic/vec_pred_reg.hh" 5612109SRekai.GonzalezAlberquilla@arm.com#include "arch/generic/vec_reg.hh" 5711911SBrandon.Potter@amd.com#include "arch/isa_traits.hh" 5811723Sar4jc@virginia.edu#include "arch/riscv/generated/max_inst_regs.hh" 5911723Sar4jc@virginia.edu#include "base/types.hh" 6011723Sar4jc@virginia.edu 6111723Sar4jc@virginia.edunamespace RiscvISA { 6211723Sar4jc@virginia.edu 6311723Sar4jc@virginia.eduusing RiscvISAInst::MaxInstSrcRegs; 6411723Sar4jc@virginia.eduusing RiscvISAInst::MaxInstDestRegs; 6511723Sar4jc@virginia.educonst int MaxMiscDestRegs = 1; 6611723Sar4jc@virginia.edu 6713556Sgabeblack@google.comtypedef RegVal IntReg; 6813556Sgabeblack@google.comtypedef RegVal FloatRegBits; 6911723Sar4jc@virginia.edutypedef uint8_t CCReg; // Not applicable to Riscv 7013556Sgabeblack@google.comtypedef RegVal MiscReg; 7111723Sar4jc@virginia.edu 7213610Sgiacomo.gabrielli@arm.com// Not applicable to RISC-V 7313610Sgiacomo.gabrielli@arm.comusing VecElem = ::DummyVecElem; 7413610Sgiacomo.gabrielli@arm.comusing VecReg = ::DummyVecReg; 7513610Sgiacomo.gabrielli@arm.comusing ConstVecReg = ::DummyConstVecReg; 7613610Sgiacomo.gabrielli@arm.comusing VecRegContainer = ::DummyVecRegContainer; 7713610Sgiacomo.gabrielli@arm.comconstexpr unsigned NumVecElemPerVecReg = ::DummyNumVecElemPerVecReg; 7813610Sgiacomo.gabrielli@arm.comconstexpr size_t VecRegSizeBytes = ::DummyVecRegSizeBytes; 7913610Sgiacomo.gabrielli@arm.com 8013610Sgiacomo.gabrielli@arm.com// Not applicable to RISC-V 8113610Sgiacomo.gabrielli@arm.comusing VecPredReg = ::DummyVecPredReg; 8213610Sgiacomo.gabrielli@arm.comusing ConstVecPredReg = ::DummyConstVecPredReg; 8313610Sgiacomo.gabrielli@arm.comusing VecPredRegContainer = ::DummyVecPredRegContainer; 8413610Sgiacomo.gabrielli@arm.comconstexpr size_t VecPredRegSizeBits = ::DummyVecPredRegSizeBits; 8513610Sgiacomo.gabrielli@arm.comconstexpr bool VecPredRegHasPackedRepr = ::DummyVecPredRegHasPackedRepr; 8612109SRekai.GonzalezAlberquilla@arm.com 8711723Sar4jc@virginia.educonst int NumIntArchRegs = 32; 8811726Sar4jc@virginia.educonst int NumMicroIntRegs = 1; 8911726Sar4jc@virginia.educonst int NumIntRegs = NumIntArchRegs + NumMicroIntRegs; 9011725Sar4jc@virginia.educonst int NumFloatRegs = 32; 9113610Sgiacomo.gabrielli@arm.com 9213610Sgiacomo.gabrielli@arm.comconst unsigned NumVecRegs = 1; // Not applicable to RISC-V 9313610Sgiacomo.gabrielli@arm.com // (1 to prevent warnings) 9413610Sgiacomo.gabrielli@arm.comconst int NumVecPredRegs = 1; // Not applicable to RISC-V 9513610Sgiacomo.gabrielli@arm.com // (1 to prevent warnings) 9613610Sgiacomo.gabrielli@arm.com 9711723Sar4jc@virginia.educonst int NumCCRegs = 0; 9811723Sar4jc@virginia.edu 9911723Sar4jc@virginia.edu// Semantically meaningful register indices 10011723Sar4jc@virginia.educonst int ZeroReg = 0; 10111723Sar4jc@virginia.educonst int ReturnAddrReg = 1; 10211723Sar4jc@virginia.educonst int StackPointerReg = 2; 10311723Sar4jc@virginia.educonst int GlobalPointerReg = 3; 10411723Sar4jc@virginia.educonst int ThreadPointerReg = 4; 10511723Sar4jc@virginia.educonst int FramePointerReg = 8; 10612139Sar4jc@virginia.educonst int ReturnValueReg = 10; 10712119Sar4jc@virginia.educonst std::vector<int> ReturnValueRegs = {10, 11}; 10812119Sar4jc@virginia.educonst std::vector<int> ArgumentRegs = {10, 11, 12, 13, 14, 15, 16, 17}; 10911726Sar4jc@virginia.educonst int AMOTempReg = 32; 11011723Sar4jc@virginia.edu 11112413Sar4jc@virginia.educonst int SyscallPseudoReturnReg = 10; 11212413Sar4jc@virginia.educonst std::vector<int> SyscallArgumentRegs = {10, 11, 12, 13, 14, 15, 16}; 11312413Sar4jc@virginia.educonst int SyscallNumReg = 17; 11412413Sar4jc@virginia.edu 11512119Sar4jc@virginia.educonst std::vector<std::string> IntRegNames = { 11612119Sar4jc@virginia.edu "zero", "ra", "sp", "gp", 11711723Sar4jc@virginia.edu "tp", "t0", "t1", "t2", 11811723Sar4jc@virginia.edu "s0", "s1", "a0", "a1", 11911723Sar4jc@virginia.edu "a2", "a3", "a4", "a5", 12011723Sar4jc@virginia.edu "a6", "a7", "s2", "s3", 12111723Sar4jc@virginia.edu "s4", "s5", "s6", "s7", 12211723Sar4jc@virginia.edu "s8", "s9", "s10", "s11", 12312119Sar4jc@virginia.edu "t3", "t4", "t5", "t6" 12412119Sar4jc@virginia.edu}; 12512119Sar4jc@virginia.educonst std::vector<std::string> FloatRegNames = { 12612119Sar4jc@virginia.edu "ft0", "ft1", "ft2", "ft3", 12712119Sar4jc@virginia.edu "ft4", "ft5", "ft6", "ft7", 12812119Sar4jc@virginia.edu "fs0", "fs1", "fa0", "fa1", 12912119Sar4jc@virginia.edu "fa2", "fa3", "fa4", "fa5", 13012119Sar4jc@virginia.edu "fa6", "fa7", "fs2", "fs3", 13112119Sar4jc@virginia.edu "fs4", "fs5", "fs6", "fs7", 13212119Sar4jc@virginia.edu "fs8", "fs9", "fs10", "fs11", 13312119Sar4jc@virginia.edu "ft8", "ft9", "ft10", "ft11" 13412119Sar4jc@virginia.edu}; 13511723Sar4jc@virginia.edu 13611723Sar4jc@virginia.eduenum MiscRegIndex { 13712695Sar4jc@virginia.edu MISCREG_PRV = 0, 13812695Sar4jc@virginia.edu MISCREG_ISA, 13912695Sar4jc@virginia.edu MISCREG_VENDORID, 14012695Sar4jc@virginia.edu MISCREG_ARCHID, 14112695Sar4jc@virginia.edu MISCREG_IMPID, 14212695Sar4jc@virginia.edu MISCREG_HARTID, 14312695Sar4jc@virginia.edu MISCREG_STATUS, 14412695Sar4jc@virginia.edu MISCREG_IP, 14512695Sar4jc@virginia.edu MISCREG_IE, 14612695Sar4jc@virginia.edu MISCREG_CYCLE, 14712695Sar4jc@virginia.edu MISCREG_TIME, 14812695Sar4jc@virginia.edu MISCREG_INSTRET, 14912695Sar4jc@virginia.edu MISCREG_HPMCOUNTER03, 15012695Sar4jc@virginia.edu MISCREG_HPMCOUNTER04, 15112695Sar4jc@virginia.edu MISCREG_HPMCOUNTER05, 15212695Sar4jc@virginia.edu MISCREG_HPMCOUNTER06, 15312695Sar4jc@virginia.edu MISCREG_HPMCOUNTER07, 15412695Sar4jc@virginia.edu MISCREG_HPMCOUNTER08, 15512695Sar4jc@virginia.edu MISCREG_HPMCOUNTER09, 15612695Sar4jc@virginia.edu MISCREG_HPMCOUNTER10, 15712695Sar4jc@virginia.edu MISCREG_HPMCOUNTER11, 15812695Sar4jc@virginia.edu MISCREG_HPMCOUNTER12, 15912695Sar4jc@virginia.edu MISCREG_HPMCOUNTER13, 16012695Sar4jc@virginia.edu MISCREG_HPMCOUNTER14, 16112695Sar4jc@virginia.edu MISCREG_HPMCOUNTER15, 16212695Sar4jc@virginia.edu MISCREG_HPMCOUNTER16, 16312695Sar4jc@virginia.edu MISCREG_HPMCOUNTER17, 16412695Sar4jc@virginia.edu MISCREG_HPMCOUNTER18, 16512695Sar4jc@virginia.edu MISCREG_HPMCOUNTER19, 16612695Sar4jc@virginia.edu MISCREG_HPMCOUNTER20, 16712695Sar4jc@virginia.edu MISCREG_HPMCOUNTER21, 16812695Sar4jc@virginia.edu MISCREG_HPMCOUNTER22, 16912695Sar4jc@virginia.edu MISCREG_HPMCOUNTER23, 17012695Sar4jc@virginia.edu MISCREG_HPMCOUNTER24, 17112695Sar4jc@virginia.edu MISCREG_HPMCOUNTER25, 17212695Sar4jc@virginia.edu MISCREG_HPMCOUNTER26, 17312695Sar4jc@virginia.edu MISCREG_HPMCOUNTER27, 17412695Sar4jc@virginia.edu MISCREG_HPMCOUNTER28, 17512695Sar4jc@virginia.edu MISCREG_HPMCOUNTER29, 17612695Sar4jc@virginia.edu MISCREG_HPMCOUNTER30, 17712695Sar4jc@virginia.edu MISCREG_HPMCOUNTER31, 17812695Sar4jc@virginia.edu MISCREG_HPMEVENT03, 17912695Sar4jc@virginia.edu MISCREG_HPMEVENT04, 18012695Sar4jc@virginia.edu MISCREG_HPMEVENT05, 18112695Sar4jc@virginia.edu MISCREG_HPMEVENT06, 18212695Sar4jc@virginia.edu MISCREG_HPMEVENT07, 18312695Sar4jc@virginia.edu MISCREG_HPMEVENT08, 18412695Sar4jc@virginia.edu MISCREG_HPMEVENT09, 18512695Sar4jc@virginia.edu MISCREG_HPMEVENT10, 18612695Sar4jc@virginia.edu MISCREG_HPMEVENT11, 18712695Sar4jc@virginia.edu MISCREG_HPMEVENT12, 18812695Sar4jc@virginia.edu MISCREG_HPMEVENT13, 18912695Sar4jc@virginia.edu MISCREG_HPMEVENT14, 19012695Sar4jc@virginia.edu MISCREG_HPMEVENT15, 19112695Sar4jc@virginia.edu MISCREG_HPMEVENT16, 19212695Sar4jc@virginia.edu MISCREG_HPMEVENT17, 19312695Sar4jc@virginia.edu MISCREG_HPMEVENT18, 19412695Sar4jc@virginia.edu MISCREG_HPMEVENT19, 19512695Sar4jc@virginia.edu MISCREG_HPMEVENT20, 19612695Sar4jc@virginia.edu MISCREG_HPMEVENT21, 19712695Sar4jc@virginia.edu MISCREG_HPMEVENT22, 19812695Sar4jc@virginia.edu MISCREG_HPMEVENT23, 19912695Sar4jc@virginia.edu MISCREG_HPMEVENT24, 20012695Sar4jc@virginia.edu MISCREG_HPMEVENT25, 20112695Sar4jc@virginia.edu MISCREG_HPMEVENT26, 20212695Sar4jc@virginia.edu MISCREG_HPMEVENT27, 20312695Sar4jc@virginia.edu MISCREG_HPMEVENT28, 20412695Sar4jc@virginia.edu MISCREG_HPMEVENT29, 20512695Sar4jc@virginia.edu MISCREG_HPMEVENT30, 20612695Sar4jc@virginia.edu MISCREG_HPMEVENT31, 20712695Sar4jc@virginia.edu MISCREG_TSELECT, 20812695Sar4jc@virginia.edu MISCREG_TDATA1, 20912695Sar4jc@virginia.edu MISCREG_TDATA2, 21012695Sar4jc@virginia.edu MISCREG_TDATA3, 21112695Sar4jc@virginia.edu MISCREG_DCSR, 21212695Sar4jc@virginia.edu MISCREG_DPC, 21312695Sar4jc@virginia.edu MISCREG_DSCRATCH, 21411723Sar4jc@virginia.edu 21512695Sar4jc@virginia.edu MISCREG_MEDELEG, 21612695Sar4jc@virginia.edu MISCREG_MIDELEG, 21712695Sar4jc@virginia.edu MISCREG_MTVEC, 21812695Sar4jc@virginia.edu MISCREG_MCOUNTEREN, 21912695Sar4jc@virginia.edu MISCREG_MSCRATCH, 22012695Sar4jc@virginia.edu MISCREG_MEPC, 22112695Sar4jc@virginia.edu MISCREG_MCAUSE, 22212695Sar4jc@virginia.edu MISCREG_MTVAL, 22312695Sar4jc@virginia.edu MISCREG_PMPCFG0, 22412695Sar4jc@virginia.edu // pmpcfg1 rv32 only 22512695Sar4jc@virginia.edu MISCREG_PMPCFG2, 22612695Sar4jc@virginia.edu // pmpcfg3 rv32 only 22712695Sar4jc@virginia.edu MISCREG_PMPADDR00, 22812695Sar4jc@virginia.edu MISCREG_PMPADDR01, 22912695Sar4jc@virginia.edu MISCREG_PMPADDR02, 23012695Sar4jc@virginia.edu MISCREG_PMPADDR03, 23112695Sar4jc@virginia.edu MISCREG_PMPADDR04, 23212695Sar4jc@virginia.edu MISCREG_PMPADDR05, 23312695Sar4jc@virginia.edu MISCREG_PMPADDR06, 23412695Sar4jc@virginia.edu MISCREG_PMPADDR07, 23512695Sar4jc@virginia.edu MISCREG_PMPADDR08, 23612695Sar4jc@virginia.edu MISCREG_PMPADDR09, 23712695Sar4jc@virginia.edu MISCREG_PMPADDR10, 23812695Sar4jc@virginia.edu MISCREG_PMPADDR11, 23912695Sar4jc@virginia.edu MISCREG_PMPADDR12, 24012695Sar4jc@virginia.edu MISCREG_PMPADDR13, 24112695Sar4jc@virginia.edu MISCREG_PMPADDR14, 24212695Sar4jc@virginia.edu MISCREG_PMPADDR15, 24311723Sar4jc@virginia.edu 24412695Sar4jc@virginia.edu MISCREG_SEDELEG, 24512695Sar4jc@virginia.edu MISCREG_SIDELEG, 24612695Sar4jc@virginia.edu MISCREG_STVEC, 24712695Sar4jc@virginia.edu MISCREG_SCOUNTEREN, 24812695Sar4jc@virginia.edu MISCREG_SSCRATCH, 24912695Sar4jc@virginia.edu MISCREG_SEPC, 25012695Sar4jc@virginia.edu MISCREG_SCAUSE, 25112695Sar4jc@virginia.edu MISCREG_STVAL, 25212695Sar4jc@virginia.edu MISCREG_SATP, 25311723Sar4jc@virginia.edu 25412695Sar4jc@virginia.edu MISCREG_UTVEC, 25512695Sar4jc@virginia.edu MISCREG_USCRATCH, 25612695Sar4jc@virginia.edu MISCREG_UEPC, 25712695Sar4jc@virginia.edu MISCREG_UCAUSE, 25812695Sar4jc@virginia.edu MISCREG_UTVAL, 25912695Sar4jc@virginia.edu MISCREG_FFLAGS, 26012695Sar4jc@virginia.edu MISCREG_FRM, 26111963Sar4jc@virginia.edu 26212695Sar4jc@virginia.edu NUM_MISCREGS 26312695Sar4jc@virginia.edu}; 26412695Sar4jc@virginia.educonst int NumMiscRegs = NUM_MISCREGS; 26512695Sar4jc@virginia.edu 26612695Sar4jc@virginia.eduenum CSRIndex { 26712695Sar4jc@virginia.edu CSR_USTATUS = 0x000, 26812695Sar4jc@virginia.edu CSR_UIE = 0x004, 26912695Sar4jc@virginia.edu CSR_UTVEC = 0x005, 27012695Sar4jc@virginia.edu CSR_USCRATCH = 0x040, 27112695Sar4jc@virginia.edu CSR_UEPC = 0x041, 27212695Sar4jc@virginia.edu CSR_UCAUSE = 0x042, 27312695Sar4jc@virginia.edu CSR_UTVAL = 0x043, 27412695Sar4jc@virginia.edu CSR_UIP = 0x044, 27512695Sar4jc@virginia.edu CSR_FFLAGS = 0x001, 27612695Sar4jc@virginia.edu CSR_FRM = 0x002, 27712695Sar4jc@virginia.edu CSR_FCSR = 0x003, 27812695Sar4jc@virginia.edu CSR_CYCLE = 0xC00, 27912695Sar4jc@virginia.edu CSR_TIME = 0xC01, 28012695Sar4jc@virginia.edu CSR_INSTRET = 0xC02, 28112695Sar4jc@virginia.edu CSR_HPMCOUNTER03 = 0xC03, 28212695Sar4jc@virginia.edu CSR_HPMCOUNTER04 = 0xC04, 28312695Sar4jc@virginia.edu CSR_HPMCOUNTER05 = 0xC05, 28412695Sar4jc@virginia.edu CSR_HPMCOUNTER06 = 0xC06, 28512695Sar4jc@virginia.edu CSR_HPMCOUNTER07 = 0xC07, 28612695Sar4jc@virginia.edu CSR_HPMCOUNTER08 = 0xC08, 28712695Sar4jc@virginia.edu CSR_HPMCOUNTER09 = 0xC09, 28812695Sar4jc@virginia.edu CSR_HPMCOUNTER10 = 0xC0A, 28912695Sar4jc@virginia.edu CSR_HPMCOUNTER11 = 0xC0B, 29012695Sar4jc@virginia.edu CSR_HPMCOUNTER12 = 0xC0C, 29112695Sar4jc@virginia.edu CSR_HPMCOUNTER13 = 0xC0D, 29212695Sar4jc@virginia.edu CSR_HPMCOUNTER14 = 0xC0E, 29312695Sar4jc@virginia.edu CSR_HPMCOUNTER15 = 0xC0F, 29412695Sar4jc@virginia.edu CSR_HPMCOUNTER16 = 0xC10, 29512695Sar4jc@virginia.edu CSR_HPMCOUNTER17 = 0xC11, 29612695Sar4jc@virginia.edu CSR_HPMCOUNTER18 = 0xC12, 29712695Sar4jc@virginia.edu CSR_HPMCOUNTER19 = 0xC13, 29812695Sar4jc@virginia.edu CSR_HPMCOUNTER20 = 0xC14, 29912695Sar4jc@virginia.edu CSR_HPMCOUNTER21 = 0xC15, 30012695Sar4jc@virginia.edu CSR_HPMCOUNTER22 = 0xC16, 30112695Sar4jc@virginia.edu CSR_HPMCOUNTER23 = 0xC17, 30212695Sar4jc@virginia.edu CSR_HPMCOUNTER24 = 0xC18, 30312695Sar4jc@virginia.edu CSR_HPMCOUNTER25 = 0xC19, 30412695Sar4jc@virginia.edu CSR_HPMCOUNTER26 = 0xC1A, 30512695Sar4jc@virginia.edu CSR_HPMCOUNTER27 = 0xC1B, 30612695Sar4jc@virginia.edu CSR_HPMCOUNTER28 = 0xC1C, 30712695Sar4jc@virginia.edu CSR_HPMCOUNTER29 = 0xC1D, 30812695Sar4jc@virginia.edu CSR_HPMCOUNTER30 = 0xC1E, 30912695Sar4jc@virginia.edu CSR_HPMCOUNTER31 = 0xC1F, 31012695Sar4jc@virginia.edu // HPMCOUNTERH rv32 only 31112695Sar4jc@virginia.edu 31212695Sar4jc@virginia.edu CSR_SSTATUS = 0x100, 31312695Sar4jc@virginia.edu CSR_SEDELEG = 0x102, 31412695Sar4jc@virginia.edu CSR_SIDELEG = 0x103, 31512695Sar4jc@virginia.edu CSR_SIE = 0x104, 31612695Sar4jc@virginia.edu CSR_STVEC = 0x105, 31712695Sar4jc@virginia.edu CSR_SSCRATCH = 0x140, 31812695Sar4jc@virginia.edu CSR_SEPC = 0x141, 31912695Sar4jc@virginia.edu CSR_SCAUSE = 0x142, 32012695Sar4jc@virginia.edu CSR_STVAL = 0x143, 32112695Sar4jc@virginia.edu CSR_SIP = 0x144, 32212695Sar4jc@virginia.edu CSR_SATP = 0x180, 32312695Sar4jc@virginia.edu 32412695Sar4jc@virginia.edu CSR_MVENDORID = 0xF11, 32512695Sar4jc@virginia.edu CSR_MARCHID = 0xF12, 32612695Sar4jc@virginia.edu CSR_MIMPID = 0xF13, 32712695Sar4jc@virginia.edu CSR_MHARTID = 0xF14, 32812695Sar4jc@virginia.edu CSR_MSTATUS = 0x300, 32912695Sar4jc@virginia.edu CSR_MISA = 0x301, 33012695Sar4jc@virginia.edu CSR_MEDELEG = 0x302, 33112695Sar4jc@virginia.edu CSR_MIDELEG = 0x303, 33212695Sar4jc@virginia.edu CSR_MIE = 0x304, 33312695Sar4jc@virginia.edu CSR_MTVEC = 0x305, 33412695Sar4jc@virginia.edu CSR_MSCRATCH = 0x340, 33512695Sar4jc@virginia.edu CSR_MEPC = 0x341, 33612695Sar4jc@virginia.edu CSR_MCAUSE = 0x342, 33712695Sar4jc@virginia.edu CSR_MTVAL = 0x343, 33812695Sar4jc@virginia.edu CSR_MIP = 0x344, 33912695Sar4jc@virginia.edu CSR_PMPCFG0 = 0x3A0, 34012695Sar4jc@virginia.edu // pmpcfg1 rv32 only 34112695Sar4jc@virginia.edu CSR_PMPCFG2 = 0x3A2, 34212695Sar4jc@virginia.edu // pmpcfg3 rv32 only 34312695Sar4jc@virginia.edu CSR_PMPADDR00 = 0x3B0, 34412695Sar4jc@virginia.edu CSR_PMPADDR01 = 0x3B1, 34512695Sar4jc@virginia.edu CSR_PMPADDR02 = 0x3B2, 34612695Sar4jc@virginia.edu CSR_PMPADDR03 = 0x3B3, 34712695Sar4jc@virginia.edu CSR_PMPADDR04 = 0x3B4, 34812695Sar4jc@virginia.edu CSR_PMPADDR05 = 0x3B5, 34912695Sar4jc@virginia.edu CSR_PMPADDR06 = 0x3B6, 35012695Sar4jc@virginia.edu CSR_PMPADDR07 = 0x3B7, 35112695Sar4jc@virginia.edu CSR_PMPADDR08 = 0x3B8, 35212695Sar4jc@virginia.edu CSR_PMPADDR09 = 0x3B9, 35312695Sar4jc@virginia.edu CSR_PMPADDR10 = 0x3BA, 35412695Sar4jc@virginia.edu CSR_PMPADDR11 = 0x3BB, 35512695Sar4jc@virginia.edu CSR_PMPADDR12 = 0x3BC, 35612695Sar4jc@virginia.edu CSR_PMPADDR13 = 0x3BD, 35712695Sar4jc@virginia.edu CSR_PMPADDR14 = 0x3BE, 35812695Sar4jc@virginia.edu CSR_PMPADDR15 = 0x3BF, 35912695Sar4jc@virginia.edu CSR_MCYCLE = 0xB00, 36012695Sar4jc@virginia.edu CSR_MINSTRET = 0xB02, 36112695Sar4jc@virginia.edu CSR_MHPMCOUNTER03 = 0xC03, 36212695Sar4jc@virginia.edu CSR_MHPMCOUNTER04 = 0xC04, 36312695Sar4jc@virginia.edu CSR_MHPMCOUNTER05 = 0xC05, 36412695Sar4jc@virginia.edu CSR_MHPMCOUNTER06 = 0xC06, 36512695Sar4jc@virginia.edu CSR_MHPMCOUNTER07 = 0xC07, 36612695Sar4jc@virginia.edu CSR_MHPMCOUNTER08 = 0xC08, 36712695Sar4jc@virginia.edu CSR_MHPMCOUNTER09 = 0xC09, 36812695Sar4jc@virginia.edu CSR_MHPMCOUNTER10 = 0xC0A, 36912695Sar4jc@virginia.edu CSR_MHPMCOUNTER11 = 0xC0B, 37012695Sar4jc@virginia.edu CSR_MHPMCOUNTER12 = 0xC0C, 37112695Sar4jc@virginia.edu CSR_MHPMCOUNTER13 = 0xC0D, 37212695Sar4jc@virginia.edu CSR_MHPMCOUNTER14 = 0xC0E, 37312695Sar4jc@virginia.edu CSR_MHPMCOUNTER15 = 0xC0F, 37412695Sar4jc@virginia.edu CSR_MHPMCOUNTER16 = 0xC10, 37512695Sar4jc@virginia.edu CSR_MHPMCOUNTER17 = 0xC11, 37612695Sar4jc@virginia.edu CSR_MHPMCOUNTER18 = 0xC12, 37712695Sar4jc@virginia.edu CSR_MHPMCOUNTER19 = 0xC13, 37812695Sar4jc@virginia.edu CSR_MHPMCOUNTER20 = 0xC14, 37912695Sar4jc@virginia.edu CSR_MHPMCOUNTER21 = 0xC15, 38012695Sar4jc@virginia.edu CSR_MHPMCOUNTER22 = 0xC16, 38112695Sar4jc@virginia.edu CSR_MHPMCOUNTER23 = 0xC17, 38212695Sar4jc@virginia.edu CSR_MHPMCOUNTER24 = 0xC18, 38312695Sar4jc@virginia.edu CSR_MHPMCOUNTER25 = 0xC19, 38412695Sar4jc@virginia.edu CSR_MHPMCOUNTER26 = 0xC1A, 38512695Sar4jc@virginia.edu CSR_MHPMCOUNTER27 = 0xC1B, 38612695Sar4jc@virginia.edu CSR_MHPMCOUNTER28 = 0xC1C, 38712695Sar4jc@virginia.edu CSR_MHPMCOUNTER29 = 0xC1D, 38812695Sar4jc@virginia.edu CSR_MHPMCOUNTER30 = 0xC1E, 38912695Sar4jc@virginia.edu CSR_MHPMCOUNTER31 = 0xC1F, 39012695Sar4jc@virginia.edu // MHPMCOUNTERH rv32 only 39112695Sar4jc@virginia.edu CSR_MHPMEVENT03 = 0x323, 39212695Sar4jc@virginia.edu CSR_MHPMEVENT04 = 0x324, 39312695Sar4jc@virginia.edu CSR_MHPMEVENT05 = 0x325, 39412695Sar4jc@virginia.edu CSR_MHPMEVENT06 = 0x326, 39512695Sar4jc@virginia.edu CSR_MHPMEVENT07 = 0x327, 39612695Sar4jc@virginia.edu CSR_MHPMEVENT08 = 0x328, 39712695Sar4jc@virginia.edu CSR_MHPMEVENT09 = 0x329, 39812695Sar4jc@virginia.edu CSR_MHPMEVENT10 = 0x32A, 39912695Sar4jc@virginia.edu CSR_MHPMEVENT11 = 0x32B, 40012695Sar4jc@virginia.edu CSR_MHPMEVENT12 = 0x32C, 40112695Sar4jc@virginia.edu CSR_MHPMEVENT13 = 0x32D, 40212695Sar4jc@virginia.edu CSR_MHPMEVENT14 = 0x32E, 40312695Sar4jc@virginia.edu CSR_MHPMEVENT15 = 0x32F, 40412695Sar4jc@virginia.edu CSR_MHPMEVENT16 = 0x330, 40512695Sar4jc@virginia.edu CSR_MHPMEVENT17 = 0x331, 40612695Sar4jc@virginia.edu CSR_MHPMEVENT18 = 0x332, 40712695Sar4jc@virginia.edu CSR_MHPMEVENT19 = 0x333, 40812695Sar4jc@virginia.edu CSR_MHPMEVENT20 = 0x334, 40912695Sar4jc@virginia.edu CSR_MHPMEVENT21 = 0x335, 41012695Sar4jc@virginia.edu CSR_MHPMEVENT22 = 0x336, 41112695Sar4jc@virginia.edu CSR_MHPMEVENT23 = 0x337, 41212695Sar4jc@virginia.edu CSR_MHPMEVENT24 = 0x338, 41312695Sar4jc@virginia.edu CSR_MHPMEVENT25 = 0x339, 41412695Sar4jc@virginia.edu CSR_MHPMEVENT26 = 0x33A, 41512695Sar4jc@virginia.edu CSR_MHPMEVENT27 = 0x33B, 41612695Sar4jc@virginia.edu CSR_MHPMEVENT28 = 0x33C, 41712695Sar4jc@virginia.edu CSR_MHPMEVENT29 = 0x33D, 41812695Sar4jc@virginia.edu CSR_MHPMEVENT30 = 0x33E, 41912695Sar4jc@virginia.edu CSR_MHPMEVENT31 = 0x33F, 42012695Sar4jc@virginia.edu 42112695Sar4jc@virginia.edu CSR_TSELECT = 0x7A0, 42212695Sar4jc@virginia.edu CSR_TDATA1 = 0x7A1, 42312695Sar4jc@virginia.edu CSR_TDATA2 = 0x7A2, 42412695Sar4jc@virginia.edu CSR_TDATA3 = 0x7A3, 42512695Sar4jc@virginia.edu CSR_DCSR = 0x7B0, 42612695Sar4jc@virginia.edu CSR_DPC = 0x7B1, 42712695Sar4jc@virginia.edu CSR_DSCRATCH = 0x7B2 42811723Sar4jc@virginia.edu}; 42911723Sar4jc@virginia.edu 43012695Sar4jc@virginia.edustruct CSRMetadata 43112695Sar4jc@virginia.edu{ 43212695Sar4jc@virginia.edu const std::string name; 43312695Sar4jc@virginia.edu const int physIndex; 43412695Sar4jc@virginia.edu}; 43512119Sar4jc@virginia.edu 43612695Sar4jc@virginia.educonst std::map<int, CSRMetadata> CSRData = { 43712695Sar4jc@virginia.edu {CSR_USTATUS, {"ustatus", MISCREG_STATUS}}, 43812695Sar4jc@virginia.edu {CSR_UIE, {"uie", MISCREG_IE}}, 43912695Sar4jc@virginia.edu {CSR_UTVEC, {"utvec", MISCREG_UTVEC}}, 44012695Sar4jc@virginia.edu {CSR_USCRATCH, {"uscratch", MISCREG_USCRATCH}}, 44112695Sar4jc@virginia.edu {CSR_UEPC, {"uepc", MISCREG_UEPC}}, 44212695Sar4jc@virginia.edu {CSR_UCAUSE, {"ucause", MISCREG_UCAUSE}}, 44312695Sar4jc@virginia.edu {CSR_UTVAL, {"utval", MISCREG_UTVAL}}, 44412695Sar4jc@virginia.edu {CSR_UIP, {"uip", MISCREG_IP}}, 44512695Sar4jc@virginia.edu {CSR_FFLAGS, {"fflags", MISCREG_FFLAGS}}, 44612695Sar4jc@virginia.edu {CSR_FRM, {"frm", MISCREG_FRM}}, 44712695Sar4jc@virginia.edu {CSR_FCSR, {"fcsr", MISCREG_FFLAGS}}, // Actually FRM << 5 | FFLAGS 44812695Sar4jc@virginia.edu {CSR_CYCLE, {"cycle", MISCREG_CYCLE}}, 44912695Sar4jc@virginia.edu {CSR_TIME, {"time", MISCREG_TIME}}, 45012695Sar4jc@virginia.edu {CSR_INSTRET, {"instret", MISCREG_INSTRET}}, 45112695Sar4jc@virginia.edu {CSR_HPMCOUNTER03, {"hpmcounter03", MISCREG_HPMCOUNTER03}}, 45212695Sar4jc@virginia.edu {CSR_HPMCOUNTER04, {"hpmcounter04", MISCREG_HPMCOUNTER04}}, 45312695Sar4jc@virginia.edu {CSR_HPMCOUNTER05, {"hpmcounter05", MISCREG_HPMCOUNTER05}}, 45412695Sar4jc@virginia.edu {CSR_HPMCOUNTER06, {"hpmcounter06", MISCREG_HPMCOUNTER06}}, 45512695Sar4jc@virginia.edu {CSR_HPMCOUNTER07, {"hpmcounter07", MISCREG_HPMCOUNTER07}}, 45612695Sar4jc@virginia.edu {CSR_HPMCOUNTER08, {"hpmcounter08", MISCREG_HPMCOUNTER08}}, 45712695Sar4jc@virginia.edu {CSR_HPMCOUNTER09, {"hpmcounter09", MISCREG_HPMCOUNTER09}}, 45812695Sar4jc@virginia.edu {CSR_HPMCOUNTER10, {"hpmcounter10", MISCREG_HPMCOUNTER10}}, 45912695Sar4jc@virginia.edu {CSR_HPMCOUNTER11, {"hpmcounter11", MISCREG_HPMCOUNTER11}}, 46012695Sar4jc@virginia.edu {CSR_HPMCOUNTER12, {"hpmcounter12", MISCREG_HPMCOUNTER12}}, 46112695Sar4jc@virginia.edu {CSR_HPMCOUNTER13, {"hpmcounter13", MISCREG_HPMCOUNTER13}}, 46212695Sar4jc@virginia.edu {CSR_HPMCOUNTER14, {"hpmcounter14", MISCREG_HPMCOUNTER14}}, 46312695Sar4jc@virginia.edu {CSR_HPMCOUNTER15, {"hpmcounter15", MISCREG_HPMCOUNTER15}}, 46412695Sar4jc@virginia.edu {CSR_HPMCOUNTER16, {"hpmcounter16", MISCREG_HPMCOUNTER16}}, 46512695Sar4jc@virginia.edu {CSR_HPMCOUNTER17, {"hpmcounter17", MISCREG_HPMCOUNTER17}}, 46612695Sar4jc@virginia.edu {CSR_HPMCOUNTER18, {"hpmcounter18", MISCREG_HPMCOUNTER18}}, 46712695Sar4jc@virginia.edu {CSR_HPMCOUNTER19, {"hpmcounter19", MISCREG_HPMCOUNTER19}}, 46812695Sar4jc@virginia.edu {CSR_HPMCOUNTER20, {"hpmcounter20", MISCREG_HPMCOUNTER20}}, 46912695Sar4jc@virginia.edu {CSR_HPMCOUNTER21, {"hpmcounter21", MISCREG_HPMCOUNTER21}}, 47012695Sar4jc@virginia.edu {CSR_HPMCOUNTER22, {"hpmcounter22", MISCREG_HPMCOUNTER22}}, 47112695Sar4jc@virginia.edu {CSR_HPMCOUNTER23, {"hpmcounter23", MISCREG_HPMCOUNTER23}}, 47212695Sar4jc@virginia.edu {CSR_HPMCOUNTER24, {"hpmcounter24", MISCREG_HPMCOUNTER24}}, 47312695Sar4jc@virginia.edu {CSR_HPMCOUNTER25, {"hpmcounter25", MISCREG_HPMCOUNTER25}}, 47412695Sar4jc@virginia.edu {CSR_HPMCOUNTER26, {"hpmcounter26", MISCREG_HPMCOUNTER26}}, 47512695Sar4jc@virginia.edu {CSR_HPMCOUNTER27, {"hpmcounter27", MISCREG_HPMCOUNTER27}}, 47612695Sar4jc@virginia.edu {CSR_HPMCOUNTER28, {"hpmcounter28", MISCREG_HPMCOUNTER28}}, 47712695Sar4jc@virginia.edu {CSR_HPMCOUNTER29, {"hpmcounter29", MISCREG_HPMCOUNTER29}}, 47812695Sar4jc@virginia.edu {CSR_HPMCOUNTER30, {"hpmcounter30", MISCREG_HPMCOUNTER30}}, 47912695Sar4jc@virginia.edu {CSR_HPMCOUNTER31, {"hpmcounter31", MISCREG_HPMCOUNTER31}}, 48012119Sar4jc@virginia.edu 48112695Sar4jc@virginia.edu {CSR_SSTATUS, {"sstatus", MISCREG_STATUS}}, 48212695Sar4jc@virginia.edu {CSR_SEDELEG, {"sedeleg", MISCREG_SEDELEG}}, 48312695Sar4jc@virginia.edu {CSR_SIDELEG, {"sideleg", MISCREG_SIDELEG}}, 48412695Sar4jc@virginia.edu {CSR_SIE, {"sie", MISCREG_IE}}, 48512695Sar4jc@virginia.edu {CSR_STVEC, {"stvec", MISCREG_STVEC}}, 48612695Sar4jc@virginia.edu {CSR_SSCRATCH, {"sscratch", MISCREG_SSCRATCH}}, 48712695Sar4jc@virginia.edu {CSR_SEPC, {"sepc", MISCREG_SEPC}}, 48812695Sar4jc@virginia.edu {CSR_SCAUSE, {"scause", MISCREG_SCAUSE}}, 48912695Sar4jc@virginia.edu {CSR_STVAL, {"stval", MISCREG_STVAL}}, 49012695Sar4jc@virginia.edu {CSR_SIP, {"sip", MISCREG_IP}}, 49112695Sar4jc@virginia.edu {CSR_SATP, {"satp", MISCREG_SATP}}, 49212119Sar4jc@virginia.edu 49312695Sar4jc@virginia.edu {CSR_MVENDORID, {"mvendorid", MISCREG_VENDORID}}, 49412695Sar4jc@virginia.edu {CSR_MARCHID, {"marchid", MISCREG_ARCHID}}, 49512695Sar4jc@virginia.edu {CSR_MIMPID, {"mimpid", MISCREG_IMPID}}, 49612695Sar4jc@virginia.edu {CSR_MHARTID, {"mhartid", MISCREG_HARTID}}, 49712695Sar4jc@virginia.edu {CSR_MSTATUS, {"mstatus", MISCREG_STATUS}}, 49812695Sar4jc@virginia.edu {CSR_MISA, {"misa", MISCREG_ISA}}, 49912695Sar4jc@virginia.edu {CSR_MEDELEG, {"medeleg", MISCREG_MEDELEG}}, 50012695Sar4jc@virginia.edu {CSR_MIDELEG, {"mideleg", MISCREG_MIDELEG}}, 50112695Sar4jc@virginia.edu {CSR_MIE, {"mie", MISCREG_IE}}, 50212695Sar4jc@virginia.edu {CSR_MTVEC, {"mtvec", MISCREG_MTVEC}}, 50312695Sar4jc@virginia.edu {CSR_MSCRATCH, {"mscratch", MISCREG_MSCRATCH}}, 50412695Sar4jc@virginia.edu {CSR_MEPC, {"mepc", MISCREG_MEPC}}, 50512695Sar4jc@virginia.edu {CSR_MCAUSE, {"mcause", MISCREG_MCAUSE}}, 50612695Sar4jc@virginia.edu {CSR_MTVAL, {"mtval", MISCREG_MTVAL}}, 50712695Sar4jc@virginia.edu {CSR_MIP, {"mip", MISCREG_IP}}, 50812695Sar4jc@virginia.edu {CSR_PMPCFG0, {"pmpcfg0", MISCREG_PMPCFG0}}, 50912695Sar4jc@virginia.edu // pmpcfg1 rv32 only 51012695Sar4jc@virginia.edu {CSR_PMPCFG2, {"pmpcfg2", MISCREG_PMPCFG2}}, 51112695Sar4jc@virginia.edu // pmpcfg3 rv32 only 51212695Sar4jc@virginia.edu {CSR_PMPADDR00, {"pmpaddr0", MISCREG_PMPADDR00}}, 51312695Sar4jc@virginia.edu {CSR_PMPADDR01, {"pmpaddr1", MISCREG_PMPADDR01}}, 51412695Sar4jc@virginia.edu {CSR_PMPADDR02, {"pmpaddr2", MISCREG_PMPADDR02}}, 51512695Sar4jc@virginia.edu {CSR_PMPADDR03, {"pmpaddr3", MISCREG_PMPADDR03}}, 51612695Sar4jc@virginia.edu {CSR_PMPADDR04, {"pmpaddr4", MISCREG_PMPADDR04}}, 51712695Sar4jc@virginia.edu {CSR_PMPADDR05, {"pmpaddr5", MISCREG_PMPADDR05}}, 51812695Sar4jc@virginia.edu {CSR_PMPADDR06, {"pmpaddr6", MISCREG_PMPADDR06}}, 51912695Sar4jc@virginia.edu {CSR_PMPADDR07, {"pmpaddr7", MISCREG_PMPADDR07}}, 52012695Sar4jc@virginia.edu {CSR_PMPADDR08, {"pmpaddr8", MISCREG_PMPADDR08}}, 52112695Sar4jc@virginia.edu {CSR_PMPADDR09, {"pmpaddr9", MISCREG_PMPADDR09}}, 52212695Sar4jc@virginia.edu {CSR_PMPADDR10, {"pmpaddr10", MISCREG_PMPADDR10}}, 52312695Sar4jc@virginia.edu {CSR_PMPADDR11, {"pmpaddr11", MISCREG_PMPADDR11}}, 52412695Sar4jc@virginia.edu {CSR_PMPADDR12, {"pmpaddr12", MISCREG_PMPADDR12}}, 52512695Sar4jc@virginia.edu {CSR_PMPADDR13, {"pmpaddr13", MISCREG_PMPADDR13}}, 52612695Sar4jc@virginia.edu {CSR_PMPADDR14, {"pmpaddr14", MISCREG_PMPADDR14}}, 52712695Sar4jc@virginia.edu {CSR_PMPADDR15, {"pmpaddr15", MISCREG_PMPADDR15}}, 52812695Sar4jc@virginia.edu {CSR_MCYCLE, {"mcycle", MISCREG_CYCLE}}, 52912695Sar4jc@virginia.edu {CSR_MINSTRET, {"minstret", MISCREG_INSTRET}}, 53012695Sar4jc@virginia.edu {CSR_MHPMCOUNTER03, {"mhpmcounter03", MISCREG_HPMCOUNTER03}}, 53112695Sar4jc@virginia.edu {CSR_MHPMCOUNTER04, {"mhpmcounter04", MISCREG_HPMCOUNTER04}}, 53212695Sar4jc@virginia.edu {CSR_MHPMCOUNTER05, {"mhpmcounter05", MISCREG_HPMCOUNTER05}}, 53312695Sar4jc@virginia.edu {CSR_MHPMCOUNTER06, {"mhpmcounter06", MISCREG_HPMCOUNTER06}}, 53412695Sar4jc@virginia.edu {CSR_MHPMCOUNTER07, {"mhpmcounter07", MISCREG_HPMCOUNTER07}}, 53512695Sar4jc@virginia.edu {CSR_MHPMCOUNTER08, {"mhpmcounter08", MISCREG_HPMCOUNTER08}}, 53612695Sar4jc@virginia.edu {CSR_MHPMCOUNTER09, {"mhpmcounter09", MISCREG_HPMCOUNTER09}}, 53712695Sar4jc@virginia.edu {CSR_MHPMCOUNTER10, {"mhpmcounter10", MISCREG_HPMCOUNTER10}}, 53812695Sar4jc@virginia.edu {CSR_MHPMCOUNTER11, {"mhpmcounter11", MISCREG_HPMCOUNTER11}}, 53912695Sar4jc@virginia.edu {CSR_MHPMCOUNTER12, {"mhpmcounter12", MISCREG_HPMCOUNTER12}}, 54012695Sar4jc@virginia.edu {CSR_MHPMCOUNTER13, {"mhpmcounter13", MISCREG_HPMCOUNTER13}}, 54112695Sar4jc@virginia.edu {CSR_MHPMCOUNTER14, {"mhpmcounter14", MISCREG_HPMCOUNTER14}}, 54212695Sar4jc@virginia.edu {CSR_MHPMCOUNTER15, {"mhpmcounter15", MISCREG_HPMCOUNTER15}}, 54312695Sar4jc@virginia.edu {CSR_MHPMCOUNTER16, {"mhpmcounter16", MISCREG_HPMCOUNTER16}}, 54412695Sar4jc@virginia.edu {CSR_MHPMCOUNTER17, {"mhpmcounter17", MISCREG_HPMCOUNTER17}}, 54512695Sar4jc@virginia.edu {CSR_MHPMCOUNTER18, {"mhpmcounter18", MISCREG_HPMCOUNTER18}}, 54612695Sar4jc@virginia.edu {CSR_MHPMCOUNTER19, {"mhpmcounter19", MISCREG_HPMCOUNTER19}}, 54712695Sar4jc@virginia.edu {CSR_MHPMCOUNTER20, {"mhpmcounter20", MISCREG_HPMCOUNTER20}}, 54812695Sar4jc@virginia.edu {CSR_MHPMCOUNTER21, {"mhpmcounter21", MISCREG_HPMCOUNTER21}}, 54912695Sar4jc@virginia.edu {CSR_MHPMCOUNTER22, {"mhpmcounter22", MISCREG_HPMCOUNTER22}}, 55012695Sar4jc@virginia.edu {CSR_MHPMCOUNTER23, {"mhpmcounter23", MISCREG_HPMCOUNTER23}}, 55112695Sar4jc@virginia.edu {CSR_MHPMCOUNTER24, {"mhpmcounter24", MISCREG_HPMCOUNTER24}}, 55212695Sar4jc@virginia.edu {CSR_MHPMCOUNTER25, {"mhpmcounter25", MISCREG_HPMCOUNTER25}}, 55312695Sar4jc@virginia.edu {CSR_MHPMCOUNTER26, {"mhpmcounter26", MISCREG_HPMCOUNTER26}}, 55412695Sar4jc@virginia.edu {CSR_MHPMCOUNTER27, {"mhpmcounter27", MISCREG_HPMCOUNTER27}}, 55512695Sar4jc@virginia.edu {CSR_MHPMCOUNTER28, {"mhpmcounter28", MISCREG_HPMCOUNTER28}}, 55612695Sar4jc@virginia.edu {CSR_MHPMCOUNTER29, {"mhpmcounter29", MISCREG_HPMCOUNTER29}}, 55712695Sar4jc@virginia.edu {CSR_MHPMCOUNTER30, {"mhpmcounter30", MISCREG_HPMCOUNTER30}}, 55812695Sar4jc@virginia.edu {CSR_MHPMCOUNTER31, {"mhpmcounter31", MISCREG_HPMCOUNTER31}}, 55912695Sar4jc@virginia.edu {CSR_MHPMEVENT03, {"mhpmevent03", MISCREG_HPMEVENT03}}, 56012695Sar4jc@virginia.edu {CSR_MHPMEVENT04, {"mhpmevent04", MISCREG_HPMEVENT04}}, 56112695Sar4jc@virginia.edu {CSR_MHPMEVENT05, {"mhpmevent05", MISCREG_HPMEVENT05}}, 56212695Sar4jc@virginia.edu {CSR_MHPMEVENT06, {"mhpmevent06", MISCREG_HPMEVENT06}}, 56312695Sar4jc@virginia.edu {CSR_MHPMEVENT07, {"mhpmevent07", MISCREG_HPMEVENT07}}, 56412695Sar4jc@virginia.edu {CSR_MHPMEVENT08, {"mhpmevent08", MISCREG_HPMEVENT08}}, 56512695Sar4jc@virginia.edu {CSR_MHPMEVENT09, {"mhpmevent09", MISCREG_HPMEVENT09}}, 56612695Sar4jc@virginia.edu {CSR_MHPMEVENT10, {"mhpmevent10", MISCREG_HPMEVENT10}}, 56712695Sar4jc@virginia.edu {CSR_MHPMEVENT11, {"mhpmevent11", MISCREG_HPMEVENT11}}, 56812695Sar4jc@virginia.edu {CSR_MHPMEVENT12, {"mhpmevent12", MISCREG_HPMEVENT12}}, 56912695Sar4jc@virginia.edu {CSR_MHPMEVENT13, {"mhpmevent13", MISCREG_HPMEVENT13}}, 57012695Sar4jc@virginia.edu {CSR_MHPMEVENT14, {"mhpmevent14", MISCREG_HPMEVENT14}}, 57112695Sar4jc@virginia.edu {CSR_MHPMEVENT15, {"mhpmevent15", MISCREG_HPMEVENT15}}, 57212695Sar4jc@virginia.edu {CSR_MHPMEVENT16, {"mhpmevent16", MISCREG_HPMEVENT16}}, 57312695Sar4jc@virginia.edu {CSR_MHPMEVENT17, {"mhpmevent17", MISCREG_HPMEVENT17}}, 57412695Sar4jc@virginia.edu {CSR_MHPMEVENT18, {"mhpmevent18", MISCREG_HPMEVENT18}}, 57512695Sar4jc@virginia.edu {CSR_MHPMEVENT19, {"mhpmevent19", MISCREG_HPMEVENT19}}, 57612695Sar4jc@virginia.edu {CSR_MHPMEVENT20, {"mhpmevent20", MISCREG_HPMEVENT20}}, 57712695Sar4jc@virginia.edu {CSR_MHPMEVENT21, {"mhpmevent21", MISCREG_HPMEVENT21}}, 57812695Sar4jc@virginia.edu {CSR_MHPMEVENT22, {"mhpmevent22", MISCREG_HPMEVENT22}}, 57912695Sar4jc@virginia.edu {CSR_MHPMEVENT23, {"mhpmevent23", MISCREG_HPMEVENT23}}, 58012695Sar4jc@virginia.edu {CSR_MHPMEVENT24, {"mhpmevent24", MISCREG_HPMEVENT24}}, 58112695Sar4jc@virginia.edu {CSR_MHPMEVENT25, {"mhpmevent25", MISCREG_HPMEVENT25}}, 58212695Sar4jc@virginia.edu {CSR_MHPMEVENT26, {"mhpmevent26", MISCREG_HPMEVENT26}}, 58312695Sar4jc@virginia.edu {CSR_MHPMEVENT27, {"mhpmevent27", MISCREG_HPMEVENT27}}, 58412695Sar4jc@virginia.edu {CSR_MHPMEVENT28, {"mhpmevent28", MISCREG_HPMEVENT28}}, 58512695Sar4jc@virginia.edu {CSR_MHPMEVENT29, {"mhpmevent29", MISCREG_HPMEVENT29}}, 58612695Sar4jc@virginia.edu {CSR_MHPMEVENT30, {"mhpmevent30", MISCREG_HPMEVENT30}}, 58712695Sar4jc@virginia.edu {CSR_MHPMEVENT31, {"mhpmevent31", MISCREG_HPMEVENT31}}, 58812119Sar4jc@virginia.edu 58912695Sar4jc@virginia.edu {CSR_TSELECT, {"tselect", MISCREG_TSELECT}}, 59012695Sar4jc@virginia.edu {CSR_TDATA1, {"tdata1", MISCREG_TDATA1}}, 59112695Sar4jc@virginia.edu {CSR_TDATA2, {"tdata2", MISCREG_TDATA2}}, 59212695Sar4jc@virginia.edu {CSR_TDATA3, {"tdata3", MISCREG_TDATA3}}, 59312695Sar4jc@virginia.edu {CSR_DCSR, {"dcsr", MISCREG_DCSR}}, 59412695Sar4jc@virginia.edu {CSR_DPC, {"dpc", MISCREG_DPC}}, 59512695Sar4jc@virginia.edu {CSR_DSCRATCH, {"dscratch", MISCREG_DSCRATCH}} 59612695Sar4jc@virginia.edu}; 59712695Sar4jc@virginia.edu 59812850Salec.roelke@gmail.com/** 59912850Salec.roelke@gmail.com * These fields are specified in the RISC-V Instruction Set Manual, Volume II, 60012850Salec.roelke@gmail.com * v1.10, accessible at www.riscv.org. in Figure 3.7. The main register that 60112850Salec.roelke@gmail.com * uses these fields is the MSTATUS register, which is shadowed by two others 60212850Salec.roelke@gmail.com * accessible at lower privilege levels (SSTATUS and USTATUS) that can't see 60312850Salec.roelke@gmail.com * the fields for higher privileges. 60412850Salec.roelke@gmail.com */ 60512850Salec.roelke@gmail.comBitUnion64(STATUS) 60612850Salec.roelke@gmail.com Bitfield<63> sd; 60712850Salec.roelke@gmail.com Bitfield<35, 34> sxl; 60812850Salec.roelke@gmail.com Bitfield<33, 32> uxl; 60912850Salec.roelke@gmail.com Bitfield<22> tsr; 61012850Salec.roelke@gmail.com Bitfield<21> tw; 61112850Salec.roelke@gmail.com Bitfield<20> tvm; 61212850Salec.roelke@gmail.com Bitfield<19> mxr; 61312850Salec.roelke@gmail.com Bitfield<18> sum; 61412850Salec.roelke@gmail.com Bitfield<17> mprv; 61512850Salec.roelke@gmail.com Bitfield<16, 15> xs; 61612850Salec.roelke@gmail.com Bitfield<14, 13> fs; 61712850Salec.roelke@gmail.com Bitfield<12, 11> mpp; 61812850Salec.roelke@gmail.com Bitfield<8> spp; 61912850Salec.roelke@gmail.com Bitfield<7> mpie; 62012850Salec.roelke@gmail.com Bitfield<5> spie; 62112850Salec.roelke@gmail.com Bitfield<4> upie; 62212850Salec.roelke@gmail.com Bitfield<3> mie; 62312850Salec.roelke@gmail.com Bitfield<1> sie; 62412850Salec.roelke@gmail.com Bitfield<0> uie; 62512850Salec.roelke@gmail.comEndBitUnion(STATUS) 62612850Salec.roelke@gmail.com 62712850Salec.roelke@gmail.com/** 62812850Salec.roelke@gmail.com * These fields are specified in the RISC-V Instruction Set Manual, Volume II, 62912850Salec.roelke@gmail.com * v1.10 in Figures 3.11 and 3.12, accessible at www.riscv.org. Both the MIP 63012850Salec.roelke@gmail.com * and MIE registers have the same fields, so accesses to either should use 63112850Salec.roelke@gmail.com * this bit union. 63212850Salec.roelke@gmail.com */ 63312850Salec.roelke@gmail.comBitUnion64(INTERRUPT) 63412850Salec.roelke@gmail.com Bitfield<11> mei; 63512850Salec.roelke@gmail.com Bitfield<9> sei; 63612850Salec.roelke@gmail.com Bitfield<8> uei; 63712850Salec.roelke@gmail.com Bitfield<7> mti; 63812850Salec.roelke@gmail.com Bitfield<5> sti; 63912850Salec.roelke@gmail.com Bitfield<4> uti; 64012850Salec.roelke@gmail.com Bitfield<3> msi; 64112850Salec.roelke@gmail.com Bitfield<1> ssi; 64212850Salec.roelke@gmail.com Bitfield<0> usi; 64312850Salec.roelke@gmail.comEndBitUnion(INTERRUPT) 64412850Salec.roelke@gmail.com 64512695Sar4jc@virginia.educonst off_t MXL_OFFSET = (sizeof(MiscReg) * 8 - 2); 64612695Sar4jc@virginia.educonst off_t SXL_OFFSET = 34; 64712695Sar4jc@virginia.educonst off_t UXL_OFFSET = 32; 64812695Sar4jc@virginia.educonst off_t FS_OFFSET = 13; 64912695Sar4jc@virginia.educonst off_t FRM_OFFSET = 5; 65012695Sar4jc@virginia.edu 65112695Sar4jc@virginia.educonst MiscReg ISA_MXL_MASK = 3ULL << MXL_OFFSET; 65212695Sar4jc@virginia.educonst MiscReg ISA_EXT_MASK = mask(26); 65312695Sar4jc@virginia.educonst MiscReg MISA_MASK = ISA_MXL_MASK | ISA_EXT_MASK; 65412695Sar4jc@virginia.edu 65512695Sar4jc@virginia.educonst MiscReg STATUS_SD_MASK = 1ULL << ((sizeof(MiscReg) * 8) - 1); 65612695Sar4jc@virginia.educonst MiscReg STATUS_SXL_MASK = 3ULL << SXL_OFFSET; 65712695Sar4jc@virginia.educonst MiscReg STATUS_UXL_MASK = 3ULL << UXL_OFFSET; 65812695Sar4jc@virginia.educonst MiscReg STATUS_TSR_MASK = 1ULL << 22; 65912695Sar4jc@virginia.educonst MiscReg STATUS_TW_MASK = 1ULL << 21; 66012695Sar4jc@virginia.educonst MiscReg STATUS_TVM_MASK = 1ULL << 20; 66112695Sar4jc@virginia.educonst MiscReg STATUS_MXR_MASK = 1ULL << 19; 66212695Sar4jc@virginia.educonst MiscReg STATUS_SUM_MASK = 1ULL << 18; 66312695Sar4jc@virginia.educonst MiscReg STATUS_MPRV_MASK = 1ULL << 17; 66412695Sar4jc@virginia.educonst MiscReg STATUS_XS_MASK = 3ULL << 15; 66512695Sar4jc@virginia.educonst MiscReg STATUS_FS_MASK = 3ULL << FS_OFFSET; 66612695Sar4jc@virginia.educonst MiscReg STATUS_MPP_MASK = 3ULL << 11; 66712695Sar4jc@virginia.educonst MiscReg STATUS_SPP_MASK = 1ULL << 8; 66812695Sar4jc@virginia.educonst MiscReg STATUS_MPIE_MASK = 1ULL << 7; 66912695Sar4jc@virginia.educonst MiscReg STATUS_SPIE_MASK = 1ULL << 5; 67012695Sar4jc@virginia.educonst MiscReg STATUS_UPIE_MASK = 1ULL << 4; 67112695Sar4jc@virginia.educonst MiscReg STATUS_MIE_MASK = 1ULL << 3; 67212695Sar4jc@virginia.educonst MiscReg STATUS_SIE_MASK = 1ULL << 1; 67312695Sar4jc@virginia.educonst MiscReg STATUS_UIE_MASK = 1ULL << 0; 67412695Sar4jc@virginia.educonst MiscReg MSTATUS_MASK = STATUS_SD_MASK | STATUS_SXL_MASK | 67512695Sar4jc@virginia.edu STATUS_UXL_MASK | STATUS_TSR_MASK | 67612695Sar4jc@virginia.edu STATUS_TW_MASK | STATUS_TVM_MASK | 67712695Sar4jc@virginia.edu STATUS_MXR_MASK | STATUS_SUM_MASK | 67812695Sar4jc@virginia.edu STATUS_MPRV_MASK | STATUS_XS_MASK | 67912695Sar4jc@virginia.edu STATUS_FS_MASK | STATUS_MPP_MASK | 68012695Sar4jc@virginia.edu STATUS_SPP_MASK | STATUS_MPIE_MASK | 68112695Sar4jc@virginia.edu STATUS_SPIE_MASK | STATUS_UPIE_MASK | 68212695Sar4jc@virginia.edu STATUS_MIE_MASK | STATUS_SIE_MASK | 68312695Sar4jc@virginia.edu STATUS_UIE_MASK; 68412695Sar4jc@virginia.educonst MiscReg SSTATUS_MASK = STATUS_SD_MASK | STATUS_UXL_MASK | 68512695Sar4jc@virginia.edu STATUS_MXR_MASK | STATUS_SUM_MASK | 68612695Sar4jc@virginia.edu STATUS_XS_MASK | STATUS_FS_MASK | 68712695Sar4jc@virginia.edu STATUS_SPP_MASK | STATUS_SPIE_MASK | 68812695Sar4jc@virginia.edu STATUS_UPIE_MASK | STATUS_SIE_MASK | 68912695Sar4jc@virginia.edu STATUS_UIE_MASK; 69012695Sar4jc@virginia.educonst MiscReg USTATUS_MASK = STATUS_SD_MASK | STATUS_MXR_MASK | 69112695Sar4jc@virginia.edu STATUS_SUM_MASK | STATUS_XS_MASK | 69212695Sar4jc@virginia.edu STATUS_FS_MASK | STATUS_UPIE_MASK | 69312695Sar4jc@virginia.edu STATUS_UIE_MASK; 69412695Sar4jc@virginia.edu 69512695Sar4jc@virginia.educonst MiscReg MEI_MASK = 1ULL << 11; 69612695Sar4jc@virginia.educonst MiscReg SEI_MASK = 1ULL << 9; 69712695Sar4jc@virginia.educonst MiscReg UEI_MASK = 1ULL << 8; 69812695Sar4jc@virginia.educonst MiscReg MTI_MASK = 1ULL << 7; 69912695Sar4jc@virginia.educonst MiscReg STI_MASK = 1ULL << 5; 70012695Sar4jc@virginia.educonst MiscReg UTI_MASK = 1ULL << 4; 70112695Sar4jc@virginia.educonst MiscReg MSI_MASK = 1ULL << 3; 70212695Sar4jc@virginia.educonst MiscReg SSI_MASK = 1ULL << 1; 70312695Sar4jc@virginia.educonst MiscReg USI_MASK = 1ULL << 0; 70412695Sar4jc@virginia.educonst MiscReg MI_MASK = MEI_MASK | SEI_MASK | UEI_MASK | 70512695Sar4jc@virginia.edu MTI_MASK | STI_MASK | UTI_MASK | 70612695Sar4jc@virginia.edu MSI_MASK | SSI_MASK | USI_MASK; 70712695Sar4jc@virginia.educonst MiscReg SI_MASK = SEI_MASK | UEI_MASK | 70812695Sar4jc@virginia.edu STI_MASK | UTI_MASK | 70912695Sar4jc@virginia.edu SSI_MASK | USI_MASK; 71012695Sar4jc@virginia.educonst MiscReg UI_MASK = UEI_MASK | UTI_MASK | USI_MASK; 71112695Sar4jc@virginia.educonst MiscReg FFLAGS_MASK = (1 << FRM_OFFSET) - 1; 71212695Sar4jc@virginia.educonst MiscReg FRM_MASK = 0x7; 71312695Sar4jc@virginia.edu 71412695Sar4jc@virginia.educonst std::map<int, MiscReg> CSRMasks = { 71512695Sar4jc@virginia.edu {CSR_USTATUS, USTATUS_MASK}, 71612695Sar4jc@virginia.edu {CSR_UIE, UI_MASK}, 71712695Sar4jc@virginia.edu {CSR_UIP, UI_MASK}, 71812695Sar4jc@virginia.edu {CSR_FFLAGS, FFLAGS_MASK}, 71912695Sar4jc@virginia.edu {CSR_FRM, FRM_MASK}, 72012695Sar4jc@virginia.edu {CSR_FCSR, FFLAGS_MASK | (FRM_MASK << FRM_OFFSET)}, 72112695Sar4jc@virginia.edu {CSR_SSTATUS, SSTATUS_MASK}, 72212695Sar4jc@virginia.edu {CSR_SIE, SI_MASK}, 72312695Sar4jc@virginia.edu {CSR_SIP, SI_MASK}, 72412695Sar4jc@virginia.edu {CSR_MSTATUS, MSTATUS_MASK}, 72512695Sar4jc@virginia.edu {CSR_MISA, MISA_MASK}, 72612695Sar4jc@virginia.edu {CSR_MIE, MI_MASK}, 72712695Sar4jc@virginia.edu {CSR_MIP, MI_MASK} 72812119Sar4jc@virginia.edu}; 72912119Sar4jc@virginia.edu 73011723Sar4jc@virginia.edu} 73111723Sar4jc@virginia.edu 73211723Sar4jc@virginia.edu#endif // __ARCH_RISCV_REGISTERS_HH__ 733