isa_traits.hh revision 5254
12023SN/A/* 25254Sksewell@umich.edu * Copyright (c) 2007 MIPS Technologies, Inc. 35254Sksewell@umich.edu * All rights reserved. 42023SN/A * 55254Sksewell@umich.edu * Redistribution and use in source and binary forms, with or without 65254Sksewell@umich.edu * modification, are permitted provided that the following conditions are 75254Sksewell@umich.edu * met: redistributions of source code must retain the above copyright 85254Sksewell@umich.edu * notice, this list of conditions and the following disclaimer; 95254Sksewell@umich.edu * redistributions in binary form must reproduce the above copyright 105254Sksewell@umich.edu * notice, this list of conditions and the following disclaimer in the 115254Sksewell@umich.edu * documentation and/or other materials provided with the distribution; 125254Sksewell@umich.edu * neither the name of the copyright holders nor the names of its 135254Sksewell@umich.edu * contributors may be used to endorse or promote products derived from 145254Sksewell@umich.edu * this software without specific prior written permission. 152023SN/A * 165254Sksewell@umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 175254Sksewell@umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 185254Sksewell@umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 195254Sksewell@umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 205254Sksewell@umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 215254Sksewell@umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 225254Sksewell@umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 235254Sksewell@umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 245254Sksewell@umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 255254Sksewell@umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 265254Sksewell@umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 272665Ssaidi@eecs.umich.edu * 285254Sksewell@umich.edu * Authors: Gabe Black 295254Sksewell@umich.edu * Korey Sewell 305222Sksewell@umich.edu * Jaidev Patwardhan 312023SN/A */ 322023SN/A 332028SN/A#ifndef __ARCH_MIPS_ISA_TRAITS_HH__ 342028SN/A#define __ARCH_MIPS_ISA_TRAITS_HH__ 352023SN/A 362597SN/A#include "arch/mips/types.hh" 375254Sksewell@umich.edu#include "arch/mips/mips_core_specific.hh" 385222Sksewell@umich.edu#include "config/full_system.hh" 392023SN/A#include "sim/host.hh" 402023SN/A 412239SN/Anamespace LittleEndianGuest {}; 422239SN/A 432028SN/A#define TARGET_MIPS 442023SN/A 452131SN/Aclass StaticInstPtr; 462023SN/A 472131SN/Anamespace MipsISA 482023SN/A{ 492525SN/A using namespace LittleEndianGuest; 502525SN/A 512447SN/A StaticInstPtr decodeInst(ExtMachInst); 522023SN/A 535222Sksewell@umich.edu // MIPS DOES have a delay slot 543093Sksewell@umich.edu #define ISA_HAS_DELAY_SLOT 1 553093Sksewell@umich.edu 562972Sgblack@eecs.umich.edu const Addr PageShift = 13; 572972Sgblack@eecs.umich.edu const Addr PageBytes = ULL(1) << PageShift; 585222Sksewell@umich.edu const Addr Page_Mask = ~(PageBytes - 1); 592972Sgblack@eecs.umich.edu const Addr PageOffset = PageBytes - 1; 602239SN/A 615222Sksewell@umich.edu 625222Sksewell@umich.edu //////////////////////////////////////////////////////////////////////// 635222Sksewell@umich.edu // 645222Sksewell@umich.edu // Translation stuff 655222Sksewell@umich.edu // 665222Sksewell@umich.edu 675222Sksewell@umich.edu const Addr PteShift = 3; 685222Sksewell@umich.edu const Addr NPtePageShift = PageShift - PteShift; 695222Sksewell@umich.edu const Addr NPtePage = ULL(1) << NPtePageShift; 705222Sksewell@umich.edu const Addr PteMask = NPtePage - 1; 715222Sksewell@umich.edu 725222Sksewell@umich.edu //// All 'Mapped' segments go through the TLB 735222Sksewell@umich.edu //// All other segments are translated by dropping the MSB, to give 745222Sksewell@umich.edu //// the corresponding physical address 755222Sksewell@umich.edu // User Segment - Mapped 765222Sksewell@umich.edu const Addr USegBase = ULL(0x0); 775222Sksewell@umich.edu const Addr USegEnd = ULL(0x7FFFFFFF); 785222Sksewell@umich.edu 795222Sksewell@umich.edu // Kernel Segment 0 - Unmapped 805222Sksewell@umich.edu const Addr KSeg0End = ULL(0x9FFFFFFF); 815222Sksewell@umich.edu const Addr KSeg0Base = ULL(0x80000000); 825222Sksewell@umich.edu const Addr KSeg0Mask = ULL(0x1FFFFFFF); 835222Sksewell@umich.edu 845222Sksewell@umich.edu // Kernel Segment 1 - Unmapped, Uncached 855222Sksewell@umich.edu const Addr KSeg1End = ULL(0xBFFFFFFF); 865222Sksewell@umich.edu const Addr KSeg1Base = ULL(0xA0000000); 875222Sksewell@umich.edu const Addr KSeg1Mask = ULL(0x1FFFFFFF); 885222Sksewell@umich.edu 895222Sksewell@umich.edu // Kernel/Supervisor Segment - Mapped 905222Sksewell@umich.edu const Addr KSSegEnd = ULL(0xDFFFFFFF); 915222Sksewell@umich.edu const Addr KSSegBase = ULL(0xC0000000); 925222Sksewell@umich.edu 935222Sksewell@umich.edu // Kernel Segment 3 - Mapped 945222Sksewell@umich.edu const Addr KSeg3End = ULL(0xFFFFFFFF); 955222Sksewell@umich.edu const Addr KSeg3Base = ULL(0xE0000000); 965222Sksewell@umich.edu 975222Sksewell@umich.edu 985222Sksewell@umich.edu // For loading... XXX This maybe could be USegEnd?? --ali 995222Sksewell@umich.edu const Addr LoadAddrMask = ULL(0xffffffffff); 1005222Sksewell@umich.edu 1015222Sksewell@umich.edu inline Addr Phys2K0Seg(Addr addr) 1025222Sksewell@umich.edu { 1035222Sksewell@umich.edu // if (addr & PAddrUncachedBit43) { 1045222Sksewell@umich.edu// addr &= PAddrUncachedMask; 1055222Sksewell@umich.edu// addr |= PAddrUncachedBit40; 1065222Sksewell@umich.edu// } 1075222Sksewell@umich.edu return addr | KSeg0Base; 1085222Sksewell@umich.edu } 1095222Sksewell@umich.edu 1105254Sksewell@umich.edu 1115254Sksewell@umich.edu const unsigned VABits = 32; 1125254Sksewell@umich.edu const unsigned PABits = 32; // Is this correct? 1135254Sksewell@umich.edu const Addr VAddrImplMask = (ULL(1) << VABits) - 1; 1145254Sksewell@umich.edu const Addr VAddrUnImplMask = ~VAddrImplMask; 1155254Sksewell@umich.edu inline Addr VAddrImpl(Addr a) { return a & VAddrImplMask; } 1165254Sksewell@umich.edu inline Addr VAddrVPN(Addr a) { return a >> MipsISA::PageShift; } 1175254Sksewell@umich.edu inline Addr VAddrOffset(Addr a) { return a & MipsISA::PageOffset; } 1185254Sksewell@umich.edu 1195254Sksewell@umich.edu const Addr PAddrImplMask = (ULL(1) << PABits) - 1; 1205254Sksewell@umich.edu 1215222Sksewell@umich.edu //////////////////////////////////////////////////////////////////////// 1225222Sksewell@umich.edu // 1235222Sksewell@umich.edu // Interrupt levels 1245222Sksewell@umich.edu // 1255222Sksewell@umich.edu enum InterruptLevels 1265222Sksewell@umich.edu { 1275222Sksewell@umich.edu INTLEVEL_SOFTWARE_MIN = 4, 1285222Sksewell@umich.edu INTLEVEL_SOFTWARE_MAX = 19, 1295222Sksewell@umich.edu 1305222Sksewell@umich.edu INTLEVEL_EXTERNAL_MIN = 20, 1315222Sksewell@umich.edu INTLEVEL_EXTERNAL_MAX = 34, 1325222Sksewell@umich.edu 1335222Sksewell@umich.edu INTLEVEL_IRQ0 = 20, 1345222Sksewell@umich.edu INTLEVEL_IRQ1 = 21, 1355222Sksewell@umich.edu INTINDEX_ETHERNET = 0, 1365222Sksewell@umich.edu INTINDEX_SCSI = 1, 1375222Sksewell@umich.edu INTLEVEL_IRQ2 = 22, 1385222Sksewell@umich.edu INTLEVEL_IRQ3 = 23, 1395222Sksewell@umich.edu 1405222Sksewell@umich.edu INTLEVEL_SERIAL = 33, 1415222Sksewell@umich.edu 1425222Sksewell@umich.edu NumInterruptLevels = INTLEVEL_EXTERNAL_MAX 1435222Sksewell@umich.edu }; 1445222Sksewell@umich.edu 1455222Sksewell@umich.edu 1465222Sksewell@umich.edu // MIPS modes 1475222Sksewell@umich.edu enum mode_type 1485222Sksewell@umich.edu { 1495222Sksewell@umich.edu mode_kernel = 0, // kernel 1505222Sksewell@umich.edu mode_supervisor = 1, // supervisor 1515222Sksewell@umich.edu mode_user = 2, // user mode 1525222Sksewell@umich.edu mode_debug = 3, // debug mode 1535222Sksewell@umich.edu mode_number // number of modes 1545222Sksewell@umich.edu }; 1555222Sksewell@umich.edu 1565222Sksewell@umich.edu inline mode_type getOperatingMode(MiscReg Stat) 1575222Sksewell@umich.edu { 1585222Sksewell@umich.edu if((Stat & 0x10000006) != 0 || (Stat & 0x18) ==0) 1595222Sksewell@umich.edu return mode_kernel; 1605222Sksewell@umich.edu else{ 1615222Sksewell@umich.edu if((Stat & 0x18) == 0x8) 1625222Sksewell@umich.edu return mode_supervisor; 1635222Sksewell@umich.edu else if((Stat & 0x18) == 0x10) 1645222Sksewell@umich.edu return mode_user; 1655222Sksewell@umich.edu else return mode_number; 1665222Sksewell@umich.edu } 1675222Sksewell@umich.edu } 1685222Sksewell@umich.edu 1695222Sksewell@umich.edu 1702972Sgblack@eecs.umich.edu // return a no-op instruction... used for instruction fetch faults 1712972Sgblack@eecs.umich.edu const ExtMachInst NoopMachInst = 0x00000000; 1722131SN/A 1732972Sgblack@eecs.umich.edu // Constants Related to the number of registers 1742972Sgblack@eecs.umich.edu const int NumIntArchRegs = 32; 1754661Sksewell@umich.edu const int NumIntSpecialRegs = 9; 1762972Sgblack@eecs.umich.edu const int NumFloatArchRegs = 32; 1772972Sgblack@eecs.umich.edu const int NumFloatSpecialRegs = 5; 1782597SN/A 1795222Sksewell@umich.edu const int NumShadowRegSets = 16; // Maximum number of shadow register sets 1805222Sksewell@umich.edu const int NumIntRegs = NumIntArchRegs*NumShadowRegSets + NumIntSpecialRegs; //HI & LO Regs 1815222Sksewell@umich.edu const int NumFloatRegs = NumFloatArchRegs + NumFloatSpecialRegs;// 1825222Sksewell@umich.edu 1834772Sgblack@eecs.umich.edu // Static instruction parameters 1845222Sksewell@umich.edu const int MaxInstSrcRegs = 10; 1855222Sksewell@umich.edu const int MaxInstDestRegs = 8; 1864772Sgblack@eecs.umich.edu 1872972Sgblack@eecs.umich.edu // semantically meaningful register indices 1882972Sgblack@eecs.umich.edu const int ZeroReg = 0; 1892972Sgblack@eecs.umich.edu const int AssemblerReg = 1; 1902972Sgblack@eecs.umich.edu const int ReturnValueReg = 2; 1912972Sgblack@eecs.umich.edu const int ReturnValueReg1 = 2; 1922972Sgblack@eecs.umich.edu const int ReturnValueReg2 = 3; 1935222Sksewell@umich.edu const int ArgumentReg0 = 4; 1945222Sksewell@umich.edu const int ArgumentReg1 = 5; 1955222Sksewell@umich.edu const int ArgumentReg2 = 6; 1965222Sksewell@umich.edu const int ArgumentReg3 = 7; 1972972Sgblack@eecs.umich.edu const int KernelReg0 = 26; 1982972Sgblack@eecs.umich.edu const int KernelReg1 = 27; 1992972Sgblack@eecs.umich.edu const int GlobalPointerReg = 28; 2002972Sgblack@eecs.umich.edu const int StackPointerReg = 29; 2012972Sgblack@eecs.umich.edu const int FramePointerReg = 30; 2022972Sgblack@eecs.umich.edu const int ReturnAddressReg = 31; 2032597SN/A 2045222Sksewell@umich.edu const int ArgumentReg[] = {4, 5, 6, 7}; 2055222Sksewell@umich.edu const int NumArgumentRegs = sizeof(ArgumentReg) / sizeof(const int); 2065222Sksewell@umich.edu 2072972Sgblack@eecs.umich.edu const int SyscallNumReg = ReturnValueReg1; 2084661Sksewell@umich.edu const int SyscallPseudoReturnReg = ReturnValueReg2; 2095222Sksewell@umich.edu const int SyscallSuccessReg = ArgumentReg3; 2102131SN/A 2112972Sgblack@eecs.umich.edu const int LogVMPageSize = 13; // 8K bytes 2122972Sgblack@eecs.umich.edu const int VMPageSize = (1 << LogVMPageSize); 2132131SN/A 2142972Sgblack@eecs.umich.edu const int BranchPredAddrShiftAmt = 2; // instructions are 4-byte aligned 2152131SN/A 2162972Sgblack@eecs.umich.edu const int MachineBytes = 4; 2172972Sgblack@eecs.umich.edu const int WordBytes = 4; 2182972Sgblack@eecs.umich.edu const int HalfwordBytes = 2; 2192972Sgblack@eecs.umich.edu const int ByteBytes = 1; 2202131SN/A 2212972Sgblack@eecs.umich.edu const int ANNOTE_NONE = 0; 2222972Sgblack@eecs.umich.edu const uint32_t ITOUCH_ANNOTE = 0xffffffff; 2232131SN/A 2245222Sksewell@umich.edu // These help enumerate all the registers for dependence tracking. 2255222Sksewell@umich.edu const int FP_Base_DepTag = NumIntRegs; 2265222Sksewell@umich.edu const int Ctrl_Base_DepTag = FP_Base_DepTag + NumFloatRegs; 2275222Sksewell@umich.edu 2284661Sksewell@umich.edu // Enumerate names for 'Control' Registers in the CPU 2294661Sksewell@umich.edu // Reference MIPS32 Arch. for Programmers, Vol. III, Ch.8 2304661Sksewell@umich.edu // (Register Number-Register Select) Summary of Register 2314661Sksewell@umich.edu //------------------------------------------------------ 2324661Sksewell@umich.edu // The first set of names classify the CP0 names as Register Banks 2334661Sksewell@umich.edu // for easy indexing when using the 'RD + SEL' index combination 2344661Sksewell@umich.edu // in CP0 instructions. 2354661Sksewell@umich.edu enum MiscRegTags { 2365222Sksewell@umich.edu Index = Ctrl_Base_DepTag + 0, //Bank 0: 0 - 3 2374661Sksewell@umich.edu MVPControl, 2384661Sksewell@umich.edu MVPConf0, 2394661Sksewell@umich.edu MVPConf1, 2404661Sksewell@umich.edu 2415222Sksewell@umich.edu CP0_Random = Ctrl_Base_DepTag + 8, //Bank 1: 8 - 15 2424661Sksewell@umich.edu VPEControl, 2434661Sksewell@umich.edu VPEConf0, 2444661Sksewell@umich.edu VPEConf1, 2454661Sksewell@umich.edu YQMask, 2464661Sksewell@umich.edu VPESchedule, 2474661Sksewell@umich.edu VPEScheFBack, 2484661Sksewell@umich.edu VPEOpt, 2494661Sksewell@umich.edu 2505222Sksewell@umich.edu EntryLo0 = Ctrl_Base_DepTag + 16, //Bank 2: 16 - 23 2514661Sksewell@umich.edu TCStatus, 2524661Sksewell@umich.edu TCBind, 2534661Sksewell@umich.edu TCRestart, 2544661Sksewell@umich.edu TCHalt, 2554661Sksewell@umich.edu TCContext, 2564661Sksewell@umich.edu TCSchedule, 2574661Sksewell@umich.edu TCScheFBack, 2584661Sksewell@umich.edu 2595222Sksewell@umich.edu EntryLo1 = Ctrl_Base_DepTag + 24, // Bank 3: 24 2604661Sksewell@umich.edu 2615222Sksewell@umich.edu Context = Ctrl_Base_DepTag + 32, // Bank 4: 32 - 33 2624661Sksewell@umich.edu ContextConfig, 2634661Sksewell@umich.edu 2645222Sksewell@umich.edu PageMask = Ctrl_Base_DepTag + 40, //Bank 5: 40 - 41 2655222Sksewell@umich.edu PageGrain = Ctrl_Base_DepTag + 41, 2664661Sksewell@umich.edu 2675222Sksewell@umich.edu Wired = Ctrl_Base_DepTag + 48, //Bank 6:48-55 2684661Sksewell@umich.edu SRSConf0, 2694661Sksewell@umich.edu SRSConf1, 2704661Sksewell@umich.edu SRSConf2, 2714661Sksewell@umich.edu SRSConf3, 2724661Sksewell@umich.edu SRSConf4, 2734661Sksewell@umich.edu 2745222Sksewell@umich.edu HWRena = Ctrl_Base_DepTag + 56, //Bank 7: 56-63 2754661Sksewell@umich.edu 2765222Sksewell@umich.edu BadVAddr = Ctrl_Base_DepTag + 64, //Bank 8: 64-71 2774661Sksewell@umich.edu 2785222Sksewell@umich.edu Count = Ctrl_Base_DepTag + 72, //Bank 9: 72-79 2794661Sksewell@umich.edu 2805222Sksewell@umich.edu EntryHi = Ctrl_Base_DepTag + 80, //Bank 10: 80-87 2814661Sksewell@umich.edu 2825222Sksewell@umich.edu Compare = Ctrl_Base_DepTag + 88, //Bank 11: 88-95 2834661Sksewell@umich.edu 2845222Sksewell@umich.edu Status = Ctrl_Base_DepTag + 96, //Bank 12: 96-103 2854661Sksewell@umich.edu IntCtl, 2864661Sksewell@umich.edu SRSCtl, 2874661Sksewell@umich.edu SRSMap, 2884661Sksewell@umich.edu 2895222Sksewell@umich.edu Cause = Ctrl_Base_DepTag + 104, //Bank 13: 104-111 2904661Sksewell@umich.edu 2915222Sksewell@umich.edu EPC = Ctrl_Base_DepTag + 112, //Bank 14: 112-119 2924661Sksewell@umich.edu 2935222Sksewell@umich.edu PRId = Ctrl_Base_DepTag + 120, //Bank 15: 120-127, 2944661Sksewell@umich.edu EBase, 2954661Sksewell@umich.edu 2965222Sksewell@umich.edu Config = Ctrl_Base_DepTag + 128, //Bank 16: 128-135 2974661Sksewell@umich.edu Config1, 2984661Sksewell@umich.edu Config2, 2994661Sksewell@umich.edu Config3, 3004661Sksewell@umich.edu Config4, 3014661Sksewell@umich.edu Config5, 3024661Sksewell@umich.edu Config6, 3034661Sksewell@umich.edu Config7, 3044661Sksewell@umich.edu 3054661Sksewell@umich.edu 3065222Sksewell@umich.edu LLAddr = Ctrl_Base_DepTag + 136, //Bank 17: 136-143 3074661Sksewell@umich.edu 3085222Sksewell@umich.edu WatchLo0 = Ctrl_Base_DepTag + 144, //Bank 18: 144-151 3094661Sksewell@umich.edu WatchLo1, 3104661Sksewell@umich.edu WatchLo2, 3114661Sksewell@umich.edu WatchLo3, 3124661Sksewell@umich.edu WatchLo4, 3134661Sksewell@umich.edu WatchLo5, 3144661Sksewell@umich.edu WatchLo6, 3154661Sksewell@umich.edu WatchLo7, 3164661Sksewell@umich.edu 3175222Sksewell@umich.edu WatchHi0 = Ctrl_Base_DepTag + 152, //Bank 19: 152-159 3184661Sksewell@umich.edu WatchHi1, 3194661Sksewell@umich.edu WatchHi2, 3204661Sksewell@umich.edu WatchHi3, 3214661Sksewell@umich.edu WatchHi4, 3224661Sksewell@umich.edu WatchHi5, 3234661Sksewell@umich.edu WatchHi6, 3244661Sksewell@umich.edu WatchHi7, 3254661Sksewell@umich.edu 3265222Sksewell@umich.edu XCContext64 = Ctrl_Base_DepTag + 160, //Bank 20: 160-167 3274661Sksewell@umich.edu 3284661Sksewell@umich.edu //Bank 21: 168-175 3294661Sksewell@umich.edu 3304661Sksewell@umich.edu //Bank 22: 176-183 3314661Sksewell@umich.edu 3325222Sksewell@umich.edu Debug = Ctrl_Base_DepTag + 184, //Bank 23: 184-191 3334661Sksewell@umich.edu TraceControl1, 3344661Sksewell@umich.edu TraceControl2, 3354661Sksewell@umich.edu UserTraceData, 3364661Sksewell@umich.edu TraceBPC, 3374661Sksewell@umich.edu 3385222Sksewell@umich.edu DEPC = Ctrl_Base_DepTag + 192, //Bank 24: 192-199 3394661Sksewell@umich.edu 3405222Sksewell@umich.edu PerfCnt0 = Ctrl_Base_DepTag + 200, //Bank 25: 200-207 3414661Sksewell@umich.edu PerfCnt1, 3424661Sksewell@umich.edu PerfCnt2, 3434661Sksewell@umich.edu PerfCnt3, 3444661Sksewell@umich.edu PerfCnt4, 3454661Sksewell@umich.edu PerfCnt5, 3464661Sksewell@umich.edu PerfCnt6, 3474661Sksewell@umich.edu PerfCnt7, 3484661Sksewell@umich.edu 3495222Sksewell@umich.edu ErrCtl = Ctrl_Base_DepTag + 208, //Bank 26: 208-215 3504661Sksewell@umich.edu 3515222Sksewell@umich.edu CacheErr0 = Ctrl_Base_DepTag + 216, //Bank 27: 216-223 3524661Sksewell@umich.edu CacheErr1, 3534661Sksewell@umich.edu CacheErr2, 3544661Sksewell@umich.edu CacheErr3, 3554661Sksewell@umich.edu 3565222Sksewell@umich.edu TagLo0 = Ctrl_Base_DepTag + 224, //Bank 28: 224-231 3574661Sksewell@umich.edu DataLo1, 3584661Sksewell@umich.edu TagLo2, 3594661Sksewell@umich.edu DataLo3, 3604661Sksewell@umich.edu TagLo4, 3614661Sksewell@umich.edu DataLo5, 3624661Sksewell@umich.edu TagLo6, 3634661Sksewell@umich.edu DataLo7, 3644661Sksewell@umich.edu 3655222Sksewell@umich.edu TagHi0 = Ctrl_Base_DepTag + 232, //Bank 29: 232-239 3664661Sksewell@umich.edu DataHi1, 3674661Sksewell@umich.edu TagHi2, 3684661Sksewell@umich.edu DataHi3, 3694661Sksewell@umich.edu TagHi4, 3704661Sksewell@umich.edu DataHi5, 3714661Sksewell@umich.edu TagHi6, 3724661Sksewell@umich.edu DataHi7, 3734661Sksewell@umich.edu 3744661Sksewell@umich.edu 3755222Sksewell@umich.edu ErrorEPC = Ctrl_Base_DepTag + 240, //Bank 30: 240-247 3764661Sksewell@umich.edu 3775222Sksewell@umich.edu DESAVE = Ctrl_Base_DepTag + 248, //Bank 31: 248-256 3784661Sksewell@umich.edu 3795222Sksewell@umich.edu LLFlag = Ctrl_Base_DepTag + 257, 3804661Sksewell@umich.edu 3814661Sksewell@umich.edu NumControlRegs 3824661Sksewell@umich.edu }; 3834661Sksewell@umich.edu 3845222Sksewell@umich.edu const int TotalDataRegs = NumIntRegs + NumFloatRegs; 3855222Sksewell@umich.edu 3864661Sksewell@umich.edu const int NumMiscRegs = NumControlRegs; 3874661Sksewell@umich.edu 3884661Sksewell@umich.edu const int TotalNumRegs = NumIntRegs + NumFloatRegs + NumMiscRegs; 3894661Sksewell@umich.edu 3904661Sksewell@umich.edu 3912023SN/A}; 3922023SN/A 3932447SN/Ausing namespace MipsISA; 3942447SN/A 3952028SN/A#endif // __ARCH_MIPS_ISA_TRAITS_HH__ 396