111723Sar4jc@virginia.edu/* 211723Sar4jc@virginia.edu * Copyright (c) 2007 MIPS Technologies, Inc. 311723Sar4jc@virginia.edu * All rights reserved. 411723Sar4jc@virginia.edu * 511723Sar4jc@virginia.edu * Redistribution and use in source and binary forms, with or without 611723Sar4jc@virginia.edu * modification, are permitted provided that the following conditions are 711723Sar4jc@virginia.edu * met: redistributions of source code must retain the above copyright 811723Sar4jc@virginia.edu * notice, this list of conditions and the following disclaimer; 911723Sar4jc@virginia.edu * redistributions in binary form must reproduce the above copyright 1011723Sar4jc@virginia.edu * notice, this list of conditions and the following disclaimer in the 1111723Sar4jc@virginia.edu * documentation and/or other materials provided with the distribution; 1211723Sar4jc@virginia.edu * neither the name of the copyright holders nor the names of its 1311723Sar4jc@virginia.edu * contributors may be used to endorse or promote products derived from 1411723Sar4jc@virginia.edu * this software without specific prior written permission. 1511723Sar4jc@virginia.edu * 1611723Sar4jc@virginia.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1711723Sar4jc@virginia.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1811723Sar4jc@virginia.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1911723Sar4jc@virginia.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2011723Sar4jc@virginia.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2111723Sar4jc@virginia.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2211723Sar4jc@virginia.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2311723Sar4jc@virginia.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2411723Sar4jc@virginia.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2511723Sar4jc@virginia.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2611723Sar4jc@virginia.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2711723Sar4jc@virginia.edu * 2811723Sar4jc@virginia.edu * Authors: Jaidev Patwardhan 2911723Sar4jc@virginia.edu */ 3011723Sar4jc@virginia.edu 3111723Sar4jc@virginia.edu#ifndef __ARCH_RISCV_PRA_CONSTANTS_HH__ 3211723Sar4jc@virginia.edu#define __ARCH_RISCV_PRA_CONSTANTS_HH__ 3311723Sar4jc@virginia.edu 3411723Sar4jc@virginia.edu#include "arch/riscv/types.hh" 3511723Sar4jc@virginia.edu#include "base/bitunion.hh" 3611723Sar4jc@virginia.edu 3711723Sar4jc@virginia.edunamespace RiscvISA 3811723Sar4jc@virginia.edu{ 3911723Sar4jc@virginia.edu 4011723Sar4jc@virginia.eduBitUnion32(IndexReg) 4111723Sar4jc@virginia.edu Bitfield<31> p; 4211723Sar4jc@virginia.edu // Need to figure out how to put in the TLB specific bits here 4311723Sar4jc@virginia.edu // For now, we assume that the entire length is used by the index 4411723Sar4jc@virginia.edu // field In reality, Index_HI = N-1, where 4511723Sar4jc@virginia.edu // N = Ceiling(log2(TLB Entries)) 4611723Sar4jc@virginia.edu Bitfield<30, 0> index; 4711723Sar4jc@virginia.eduEndBitUnion(IndexReg) 4811723Sar4jc@virginia.edu 4911723Sar4jc@virginia.eduBitUnion32(RandomReg) 5011723Sar4jc@virginia.edu // This has a problem similar to the IndexReg index field. We'll keep 5111723Sar4jc@virginia.edu // both consistent at 30 for now 5211723Sar4jc@virginia.edu Bitfield<30, 0> random; 5311723Sar4jc@virginia.eduEndBitUnion(RandomReg) 5411723Sar4jc@virginia.edu 5511723Sar4jc@virginia.eduBitUnion64(EntryLoReg) 5611723Sar4jc@virginia.edu Bitfield<63, 30> fill; 5711723Sar4jc@virginia.edu Bitfield<29, 6> pfn; // Page frame number 5811723Sar4jc@virginia.edu Bitfield<5, 3> c; // Coherency attribute 5911723Sar4jc@virginia.edu Bitfield<2> d; // Dirty Bit 6011723Sar4jc@virginia.edu Bitfield<1> v; // Valid Bit 6111723Sar4jc@virginia.edu Bitfield<0> g; // Global Bit 6211723Sar4jc@virginia.eduEndBitUnion(EntryLoReg) 6311723Sar4jc@virginia.edu 6411723Sar4jc@virginia.eduBitUnion64(ContextReg) 6511723Sar4jc@virginia.edu Bitfield<63, 23> pteBase; 6611723Sar4jc@virginia.edu Bitfield<22, 4> badVPN2; 6711723Sar4jc@virginia.edu // Bits 3-0 are 0 6811723Sar4jc@virginia.eduEndBitUnion(ContextReg) 6911723Sar4jc@virginia.edu 7011723Sar4jc@virginia.eduBitUnion32(PageMaskReg) 7111723Sar4jc@virginia.edu // Bits 31-29 are 0 7211723Sar4jc@virginia.edu Bitfield<28, 13> mask; 7311723Sar4jc@virginia.edu Bitfield<12, 11> maskx; 7411723Sar4jc@virginia.edu // Bits 10-0 are zero 7511723Sar4jc@virginia.eduEndBitUnion(PageMaskReg) 7611723Sar4jc@virginia.edu 7711723Sar4jc@virginia.eduBitUnion32(PageGrainReg) 7811723Sar4jc@virginia.edu Bitfield<31, 30> aseUp; 7911723Sar4jc@virginia.edu Bitfield<29> elpa; 8011723Sar4jc@virginia.edu Bitfield<28> esp; 8111723Sar4jc@virginia.edu // Bits 27-13 are zeros 8211723Sar4jc@virginia.edu Bitfield<12, 8> aseDn; 8311723Sar4jc@virginia.edu // Bits 7-0 are zeros 8411723Sar4jc@virginia.eduEndBitUnion(PageGrainReg) 8511723Sar4jc@virginia.edu 8611723Sar4jc@virginia.eduBitUnion32(WiredReg) 8711723Sar4jc@virginia.edu // See note on Index register above 8811723Sar4jc@virginia.edu Bitfield<30, 0> wired; 8911723Sar4jc@virginia.eduEndBitUnion(WiredReg) 9011723Sar4jc@virginia.edu 9111723Sar4jc@virginia.eduBitUnion32(HWREnaReg) 9211723Sar4jc@virginia.edu Bitfield<31, 30> impl; 9311723Sar4jc@virginia.edu Bitfield<3, 0> mask; 9411723Sar4jc@virginia.eduEndBitUnion(HWREnaReg) 9511723Sar4jc@virginia.edu 9611723Sar4jc@virginia.eduBitUnion64(EntryHiReg) 9711723Sar4jc@virginia.edu Bitfield<63, 62> r; 9811723Sar4jc@virginia.edu Bitfield<61, 40> fill; 9911723Sar4jc@virginia.edu Bitfield<39, 13> vpn2; 10011723Sar4jc@virginia.edu Bitfield<12, 11> vpn2x; 10111723Sar4jc@virginia.edu Bitfield<7, 0> asid; 10211723Sar4jc@virginia.eduEndBitUnion(EntryHiReg) 10311723Sar4jc@virginia.edu 10411723Sar4jc@virginia.eduBitUnion32(StatusReg) 10511723Sar4jc@virginia.edu SubBitUnion(cu, 31, 28) 10611723Sar4jc@virginia.edu Bitfield<31> cu3; 10711723Sar4jc@virginia.edu Bitfield<30> cu2; 10811723Sar4jc@virginia.edu Bitfield<29> cu1; 10911723Sar4jc@virginia.edu Bitfield<28> cu0; 11011723Sar4jc@virginia.edu EndSubBitUnion(cu) 11111723Sar4jc@virginia.edu Bitfield<27> rp; 11211723Sar4jc@virginia.edu Bitfield<26> fr; 11311723Sar4jc@virginia.edu Bitfield<25> re; 11411723Sar4jc@virginia.edu Bitfield<24> mx; 11511723Sar4jc@virginia.edu Bitfield<23> px; 11611723Sar4jc@virginia.edu Bitfield<22> bev; 11711723Sar4jc@virginia.edu Bitfield<21> ts; 11811723Sar4jc@virginia.edu Bitfield<20> sr; 11911723Sar4jc@virginia.edu Bitfield<19> nmi; 12011723Sar4jc@virginia.edu // Bit 18 is zero 12111723Sar4jc@virginia.edu Bitfield<17, 16> impl; 12211723Sar4jc@virginia.edu Bitfield<15, 10> ipl; 12311723Sar4jc@virginia.edu SubBitUnion(im, 15, 8) 12411723Sar4jc@virginia.edu Bitfield<15> im7; 12511723Sar4jc@virginia.edu Bitfield<14> im6; 12611723Sar4jc@virginia.edu Bitfield<13> im5; 12711723Sar4jc@virginia.edu Bitfield<12> im4; 12811723Sar4jc@virginia.edu Bitfield<11> im3; 12911723Sar4jc@virginia.edu Bitfield<10> im2; 13011723Sar4jc@virginia.edu Bitfield<9> im1; 13111723Sar4jc@virginia.edu Bitfield<8> im0; 13211723Sar4jc@virginia.edu EndSubBitUnion(im) 13311723Sar4jc@virginia.edu Bitfield<7> kx; 13411723Sar4jc@virginia.edu Bitfield<6> sx; 13511723Sar4jc@virginia.edu Bitfield<5> ux; 13611723Sar4jc@virginia.edu Bitfield<4, 3> ksu; 13711723Sar4jc@virginia.edu Bitfield<4> um; 13811723Sar4jc@virginia.edu Bitfield<3> r0; 13911723Sar4jc@virginia.edu Bitfield<2> erl; 14011723Sar4jc@virginia.edu Bitfield<1> exl; 14111723Sar4jc@virginia.edu Bitfield<0> ie; 14211723Sar4jc@virginia.eduEndBitUnion(StatusReg) 14311723Sar4jc@virginia.edu 14411723Sar4jc@virginia.eduBitUnion32(IntCtlReg) 14511723Sar4jc@virginia.edu Bitfield<31, 29> ipti; 14611723Sar4jc@virginia.edu Bitfield<28, 26> ippci; 14711723Sar4jc@virginia.edu // Bits 26-10 are zeros 14811723Sar4jc@virginia.edu Bitfield<9, 5> vs; 14911723Sar4jc@virginia.edu // Bits 4-0 are zeros 15011723Sar4jc@virginia.eduEndBitUnion(IntCtlReg) 15111723Sar4jc@virginia.edu 15211723Sar4jc@virginia.eduBitUnion32(SRSCtlReg) 15311723Sar4jc@virginia.edu // Bits 31-30 are zeros 15411723Sar4jc@virginia.edu Bitfield<29, 26> hss; 15511723Sar4jc@virginia.edu // Bits 25-22 are zeros 15611723Sar4jc@virginia.edu Bitfield<21, 18> eicss; 15711723Sar4jc@virginia.edu // Bits 17-16 are zeros 15811723Sar4jc@virginia.edu Bitfield<15, 12> ess; 15911723Sar4jc@virginia.edu // Bits 11-10 are zeros 16011723Sar4jc@virginia.edu Bitfield<9, 6> pss; 16111723Sar4jc@virginia.edu // Bits 5-4 are zeros 16211723Sar4jc@virginia.edu Bitfield<3, 0> css; 16311723Sar4jc@virginia.eduEndBitUnion(SRSCtlReg) 16411723Sar4jc@virginia.edu 16511723Sar4jc@virginia.eduBitUnion32(SRSMapReg) 16611723Sar4jc@virginia.edu Bitfield<31, 28> ssv7; 16711723Sar4jc@virginia.edu Bitfield<27, 24> ssv6; 16811723Sar4jc@virginia.edu Bitfield<23, 20> ssv5; 16911723Sar4jc@virginia.edu Bitfield<19, 16> ssv4; 17011723Sar4jc@virginia.edu Bitfield<15, 12> ssv3; 17111723Sar4jc@virginia.edu Bitfield<11, 8> ssv2; 17211723Sar4jc@virginia.edu Bitfield<7, 4> ssv1; 17311723Sar4jc@virginia.edu Bitfield<3, 0> ssv0; 17411723Sar4jc@virginia.eduEndBitUnion(SRSMapReg) 17511723Sar4jc@virginia.edu 17611723Sar4jc@virginia.eduBitUnion32(CauseReg) 17711723Sar4jc@virginia.edu Bitfield<31> bd; 17811723Sar4jc@virginia.edu Bitfield<30> ti; 17911723Sar4jc@virginia.edu Bitfield<29, 28> ce; 18011723Sar4jc@virginia.edu Bitfield<27> dc; 18111723Sar4jc@virginia.edu Bitfield<26> pci; 18211723Sar4jc@virginia.edu // Bits 25-24 are zeros 18311723Sar4jc@virginia.edu Bitfield<23> iv; 18411723Sar4jc@virginia.edu Bitfield<22> wp; 18511723Sar4jc@virginia.edu // Bits 21-16 are zeros 18611723Sar4jc@virginia.edu Bitfield<15, 10> ripl; 18711723Sar4jc@virginia.edu SubBitUnion(ip, 15, 8) 18811723Sar4jc@virginia.edu Bitfield<15> ip7; 18911723Sar4jc@virginia.edu Bitfield<14> ip6; 19011723Sar4jc@virginia.edu Bitfield<13> ip5; 19111723Sar4jc@virginia.edu Bitfield<12> ip4; 19211723Sar4jc@virginia.edu Bitfield<11> ip3; 19311723Sar4jc@virginia.edu Bitfield<10> ip2; 19411723Sar4jc@virginia.edu Bitfield<9> ip1; 19511723Sar4jc@virginia.edu Bitfield<8> ip0; 19611723Sar4jc@virginia.edu EndSubBitUnion(ip); 19711723Sar4jc@virginia.edu // Bit 7 is zero 19811723Sar4jc@virginia.edu Bitfield<6, 2> excCode; 19911723Sar4jc@virginia.edu // Bits 1-0 are zeros 20011723Sar4jc@virginia.eduEndBitUnion(CauseReg) 20111723Sar4jc@virginia.edu 20211723Sar4jc@virginia.eduBitUnion32(PRIdReg) 20311723Sar4jc@virginia.edu Bitfield<31, 24> coOp; 20411723Sar4jc@virginia.edu Bitfield<23, 16> coId; 20511723Sar4jc@virginia.edu Bitfield<15, 8> procId; 20611723Sar4jc@virginia.edu Bitfield<7, 0> rev; 20711723Sar4jc@virginia.eduEndBitUnion(PRIdReg) 20811723Sar4jc@virginia.edu 20911723Sar4jc@virginia.eduBitUnion32(EBaseReg) 21011723Sar4jc@virginia.edu // Bit 31 is one 21111723Sar4jc@virginia.edu // Bit 30 is zero 21211723Sar4jc@virginia.edu Bitfield<29, 12> exceptionBase; 21311723Sar4jc@virginia.edu // Bits 11-10 are zeros 21411723Sar4jc@virginia.edu Bitfield<9, 9> cpuNum; 21511723Sar4jc@virginia.eduEndBitUnion(EBaseReg) 21611723Sar4jc@virginia.edu 21711723Sar4jc@virginia.eduBitUnion32(ConfigReg) 21811723Sar4jc@virginia.edu Bitfield<31> m; 21911723Sar4jc@virginia.edu Bitfield<30, 28> k23; 22011723Sar4jc@virginia.edu Bitfield<27, 25> ku; 22111723Sar4jc@virginia.edu Bitfield<24, 16> impl; 22211723Sar4jc@virginia.edu Bitfield<15> be; 22311723Sar4jc@virginia.edu Bitfield<14, 13> at; 22411723Sar4jc@virginia.edu Bitfield<12, 10> ar; 22511723Sar4jc@virginia.edu Bitfield<9, 7> mt; 22611723Sar4jc@virginia.edu // Bits 6-4 are zeros 22711723Sar4jc@virginia.edu Bitfield<3> vi; 22811723Sar4jc@virginia.edu Bitfield<2, 0> k0; 22911723Sar4jc@virginia.eduEndBitUnion(ConfigReg) 23011723Sar4jc@virginia.edu 23111723Sar4jc@virginia.eduBitUnion32(Config1Reg) 23211723Sar4jc@virginia.edu Bitfield<31> m; 23311723Sar4jc@virginia.edu Bitfield<30, 25> mmuSize; 23411723Sar4jc@virginia.edu Bitfield<24, 22> is; 23511723Sar4jc@virginia.edu Bitfield<21, 19> il; 23611723Sar4jc@virginia.edu Bitfield<18, 16> ia; 23711723Sar4jc@virginia.edu Bitfield<15, 13> ds; 23811723Sar4jc@virginia.edu Bitfield<12, 10> dl; 23911723Sar4jc@virginia.edu Bitfield<9, 7> da; 24011723Sar4jc@virginia.edu Bitfield<6> c2; 24111723Sar4jc@virginia.edu Bitfield<5> md; 24211723Sar4jc@virginia.edu Bitfield<4> pc; 24311723Sar4jc@virginia.edu Bitfield<3> wr; 24411723Sar4jc@virginia.edu Bitfield<2> ca; 24511723Sar4jc@virginia.edu Bitfield<1> ep; 24611723Sar4jc@virginia.edu Bitfield<0> fp; 24711723Sar4jc@virginia.eduEndBitUnion(Config1Reg) 24811723Sar4jc@virginia.edu 24911723Sar4jc@virginia.eduBitUnion32(Config2Reg) 25011723Sar4jc@virginia.edu Bitfield<31> m; 25111723Sar4jc@virginia.edu Bitfield<30, 28> tu; 25211723Sar4jc@virginia.edu Bitfield<27, 24> ts; 25311723Sar4jc@virginia.edu Bitfield<23, 20> tl; 25411723Sar4jc@virginia.edu Bitfield<19, 16> ta; 25511723Sar4jc@virginia.edu Bitfield<15, 12> su; 25611723Sar4jc@virginia.edu Bitfield<11, 8> ss; 25711723Sar4jc@virginia.edu Bitfield<7, 4> sl; 25811723Sar4jc@virginia.edu Bitfield<3, 0> sa; 25911723Sar4jc@virginia.eduEndBitUnion(Config2Reg) 26011723Sar4jc@virginia.edu 26111723Sar4jc@virginia.eduBitUnion32(Config3Reg) 26211723Sar4jc@virginia.edu Bitfield<31> m; 26311723Sar4jc@virginia.edu // Bits 30-11 are zeros 26411723Sar4jc@virginia.edu Bitfield<10> dspp; 26511723Sar4jc@virginia.edu // Bits 9-8 are zeros 26611723Sar4jc@virginia.edu Bitfield<7> lpa; 26711723Sar4jc@virginia.edu Bitfield<6> veic; 26811723Sar4jc@virginia.edu Bitfield<5> vint; 26911723Sar4jc@virginia.edu Bitfield<4> sp; 27011723Sar4jc@virginia.edu // Bit 3 is zero 27111723Sar4jc@virginia.edu Bitfield<2> mt; 27211723Sar4jc@virginia.edu Bitfield<1> sm; 27311723Sar4jc@virginia.edu Bitfield<0> tl; 27411723Sar4jc@virginia.eduEndBitUnion(Config3Reg) 27511723Sar4jc@virginia.edu 27611723Sar4jc@virginia.eduBitUnion64(WatchLoReg) 27711723Sar4jc@virginia.edu Bitfield<63, 3> vaddr; 27811723Sar4jc@virginia.edu Bitfield<2> i; 27911723Sar4jc@virginia.edu Bitfield<1> r; 28011723Sar4jc@virginia.edu Bitfield<0> w; 28111723Sar4jc@virginia.eduEndBitUnion(WatchLoReg) 28211723Sar4jc@virginia.edu 28311723Sar4jc@virginia.eduBitUnion32(WatchHiReg) 28411723Sar4jc@virginia.edu Bitfield<31> m; 28511723Sar4jc@virginia.edu Bitfield<30> g; 28611723Sar4jc@virginia.edu // Bits 29-24 are zeros 28711723Sar4jc@virginia.edu Bitfield<23, 16> asid; 28811723Sar4jc@virginia.edu // Bits 15-12 are zeros 28911723Sar4jc@virginia.edu Bitfield<11, 3> mask; 29011723Sar4jc@virginia.edu Bitfield<2> i; 29111723Sar4jc@virginia.edu Bitfield<1> r; 29211723Sar4jc@virginia.edu Bitfield<0> w; 29311723Sar4jc@virginia.eduEndBitUnion(WatchHiReg) 29411723Sar4jc@virginia.edu 29511723Sar4jc@virginia.eduBitUnion32(PerfCntCtlReg) 29611723Sar4jc@virginia.edu Bitfield<31> m; 29711723Sar4jc@virginia.edu Bitfield<30> w; 29811723Sar4jc@virginia.edu // Bits 29-11 are zeros 29911723Sar4jc@virginia.edu Bitfield<10, 5> event; 30011723Sar4jc@virginia.edu Bitfield<4> ie; 30111723Sar4jc@virginia.edu Bitfield<3> u; 30211723Sar4jc@virginia.edu Bitfield<2> s; 30311723Sar4jc@virginia.edu Bitfield<1> k; 30411723Sar4jc@virginia.edu Bitfield<0> exl; 30511723Sar4jc@virginia.eduEndBitUnion(PerfCntCtlReg) 30611723Sar4jc@virginia.edu 30711723Sar4jc@virginia.eduBitUnion32(CacheErrReg) 30811723Sar4jc@virginia.edu Bitfield<31> er; 30911723Sar4jc@virginia.edu Bitfield<30> ec; 31011723Sar4jc@virginia.edu Bitfield<29> ed; 31111723Sar4jc@virginia.edu Bitfield<28> et; 31211723Sar4jc@virginia.edu Bitfield<27> es; 31311723Sar4jc@virginia.edu Bitfield<26> ee; 31411723Sar4jc@virginia.edu Bitfield<25> eb; 31511723Sar4jc@virginia.edu Bitfield<24, 22> impl; 31611723Sar4jc@virginia.edu Bitfield<22, 0> index; 31711723Sar4jc@virginia.eduEndBitUnion(CacheErrReg) 31811723Sar4jc@virginia.edu 31911723Sar4jc@virginia.eduBitUnion32(TagLoReg) 32011723Sar4jc@virginia.edu Bitfield<31, 8> pTagLo; 32111723Sar4jc@virginia.edu Bitfield<7, 6> pState; 32211723Sar4jc@virginia.edu Bitfield<5> l; 32311723Sar4jc@virginia.edu Bitfield<4, 3> impl; 32411723Sar4jc@virginia.edu // Bits 2-1 are zeros 32511723Sar4jc@virginia.edu Bitfield<0> p; 32611723Sar4jc@virginia.eduEndBitUnion(TagLoReg) 32711723Sar4jc@virginia.edu 32811723Sar4jc@virginia.edu} // namespace RiscvISA 32911723Sar4jc@virginia.edu 33011723Sar4jc@virginia.edu#endif 331