pra_constants.hh revision 6376
14661Sksewell@umich.edu/* 25222Sksewell@umich.edu * Copyright (c) 2007 MIPS Technologies, Inc. 34661Sksewell@umich.edu * All rights reserved. 44661Sksewell@umich.edu * 54661Sksewell@umich.edu * Redistribution and use in source and binary forms, with or without 64661Sksewell@umich.edu * modification, are permitted provided that the following conditions are 74661Sksewell@umich.edu * met: redistributions of source code must retain the above copyright 84661Sksewell@umich.edu * notice, this list of conditions and the following disclaimer; 94661Sksewell@umich.edu * redistributions in binary form must reproduce the above copyright 104661Sksewell@umich.edu * notice, this list of conditions and the following disclaimer in the 114661Sksewell@umich.edu * documentation and/or other materials provided with the distribution; 124661Sksewell@umich.edu * neither the name of the copyright holders nor the names of its 134661Sksewell@umich.edu * contributors may be used to endorse or promote products derived from 144661Sksewell@umich.edu * this software without specific prior written permission. 154661Sksewell@umich.edu * 164661Sksewell@umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 174661Sksewell@umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 184661Sksewell@umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 194661Sksewell@umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 204661Sksewell@umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 214661Sksewell@umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 224661Sksewell@umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 234661Sksewell@umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 244661Sksewell@umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 254661Sksewell@umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 264661Sksewell@umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 274661Sksewell@umich.edu * 284661Sksewell@umich.edu * Authors: Jaidev Patwardhan 294661Sksewell@umich.edu */ 304661Sksewell@umich.edu 314661Sksewell@umich.edu#ifndef __ARCH_MIPS_PRA_CONSTANTS_HH__ 324661Sksewell@umich.edu#define __ARCH_MIPS_PRA_CONSTANTS_HH__ 334661Sksewell@umich.edu 344661Sksewell@umich.edu#include "arch/mips/types.hh" 356376Sgblack@eecs.umich.edu#include "base/bitunion.hh" 364661Sksewell@umich.edu 374661Sksewell@umich.edunamespace MipsISA 384661Sksewell@umich.edu{ 394661Sksewell@umich.edu 406376Sgblack@eecs.umich.eduBitUnion32(IndexReg) 416376Sgblack@eecs.umich.edu Bitfield<31> p; 426376Sgblack@eecs.umich.edu // Need to figure out how to put in the TLB specific bits here 436376Sgblack@eecs.umich.edu // For now, we assume that the entire length is used by the index 446376Sgblack@eecs.umich.edu // field In reality, Index_HI = N-1, where 456376Sgblack@eecs.umich.edu // N = Ceiling(log2(TLB Entries)) 466376Sgblack@eecs.umich.edu Bitfield<30, 0> index; 476376Sgblack@eecs.umich.eduEndBitUnion(IndexReg) 484661Sksewell@umich.edu 496376Sgblack@eecs.umich.eduBitUnion32(RandomReg) 506376Sgblack@eecs.umich.edu // This has a problem similar to the IndexReg index field. We'll keep 516376Sgblack@eecs.umich.edu // both consistent at 30 for now 526376Sgblack@eecs.umich.edu Bitfield<30, 0> random; 536376Sgblack@eecs.umich.eduEndBitUnion(RandomReg) 544661Sksewell@umich.edu 556376Sgblack@eecs.umich.eduBitUnion64(EntryLoReg) 566376Sgblack@eecs.umich.edu Bitfield<63, 30> fill; 576376Sgblack@eecs.umich.edu Bitfield<29, 6> pfn; // Page frame number 586376Sgblack@eecs.umich.edu Bitfield<5, 3> c; // Coherency attribute 596376Sgblack@eecs.umich.edu Bitfield<2> d; // Dirty Bit 606376Sgblack@eecs.umich.edu Bitfield<1> v; // Valid Bit 616376Sgblack@eecs.umich.edu Bitfield<0> g; // Global Bit 626376Sgblack@eecs.umich.eduEndBitUnion(EntryLoReg) 634661Sksewell@umich.edu 646376Sgblack@eecs.umich.eduBitUnion64(ContextReg) 656376Sgblack@eecs.umich.edu Bitfield<63, 23> pteBase; 666376Sgblack@eecs.umich.edu Bitfield<22, 4> badVPN2; 676376Sgblack@eecs.umich.edu // Bits 3-0 are 0 686376Sgblack@eecs.umich.eduEndBitUnion(ContextReg) 694661Sksewell@umich.edu 706376Sgblack@eecs.umich.eduBitUnion32(PageMaskReg) 716376Sgblack@eecs.umich.edu // Bits 31-29 are 0 726376Sgblack@eecs.umich.edu Bitfield<28, 13> mask; 736376Sgblack@eecs.umich.edu Bitfield<12, 11> maskx; 746376Sgblack@eecs.umich.edu // Bits 10-0 are zero 756376Sgblack@eecs.umich.eduEndBitUnion(PageMaskReg) 764661Sksewell@umich.edu 776376Sgblack@eecs.umich.eduBitUnion32(PageGrainReg) 786376Sgblack@eecs.umich.edu Bitfield<31, 30> aseUp; 796376Sgblack@eecs.umich.edu Bitfield<29> elpa; 806376Sgblack@eecs.umich.edu Bitfield<28> esp; 816376Sgblack@eecs.umich.edu // Bits 27-13 are zeros 826376Sgblack@eecs.umich.edu Bitfield<12, 8> aseDn; 836376Sgblack@eecs.umich.edu // Bits 7-0 are zeros 846376Sgblack@eecs.umich.eduEndBitUnion(PageGrainReg) 854661Sksewell@umich.edu 866376Sgblack@eecs.umich.eduBitUnion32(WiredReg) 876376Sgblack@eecs.umich.edu // See note on Index register above 886376Sgblack@eecs.umich.edu Bitfield<30, 0> wired; 896376Sgblack@eecs.umich.eduEndBitUnion(WiredReg) 904661Sksewell@umich.edu 916376Sgblack@eecs.umich.eduBitUnion32(HWREnaReg) 926376Sgblack@eecs.umich.edu Bitfield<31, 30> impl; 936376Sgblack@eecs.umich.edu Bitfield<3, 0> mask; 946376Sgblack@eecs.umich.eduEndBitUnion(HWREnaReg) 954661Sksewell@umich.edu 966376Sgblack@eecs.umich.eduBitUnion64(EntryHiReg) 976376Sgblack@eecs.umich.edu Bitfield<63, 62> r; 986376Sgblack@eecs.umich.edu Bitfield<61, 40> fill; 996376Sgblack@eecs.umich.edu Bitfield<39, 13> vpn2; 1006376Sgblack@eecs.umich.edu Bitfield<12, 11> vpn2x; 1016376Sgblack@eecs.umich.edu Bitfield<7, 0> asid; 1026376Sgblack@eecs.umich.eduEndBitUnion(EntryHiReg) 1034661Sksewell@umich.edu 1046376Sgblack@eecs.umich.eduBitUnion32(StatusReg) 1056376Sgblack@eecs.umich.edu SubBitUnion(cu, 31, 28) 1066376Sgblack@eecs.umich.edu Bitfield<31> cu3; 1076376Sgblack@eecs.umich.edu Bitfield<30> cu2; 1086376Sgblack@eecs.umich.edu Bitfield<29> cu1; 1096376Sgblack@eecs.umich.edu Bitfield<28> cu0; 1106376Sgblack@eecs.umich.edu EndSubBitUnion(cu) 1116376Sgblack@eecs.umich.edu Bitfield<27> rp; 1126376Sgblack@eecs.umich.edu Bitfield<26> fr; 1136376Sgblack@eecs.umich.edu Bitfield<25> re; 1146376Sgblack@eecs.umich.edu Bitfield<24> mx; 1156376Sgblack@eecs.umich.edu Bitfield<23> px; 1166376Sgblack@eecs.umich.edu Bitfield<22> bev; 1176376Sgblack@eecs.umich.edu Bitfield<21> ts; 1186376Sgblack@eecs.umich.edu Bitfield<20> sr; 1196376Sgblack@eecs.umich.edu Bitfield<19> nmi; 1206376Sgblack@eecs.umich.edu // Bit 18 is zero 1216376Sgblack@eecs.umich.edu Bitfield<17, 16> impl; 1226376Sgblack@eecs.umich.edu Bitfield<15, 10> ipl; 1236376Sgblack@eecs.umich.edu Bitfield<15> im7; 1246376Sgblack@eecs.umich.edu Bitfield<14> im6; 1256376Sgblack@eecs.umich.edu Bitfield<13> im5; 1266376Sgblack@eecs.umich.edu Bitfield<12> im4; 1276376Sgblack@eecs.umich.edu Bitfield<11> im3; 1286376Sgblack@eecs.umich.edu Bitfield<10> im2; 1296376Sgblack@eecs.umich.edu Bitfield<9> im1; 1306376Sgblack@eecs.umich.edu Bitfield<8> im0; 1316376Sgblack@eecs.umich.edu Bitfield<7> kx; 1326376Sgblack@eecs.umich.edu Bitfield<6> sx; 1336376Sgblack@eecs.umich.edu Bitfield<5> ux; 1346376Sgblack@eecs.umich.edu Bitfield<4, 3> ksu; 1356376Sgblack@eecs.umich.edu Bitfield<4> um; 1366376Sgblack@eecs.umich.edu Bitfield<3> r0; 1376376Sgblack@eecs.umich.edu Bitfield<2> erl; 1386376Sgblack@eecs.umich.edu Bitfield<1> exl; 1396376Sgblack@eecs.umich.edu Bitfield<0> ie; 1406376Sgblack@eecs.umich.eduEndBitUnion(StatusReg) 1414661Sksewell@umich.edu 1426376Sgblack@eecs.umich.eduBitUnion32(IntCtlReg) 1436376Sgblack@eecs.umich.edu Bitfield<31, 29> ipti; 1446376Sgblack@eecs.umich.edu Bitfield<28, 26> ippci; 1456376Sgblack@eecs.umich.edu // Bits 26-10 are zeros 1466376Sgblack@eecs.umich.edu Bitfield<9, 5> vs; 1476376Sgblack@eecs.umich.edu // Bits 4-0 are zeros 1486376Sgblack@eecs.umich.eduEndBitUnion(IntCtlReg) 1494661Sksewell@umich.edu 1506376Sgblack@eecs.umich.eduBitUnion32(SRSCtlReg) 1516376Sgblack@eecs.umich.edu // Bits 31-30 are zeros 1526376Sgblack@eecs.umich.edu Bitfield<29, 26> hss; 1536376Sgblack@eecs.umich.edu // Bits 25-22 are zeros 1546376Sgblack@eecs.umich.edu Bitfield<21, 18> eicss; 1556376Sgblack@eecs.umich.edu // Bits 17-16 are zeros 1566376Sgblack@eecs.umich.edu Bitfield<15, 12> ess; 1576376Sgblack@eecs.umich.edu // Bits 11-10 are zeros 1586376Sgblack@eecs.umich.edu Bitfield<9, 6> pss; 1596376Sgblack@eecs.umich.edu // Bits 5-4 are zeros 1606376Sgblack@eecs.umich.edu Bitfield<3, 0> css; 1616376Sgblack@eecs.umich.eduEndBitUnion(SRSCtlReg) 1624661Sksewell@umich.edu 1636376Sgblack@eecs.umich.eduBitUnion32(SRSMapReg) 1646376Sgblack@eecs.umich.edu Bitfield<31, 28> ssv7; 1656376Sgblack@eecs.umich.edu Bitfield<27, 24> ssv6; 1666376Sgblack@eecs.umich.edu Bitfield<23, 20> ssv5; 1676376Sgblack@eecs.umich.edu Bitfield<19, 16> ssv4; 1686376Sgblack@eecs.umich.edu Bitfield<15, 12> ssv3; 1696376Sgblack@eecs.umich.edu Bitfield<11, 8> ssv2; 1706376Sgblack@eecs.umich.edu Bitfield<7, 4> ssv1; 1716376Sgblack@eecs.umich.edu Bitfield<3, 0> ssv0; 1726376Sgblack@eecs.umich.eduEndBitUnion(SRSMapReg) 1734661Sksewell@umich.edu 1746376Sgblack@eecs.umich.eduBitUnion32(CauseReg) 1756376Sgblack@eecs.umich.edu Bitfield<31> bd; 1766376Sgblack@eecs.umich.edu Bitfield<30> ti; 1776376Sgblack@eecs.umich.edu Bitfield<29, 28> ce; 1786376Sgblack@eecs.umich.edu Bitfield<27> dc; 1796376Sgblack@eecs.umich.edu Bitfield<26> pci; 1806376Sgblack@eecs.umich.edu // Bits 25-24 are zeros 1816376Sgblack@eecs.umich.edu Bitfield<23> iv; 1826376Sgblack@eecs.umich.edu Bitfield<22> wp; 1836376Sgblack@eecs.umich.edu // Bits 21-16 are zeros 1846376Sgblack@eecs.umich.edu Bitfield<15, 10> ripl; 1856376Sgblack@eecs.umich.edu Bitfield<15> ip7; 1866376Sgblack@eecs.umich.edu Bitfield<14> ip6; 1876376Sgblack@eecs.umich.edu Bitfield<13> ip5; 1886376Sgblack@eecs.umich.edu Bitfield<12> ip4; 1896376Sgblack@eecs.umich.edu Bitfield<11> ip3; 1906376Sgblack@eecs.umich.edu Bitfield<10> ip2; 1916376Sgblack@eecs.umich.edu Bitfield<9> ip1; 1926376Sgblack@eecs.umich.edu Bitfield<8> ip0; 1936376Sgblack@eecs.umich.edu // Bit 7 is zero 1946376Sgblack@eecs.umich.edu Bitfield<6, 2> excCode; 1956376Sgblack@eecs.umich.edu // Bits 1-0 are zeros 1966376Sgblack@eecs.umich.eduEndBitUnion(CauseReg) 1974661Sksewell@umich.edu 1986376Sgblack@eecs.umich.eduBitUnion32(PRIdReg) 1996376Sgblack@eecs.umich.edu Bitfield<31, 24> coOp; 2006376Sgblack@eecs.umich.edu Bitfield<23, 16> coId; 2016376Sgblack@eecs.umich.edu Bitfield<15, 8> procId; 2026376Sgblack@eecs.umich.edu Bitfield<7, 0> rev; 2036376Sgblack@eecs.umich.eduEndBitUnion(PRIdReg) 2044661Sksewell@umich.edu 2056376Sgblack@eecs.umich.eduBitUnion32(EBaseReg) 2066376Sgblack@eecs.umich.edu // Bit 31 is one 2076376Sgblack@eecs.umich.edu // Bit 30 is zero 2086376Sgblack@eecs.umich.edu Bitfield<29, 12> exceptionBase; 2096376Sgblack@eecs.umich.edu // Bits 11-10 are zeros 2106376Sgblack@eecs.umich.edu Bitfield<9, 9> cpuNum; 2116376Sgblack@eecs.umich.eduEndBitUnion(EBaseReg) 2124661Sksewell@umich.edu 2136376Sgblack@eecs.umich.eduBitUnion32(ConfigReg) 2146376Sgblack@eecs.umich.edu Bitfield<31> m; 2156376Sgblack@eecs.umich.edu Bitfield<30, 28> k23; 2166376Sgblack@eecs.umich.edu Bitfield<27, 25> ku; 2176376Sgblack@eecs.umich.edu Bitfield<24, 16> impl; 2186376Sgblack@eecs.umich.edu Bitfield<15> be; 2196376Sgblack@eecs.umich.edu Bitfield<14, 13> at; 2206376Sgblack@eecs.umich.edu Bitfield<12, 10> ar; 2216376Sgblack@eecs.umich.edu Bitfield<9, 7> mt; 2226376Sgblack@eecs.umich.edu // Bits 6-4 are zeros 2236376Sgblack@eecs.umich.edu Bitfield<3> vi; 2246376Sgblack@eecs.umich.edu Bitfield<2, 0> k0; 2256376Sgblack@eecs.umich.eduEndBitUnion(ConfigReg) 2264661Sksewell@umich.edu 2276376Sgblack@eecs.umich.eduBitUnion32(Config1Reg) 2286376Sgblack@eecs.umich.edu Bitfield<31> m; 2296376Sgblack@eecs.umich.edu Bitfield<30, 25> mmuSize; 2306376Sgblack@eecs.umich.edu Bitfield<24, 22> is; 2316376Sgblack@eecs.umich.edu Bitfield<21, 19> il; 2326376Sgblack@eecs.umich.edu Bitfield<18, 16> ia; 2336376Sgblack@eecs.umich.edu Bitfield<15, 13> ds; 2346376Sgblack@eecs.umich.edu Bitfield<12, 10> dl; 2356376Sgblack@eecs.umich.edu Bitfield<9, 7> da; 2366376Sgblack@eecs.umich.edu Bitfield<6> c2; 2376376Sgblack@eecs.umich.edu Bitfield<5> md; 2386376Sgblack@eecs.umich.edu Bitfield<4> pc; 2396376Sgblack@eecs.umich.edu Bitfield<3> wr; 2406376Sgblack@eecs.umich.edu Bitfield<2> ca; 2416376Sgblack@eecs.umich.edu Bitfield<1> ep; 2426376Sgblack@eecs.umich.edu Bitfield<0> fp; 2436376Sgblack@eecs.umich.eduEndBitUnion(Config1Reg) 2444661Sksewell@umich.edu 2456376Sgblack@eecs.umich.eduBitUnion32(Config2Reg) 2466376Sgblack@eecs.umich.edu Bitfield<31> m; 2476376Sgblack@eecs.umich.edu Bitfield<30, 28> tu; 2486376Sgblack@eecs.umich.edu Bitfield<27, 24> ts; 2496376Sgblack@eecs.umich.edu Bitfield<23, 20> tl; 2506376Sgblack@eecs.umich.edu Bitfield<19, 16> ta; 2516376Sgblack@eecs.umich.edu Bitfield<15, 12> su; 2526376Sgblack@eecs.umich.edu Bitfield<11, 8> ss; 2536376Sgblack@eecs.umich.edu Bitfield<7, 4> sl; 2546376Sgblack@eecs.umich.edu Bitfield<3, 0> sa; 2556376Sgblack@eecs.umich.eduEndBitUnion(Config2Reg) 2564661Sksewell@umich.edu 2576376Sgblack@eecs.umich.eduBitUnion32(Config3Reg) 2586376Sgblack@eecs.umich.edu Bitfield<31> m; 2596376Sgblack@eecs.umich.edu // Bits 30-11 are zeros 2606376Sgblack@eecs.umich.edu Bitfield<10> dspp; 2616376Sgblack@eecs.umich.edu // Bits 9-8 are zeros 2626376Sgblack@eecs.umich.edu Bitfield<7> lpa; 2636376Sgblack@eecs.umich.edu Bitfield<6> veic; 2646376Sgblack@eecs.umich.edu Bitfield<5> vint; 2656376Sgblack@eecs.umich.edu Bitfield<4> sp; 2666376Sgblack@eecs.umich.edu // Bit 3 is zero 2676376Sgblack@eecs.umich.edu Bitfield<2> mt; 2686376Sgblack@eecs.umich.edu Bitfield<1> sm; 2696376Sgblack@eecs.umich.edu Bitfield<0> tl; 2706376Sgblack@eecs.umich.eduEndBitUnion(Config3Reg) 2714661Sksewell@umich.edu 2726376Sgblack@eecs.umich.eduBitUnion64(WatchLoReg) 2736376Sgblack@eecs.umich.edu Bitfield<63, 3> vaddr; 2746376Sgblack@eecs.umich.edu Bitfield<2> i; 2756376Sgblack@eecs.umich.edu Bitfield<1> r; 2766376Sgblack@eecs.umich.edu Bitfield<0> w; 2776376Sgblack@eecs.umich.eduEndBitUnion(WatchLoReg) 2784661Sksewell@umich.edu 2796376Sgblack@eecs.umich.eduBitUnion32(WatchHiReg) 2806376Sgblack@eecs.umich.edu Bitfield<31> m; 2816376Sgblack@eecs.umich.edu Bitfield<30> g; 2826376Sgblack@eecs.umich.edu // Bits 29-24 are zeros 2836376Sgblack@eecs.umich.edu Bitfield<23, 16> asid; 2846376Sgblack@eecs.umich.edu // Bits 15-12 are zeros 2856376Sgblack@eecs.umich.edu Bitfield<11, 3> mask; 2866376Sgblack@eecs.umich.edu Bitfield<2> i; 2876376Sgblack@eecs.umich.edu Bitfield<1> r; 2886376Sgblack@eecs.umich.edu Bitfield<0> w; 2896376Sgblack@eecs.umich.eduEndBitUnion(WatchHiReg) 2904661Sksewell@umich.edu 2916376Sgblack@eecs.umich.eduBitUnion32(PerfCntCtlReg) 2926376Sgblack@eecs.umich.edu Bitfield<31> m; 2936376Sgblack@eecs.umich.edu Bitfield<30> w; 2946376Sgblack@eecs.umich.edu // Bits 29-11 are zeros 2956376Sgblack@eecs.umich.edu Bitfield<10, 5> event; 2966376Sgblack@eecs.umich.edu Bitfield<4> ie; 2976376Sgblack@eecs.umich.edu Bitfield<3> u; 2986376Sgblack@eecs.umich.edu Bitfield<2> s; 2996376Sgblack@eecs.umich.edu Bitfield<1> k; 3006376Sgblack@eecs.umich.edu Bitfield<0> exl; 3016376Sgblack@eecs.umich.eduEndBitUnion(PerfCntCtlReg) 3024661Sksewell@umich.edu 3036376Sgblack@eecs.umich.eduBitUnion32(CacheErrReg) 3046376Sgblack@eecs.umich.edu Bitfield<31> er; 3056376Sgblack@eecs.umich.edu Bitfield<30> ec; 3066376Sgblack@eecs.umich.edu Bitfield<29> ed; 3076376Sgblack@eecs.umich.edu Bitfield<28> et; 3086376Sgblack@eecs.umich.edu Bitfield<27> es; 3096376Sgblack@eecs.umich.edu Bitfield<26> ee; 3106376Sgblack@eecs.umich.edu Bitfield<25> eb; 3116376Sgblack@eecs.umich.edu Bitfield<24, 22> impl; 3126376Sgblack@eecs.umich.edu Bitfield<22, 0> index; 3136376Sgblack@eecs.umich.eduEndBitUnion(CacheErrReg) 3144661Sksewell@umich.edu 3156376Sgblack@eecs.umich.eduBitUnion32(TagLoReg) 3166376Sgblack@eecs.umich.edu Bitfield<31, 8> pTagLo; 3176376Sgblack@eecs.umich.edu Bitfield<7, 6> pState; 3186376Sgblack@eecs.umich.edu Bitfield<5> l; 3196376Sgblack@eecs.umich.edu Bitfield<4, 3> impl; 3206376Sgblack@eecs.umich.edu // Bits 2-1 are zeros 3216376Sgblack@eecs.umich.edu Bitfield<0> p; 3226376Sgblack@eecs.umich.eduEndBitUnion(TagLoReg) 3234661Sksewell@umich.edu 3244661Sksewell@umich.edu} // namespace MipsISA 3254661Sksewell@umich.edu 3264661Sksewell@umich.edu#endif 327