miscregs.hh revision 8902
16242Sgblack@eecs.umich.edu/*
28868SMatt.Horsnell@arm.com * Copyright (c) 2010-2012 ARM Limited
37093Sgblack@eecs.umich.edu * All rights reserved
47093Sgblack@eecs.umich.edu *
57093Sgblack@eecs.umich.edu * The license below extends only to copyright in the software and shall
67093Sgblack@eecs.umich.edu * not be construed as granting a license to any other intellectual
77093Sgblack@eecs.umich.edu * property including but not limited to intellectual property relating
87093Sgblack@eecs.umich.edu * to a hardware implementation of the functionality of the software
97093Sgblack@eecs.umich.edu * licensed hereunder.  You may use the software subject to the license
107093Sgblack@eecs.umich.edu * terms below provided that you ensure that this notice is replicated
117093Sgblack@eecs.umich.edu * unmodified and in its entirety in all distributions of the software,
127093Sgblack@eecs.umich.edu * modified or unmodified, in source code or in binary form.
137093Sgblack@eecs.umich.edu *
146242Sgblack@eecs.umich.edu * Copyright (c) 2009 The Regents of The University of Michigan
156242Sgblack@eecs.umich.edu * All rights reserved.
166242Sgblack@eecs.umich.edu *
176242Sgblack@eecs.umich.edu * Redistribution and use in source and binary forms, with or without
186242Sgblack@eecs.umich.edu * modification, are permitted provided that the following conditions are
196242Sgblack@eecs.umich.edu * met: redistributions of source code must retain the above copyright
206242Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer;
216242Sgblack@eecs.umich.edu * redistributions in binary form must reproduce the above copyright
226242Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the
236242Sgblack@eecs.umich.edu * documentation and/or other materials provided with the distribution;
246242Sgblack@eecs.umich.edu * neither the name of the copyright holders nor the names of its
256242Sgblack@eecs.umich.edu * contributors may be used to endorse or promote products derived from
266242Sgblack@eecs.umich.edu * this software without specific prior written permission.
276242Sgblack@eecs.umich.edu *
286242Sgblack@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
296242Sgblack@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
306242Sgblack@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
316242Sgblack@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
326242Sgblack@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
336242Sgblack@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
346242Sgblack@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
356242Sgblack@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
366242Sgblack@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
376242Sgblack@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
386242Sgblack@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
396242Sgblack@eecs.umich.edu *
406242Sgblack@eecs.umich.edu * Authors: Gabe Black
416242Sgblack@eecs.umich.edu */
426242Sgblack@eecs.umich.edu#ifndef __ARCH_ARM_MISCREGS_HH__
436242Sgblack@eecs.umich.edu#define __ARCH_ARM_MISCREGS_HH__
446242Sgblack@eecs.umich.edu
456242Sgblack@eecs.umich.edu#include "base/bitunion.hh"
466242Sgblack@eecs.umich.edu
476242Sgblack@eecs.umich.edunamespace ArmISA
486242Sgblack@eecs.umich.edu{
496242Sgblack@eecs.umich.edu    enum ConditionCode {
506242Sgblack@eecs.umich.edu        COND_EQ  =   0,
516242Sgblack@eecs.umich.edu        COND_NE, //  1
526242Sgblack@eecs.umich.edu        COND_CS, //  2
536242Sgblack@eecs.umich.edu        COND_CC, //  3
546242Sgblack@eecs.umich.edu        COND_MI, //  4
556242Sgblack@eecs.umich.edu        COND_PL, //  5
566242Sgblack@eecs.umich.edu        COND_VS, //  6
576242Sgblack@eecs.umich.edu        COND_VC, //  7
586242Sgblack@eecs.umich.edu        COND_HI, //  8
596242Sgblack@eecs.umich.edu        COND_LS, //  9
606242Sgblack@eecs.umich.edu        COND_GE, // 10
616242Sgblack@eecs.umich.edu        COND_LT, // 11
626242Sgblack@eecs.umich.edu        COND_GT, // 12
636242Sgblack@eecs.umich.edu        COND_LE, // 13
646242Sgblack@eecs.umich.edu        COND_AL, // 14
657111Sgblack@eecs.umich.edu        COND_UC  // 15
666242Sgblack@eecs.umich.edu    };
676242Sgblack@eecs.umich.edu
686242Sgblack@eecs.umich.edu    enum MiscRegIndex {
696242Sgblack@eecs.umich.edu        MISCREG_CPSR = 0,
708302SAli.Saidi@ARM.com        MISCREG_CPSR_Q,
716735Sgblack@eecs.umich.edu        MISCREG_SPSR,
726242Sgblack@eecs.umich.edu        MISCREG_SPSR_FIQ,
736242Sgblack@eecs.umich.edu        MISCREG_SPSR_IRQ,
746242Sgblack@eecs.umich.edu        MISCREG_SPSR_SVC,
756723Sgblack@eecs.umich.edu        MISCREG_SPSR_MON,
766242Sgblack@eecs.umich.edu        MISCREG_SPSR_UND,
776242Sgblack@eecs.umich.edu        MISCREG_SPSR_ABT,
786261Sgblack@eecs.umich.edu        MISCREG_FPSR,
796403Sgblack@eecs.umich.edu        MISCREG_FPSID,
806403Sgblack@eecs.umich.edu        MISCREG_FPSCR,
817783SGiacomo.Gabrielli@arm.com        MISCREG_FPSCR_QC,  // Cumulative saturation flag
827783SGiacomo.Gabrielli@arm.com        MISCREG_FPSCR_EXC,  // Cumulative FP exception flags
836403Sgblack@eecs.umich.edu        MISCREG_FPEXC,
847325Sgblack@eecs.umich.edu        MISCREG_MVFR0,
857325Sgblack@eecs.umich.edu        MISCREG_MVFR1,
867400SAli.Saidi@ARM.com        MISCREG_SCTLR_RST,
877350SAli.Saidi@ARM.com        MISCREG_SEV_MAILBOX,
887259Sgblack@eecs.umich.edu
898868SMatt.Horsnell@arm.com        // CP14 registers
908868SMatt.Horsnell@arm.com        MISCREG_CP14_START,
918868SMatt.Horsnell@arm.com        MISCREG_DBGDIDR = MISCREG_CP14_START,
928868SMatt.Horsnell@arm.com        MISCREG_DBGDSCR_INT,
938868SMatt.Horsnell@arm.com        MISCREG_DBGDTRRX_INT,
948868SMatt.Horsnell@arm.com        MISCREG_DBGTRTX_INT,
958868SMatt.Horsnell@arm.com        MISCREG_DBGWFAR,
968868SMatt.Horsnell@arm.com        MISCREG_DBGVCR,
978868SMatt.Horsnell@arm.com        MISCREG_DBGECR,
988868SMatt.Horsnell@arm.com        MISCREG_DBGDSCCR,
998868SMatt.Horsnell@arm.com        MISCREG_DBGSMCR,
1008868SMatt.Horsnell@arm.com        MISCREG_DBGDTRRX_EXT,
1018868SMatt.Horsnell@arm.com        MISCREG_DBGDSCR_EXT,
1028868SMatt.Horsnell@arm.com        MISCREG_DBGDTRTX_EXT,
1038868SMatt.Horsnell@arm.com        MISCREG_DBGDRCR,
1048868SMatt.Horsnell@arm.com        MISCREG_DBGBVR,
1058868SMatt.Horsnell@arm.com        MISCREG_DBGBCR,
1068868SMatt.Horsnell@arm.com        MISCREG_DBGBVR_M,
1078868SMatt.Horsnell@arm.com        MISCREG_DBGBCR_M,
1088868SMatt.Horsnell@arm.com        MISCREG_DBGDRAR,
1098868SMatt.Horsnell@arm.com        MISCREG_DBGBXVR_M,
1108868SMatt.Horsnell@arm.com        MISCREG_DBGOSLAR,
1118868SMatt.Horsnell@arm.com        MISCREG_DBGOSSRR,
1128868SMatt.Horsnell@arm.com        MISCREG_DBGOSDLR,
1138868SMatt.Horsnell@arm.com        MISCREG_DBGPRCR,
1148868SMatt.Horsnell@arm.com        MISCREG_DBGPRSR,
1158868SMatt.Horsnell@arm.com        MISCREG_DBGDSAR,
1168868SMatt.Horsnell@arm.com        MISCREG_DBGITCTRL,
1178868SMatt.Horsnell@arm.com        MISCREG_DBGCLAIMSET,
1188868SMatt.Horsnell@arm.com        MISCREG_DBGCLAIMCLR,
1198868SMatt.Horsnell@arm.com        MISCREG_DBGAUTHSTATUS,
1208868SMatt.Horsnell@arm.com        MISCREG_DBGDEVID2,
1218868SMatt.Horsnell@arm.com        MISCREG_DBGDEVID1,
1228868SMatt.Horsnell@arm.com        MISCREG_DBGDEVID,
1238868SMatt.Horsnell@arm.com
1247259Sgblack@eecs.umich.edu        // CP15 registers
1257259Sgblack@eecs.umich.edu        MISCREG_CP15_START,
1267259Sgblack@eecs.umich.edu        MISCREG_SCTLR = MISCREG_CP15_START,
1277264Sgblack@eecs.umich.edu        MISCREG_DCCISW,
1287267Sgblack@eecs.umich.edu        MISCREG_DCCIMVAC,
1297285Sgblack@eecs.umich.edu        MISCREG_DCCMVAC,
1307265Sgblack@eecs.umich.edu        MISCREG_CONTEXTIDR,
1317266Sgblack@eecs.umich.edu        MISCREG_TPIDRURW,
1327266Sgblack@eecs.umich.edu        MISCREG_TPIDRURO,
1337266Sgblack@eecs.umich.edu        MISCREG_TPIDRPRW,
1347268Sgblack@eecs.umich.edu        MISCREG_CP15ISB,
1357272Sgblack@eecs.umich.edu        MISCREG_CP15DSB,
1367272Sgblack@eecs.umich.edu        MISCREG_CP15DMB,
1377271Sgblack@eecs.umich.edu        MISCREG_CPACR,
1387273Sgblack@eecs.umich.edu        MISCREG_CLIDR,
1397287Sgblack@eecs.umich.edu        MISCREG_CCSIDR,
1407287Sgblack@eecs.umich.edu        MISCREG_CSSELR,
1417274Sgblack@eecs.umich.edu        MISCREG_ICIALLUIS,
1427275Sgblack@eecs.umich.edu        MISCREG_ICIALLU,
1437276Sgblack@eecs.umich.edu        MISCREG_ICIMVAU,
1447286Sgblack@eecs.umich.edu        MISCREG_BPIMVA,
1457297Sgblack@eecs.umich.edu        MISCREG_BPIALLIS,
1467297Sgblack@eecs.umich.edu        MISCREG_BPIALL,
1477298Sgblack@eecs.umich.edu        MISCREG_MIDR,
1487352Sgblack@eecs.umich.edu        MISCREG_TTBR0,
1497352Sgblack@eecs.umich.edu        MISCREG_TTBR1,
1507354Sgblack@eecs.umich.edu        MISCREG_TLBTR,
1517353Sgblack@eecs.umich.edu        MISCREG_DACR,
1527355Sgblack@eecs.umich.edu        MISCREG_TLBIALLIS,
1537355Sgblack@eecs.umich.edu        MISCREG_TLBIMVAIS,
1547355Sgblack@eecs.umich.edu        MISCREG_TLBIASIDIS,
1557355Sgblack@eecs.umich.edu        MISCREG_TLBIMVAAIS,
1567355Sgblack@eecs.umich.edu        MISCREG_ITLBIALL,
1577355Sgblack@eecs.umich.edu        MISCREG_ITLBIMVA,
1587355Sgblack@eecs.umich.edu        MISCREG_ITLBIASID,
1597355Sgblack@eecs.umich.edu        MISCREG_DTLBIALL,
1607355Sgblack@eecs.umich.edu        MISCREG_DTLBIMVA,
1617355Sgblack@eecs.umich.edu        MISCREG_DTLBIASID,
1627355Sgblack@eecs.umich.edu        MISCREG_TLBIALL,
1637355Sgblack@eecs.umich.edu        MISCREG_TLBIMVA,
1647355Sgblack@eecs.umich.edu        MISCREG_TLBIASID,
1657355Sgblack@eecs.umich.edu        MISCREG_TLBIMVAA,
1667362Sgblack@eecs.umich.edu        MISCREG_DFSR,
1677362Sgblack@eecs.umich.edu        MISCREG_IFSR,
1687362Sgblack@eecs.umich.edu        MISCREG_DFAR,
1697362Sgblack@eecs.umich.edu        MISCREG_IFAR,
1707390Sgblack@eecs.umich.edu        MISCREG_MPIDR,
1717404SAli.Saidi@ARM.com        MISCREG_PRRR,
1727404SAli.Saidi@ARM.com        MISCREG_NMRR,
1737404SAli.Saidi@ARM.com        MISCREG_TTBCR,
1747404SAli.Saidi@ARM.com        MISCREG_ID_PFR0,
1757406SAli.Saidi@ARM.com        MISCREG_CTR,
1767406SAli.Saidi@ARM.com        MISCREG_SCR,
1777406SAli.Saidi@ARM.com        MISCREG_SDER,
1787436Sdam.sunwoo@arm.com        MISCREG_PAR,
1797436Sdam.sunwoo@arm.com        MISCREG_V2PCWPR,
1807436Sdam.sunwoo@arm.com        MISCREG_V2PCWPW,
1817436Sdam.sunwoo@arm.com        MISCREG_V2PCWUR,
1827436Sdam.sunwoo@arm.com        MISCREG_V2PCWUW,
1837436Sdam.sunwoo@arm.com        MISCREG_V2POWPR,
1847436Sdam.sunwoo@arm.com        MISCREG_V2POWPW,
1857436Sdam.sunwoo@arm.com        MISCREG_V2POWUR,
1867436Sdam.sunwoo@arm.com        MISCREG_V2POWUW,
1877583SAli.Saidi@arm.com        MISCREG_ID_MMFR0,
1888468Swade.walker@arm.com        MISCREG_ID_MMFR2,
1898284SAli.Saidi@ARM.com        MISCREG_ID_MMFR3,
1907583SAli.Saidi@arm.com        MISCREG_ACTLR,
1917583SAli.Saidi@arm.com        MISCREG_PMCR,
1927583SAli.Saidi@arm.com        MISCREG_PMCCNTR,
1937583SAli.Saidi@arm.com        MISCREG_PMCNTENSET,
1947583SAli.Saidi@arm.com        MISCREG_PMCNTENCLR,
1957583SAli.Saidi@arm.com        MISCREG_PMOVSR,
1967583SAli.Saidi@arm.com        MISCREG_PMSWINC,
1977583SAli.Saidi@arm.com        MISCREG_PMSELR,
1987583SAli.Saidi@arm.com        MISCREG_PMCEID0,
1997583SAli.Saidi@arm.com        MISCREG_PMCEID1,
2007583SAli.Saidi@arm.com        MISCREG_PMC_OTHER,
2017583SAli.Saidi@arm.com        MISCREG_PMXEVCNTR,
2027583SAli.Saidi@arm.com        MISCREG_PMUSERENR,
2037583SAli.Saidi@arm.com        MISCREG_PMINTENSET,
2047583SAli.Saidi@arm.com        MISCREG_PMINTENCLR,
2058147SAli.Saidi@ARM.com        MISCREG_ID_ISAR0,
2068147SAli.Saidi@ARM.com        MISCREG_ID_ISAR1,
2078147SAli.Saidi@ARM.com        MISCREG_ID_ISAR2,
2088147SAli.Saidi@ARM.com        MISCREG_ID_ISAR3,
2098147SAli.Saidi@ARM.com        MISCREG_ID_ISAR4,
2108147SAli.Saidi@ARM.com        MISCREG_ID_ISAR5,
2118208SAli.Saidi@ARM.com        MISCREG_CPSR_MODE,
2128209SAli.Saidi@ARM.com        MISCREG_LOCKFLAG,
2138209SAli.Saidi@ARM.com        MISCREG_LOCKADDR,
2148299Schander.sudanthi@arm.com        MISCREG_ID_PFR1,
2158549Sdaniel.johnson@arm.com        MISCREG_L2CTLR,
2167259Sgblack@eecs.umich.edu        MISCREG_CP15_UNIMP_START,
2177406SAli.Saidi@ARM.com        MISCREG_TCMTR = MISCREG_CP15_UNIMP_START,
2187259Sgblack@eecs.umich.edu        MISCREG_ID_DFR0,
2197259Sgblack@eecs.umich.edu        MISCREG_ID_AFR0,
2207259Sgblack@eecs.umich.edu        MISCREG_ID_MMFR1,
2217259Sgblack@eecs.umich.edu        MISCREG_AIDR,
2227259Sgblack@eecs.umich.edu        MISCREG_ADFSR,
2237259Sgblack@eecs.umich.edu        MISCREG_AIFSR,
2247259Sgblack@eecs.umich.edu        MISCREG_DCIMVAC,
2257259Sgblack@eecs.umich.edu        MISCREG_DCISW,
2267259Sgblack@eecs.umich.edu        MISCREG_MCCSW,
2277259Sgblack@eecs.umich.edu        MISCREG_DCCMVAU,
2287351Sgblack@eecs.umich.edu        MISCREG_NSACR,
2297351Sgblack@eecs.umich.edu        MISCREG_VBAR,
2307351Sgblack@eecs.umich.edu        MISCREG_MVBAR,
2317351Sgblack@eecs.umich.edu        MISCREG_ISR,
2327351Sgblack@eecs.umich.edu        MISCREG_FCEIDR,
2338058SAli.Saidi@ARM.com        MISCREG_L2LATENCY,
2348550SChander.Sudanthi@ARM.com        MISCREG_CRN15,
2357351Sgblack@eecs.umich.edu
2367259Sgblack@eecs.umich.edu
2377259Sgblack@eecs.umich.edu        MISCREG_CP15_END,
2387259Sgblack@eecs.umich.edu
2397259Sgblack@eecs.umich.edu        // Dummy indices
2407259Sgblack@eecs.umich.edu        MISCREG_NOP = MISCREG_CP15_END,
2417259Sgblack@eecs.umich.edu        MISCREG_RAZ,
2427259Sgblack@eecs.umich.edu
2436735Sgblack@eecs.umich.edu        NUM_MISCREGS
2446261Sgblack@eecs.umich.edu    };
2456261Sgblack@eecs.umich.edu
2468868SMatt.Horsnell@arm.com    MiscRegIndex decodeCP14Reg(unsigned crn, unsigned opc1,
2478868SMatt.Horsnell@arm.com                               unsigned crm, unsigned opc2);
2488868SMatt.Horsnell@arm.com
2497259Sgblack@eecs.umich.edu    MiscRegIndex decodeCP15Reg(unsigned crn, unsigned opc1,
2507259Sgblack@eecs.umich.edu                               unsigned crm, unsigned opc2);
2517259Sgblack@eecs.umich.edu
2528868SMatt.Horsnell@arm.com
2536261Sgblack@eecs.umich.edu    const char * const miscRegName[NUM_MISCREGS] = {
2548302SAli.Saidi@ARM.com        "cpsr", "cpsr_q", "spsr", "spsr_fiq", "spsr_irq", "spsr_svc",
2557259Sgblack@eecs.umich.edu        "spsr_mon", "spsr_und", "spsr_abt",
2567783SGiacomo.Gabrielli@arm.com        "fpsr", "fpsid", "fpscr", "fpscr_qc", "fpscr_exc", "fpexc",
2577783SGiacomo.Gabrielli@arm.com        "mvfr0", "mvfr1",
2587400SAli.Saidi@ARM.com        "sctlr_rst", "sev_mailbox",
2598868SMatt.Horsnell@arm.com        "DBGDIDR",
2608868SMatt.Horsnell@arm.com        "DBGDSCR_INT",
2618868SMatt.Horsnell@arm.com        "DBGDTRRX_INT",
2628868SMatt.Horsnell@arm.com        "DBGTRTX_INT",
2638868SMatt.Horsnell@arm.com        "DBGWFAR",
2648868SMatt.Horsnell@arm.com        "DBGVCR",
2658868SMatt.Horsnell@arm.com        "DBGECR",
2668868SMatt.Horsnell@arm.com        "DBGDSCCR",
2678868SMatt.Horsnell@arm.com        "DBGSMCR",
2688868SMatt.Horsnell@arm.com        "DBGDTRRX_EXT",
2698868SMatt.Horsnell@arm.com        "DBGDSCR_EXT",
2708868SMatt.Horsnell@arm.com        "DBGDTRTX_EXT",
2718868SMatt.Horsnell@arm.com        "DBGDRCR",
2728868SMatt.Horsnell@arm.com        "DBGBVR",
2738868SMatt.Horsnell@arm.com        "DBGBCR",
2748868SMatt.Horsnell@arm.com        "DBGBVR_M",
2758868SMatt.Horsnell@arm.com        "DBGBCR_M",
2768868SMatt.Horsnell@arm.com        "DBGDRAR",
2778868SMatt.Horsnell@arm.com        "DBGBXVR_M",
2788868SMatt.Horsnell@arm.com        "DBGOSLAR",
2798868SMatt.Horsnell@arm.com        "DBGOSSRR",
2808868SMatt.Horsnell@arm.com        "DBGOSDLR",
2818868SMatt.Horsnell@arm.com        "DBGPRCR",
2828868SMatt.Horsnell@arm.com        "DBGPRSR",
2838868SMatt.Horsnell@arm.com        "DBGDSAR",
2848868SMatt.Horsnell@arm.com        "DBGITCTRL",
2858868SMatt.Horsnell@arm.com        "DBGCLAIMSET",
2868868SMatt.Horsnell@arm.com        "DBGCLAIMCLR",
2878868SMatt.Horsnell@arm.com        "DBGAUTHSTATUS",
2888868SMatt.Horsnell@arm.com        "DBGDEVID2",
2898868SMatt.Horsnell@arm.com        "DBGDEVID1",
2908868SMatt.Horsnell@arm.com        "DBGDEVID",
2917285Sgblack@eecs.umich.edu        "sctlr", "dccisw", "dccimvac", "dccmvac",
2927267Sgblack@eecs.umich.edu        "contextidr", "tpidrurw", "tpidruro", "tpidrprw",
2937287Sgblack@eecs.umich.edu        "cp15isb", "cp15dsb", "cp15dmb", "cpacr",
2947287Sgblack@eecs.umich.edu        "clidr", "ccsidr", "csselr",
2957297Sgblack@eecs.umich.edu        "icialluis", "iciallu", "icimvau",
2967297Sgblack@eecs.umich.edu        "bpimva", "bpiallis", "bpiall",
2977355Sgblack@eecs.umich.edu        "midr", "ttbr0", "ttbr1", "tlbtr", "dacr",
2987355Sgblack@eecs.umich.edu        "tlbiallis", "tlbimvais", "tlbiasidis", "tlbimvaais",
2997355Sgblack@eecs.umich.edu        "itlbiall", "itlbimva", "itlbiasid",
3007355Sgblack@eecs.umich.edu        "dtlbiall", "dtlbimva", "dtlbiasid",
3017355Sgblack@eecs.umich.edu        "tlbiall", "tlbimva", "tlbiasid", "tlbimvaa",
3027390Sgblack@eecs.umich.edu        "dfsr", "ifsr", "dfar", "ifar", "mpidr",
3037436Sdam.sunwoo@arm.com        "prrr", "nmrr",  "ttbcr", "id_pfr0", "ctr",
3047436Sdam.sunwoo@arm.com        "scr", "sder", "par",
3057436Sdam.sunwoo@arm.com        "v2pcwpr", "v2pcwpw", "v2pcwur", "v2pcwuw",
3067436Sdam.sunwoo@arm.com        "v2powpr", "v2powpw", "v2powur", "v2powuw",
3078468Swade.walker@arm.com        "id_mmfr0", "id_mmfr2", "id_mmfr3", "actlr", "pmcr", "pmccntr",
3087583SAli.Saidi@arm.com        "pmcntenset", "pmcntenclr", "pmovsr",
3097583SAli.Saidi@arm.com        "pmswinc", "pmselr", "pmceid0",
3107583SAli.Saidi@arm.com        "pmceid1", "pmc_other", "pmxevcntr",
3117583SAli.Saidi@arm.com        "pmuserenr", "pmintenset", "pmintenclr",
3128147SAli.Saidi@ARM.com        "id_isar0", "id_isar1", "id_isar2", "id_isar3", "id_isar4", "id_isar5",
3138299Schander.sudanthi@arm.com        "cpsr_mode", "lockflag", "lockaddr", "id_pfr1",
3148549Sdaniel.johnson@arm.com        "l2ctlr",
3157583SAli.Saidi@arm.com         // Unimplemented below
3167406SAli.Saidi@ARM.com        "tcmtr",
3178299Schander.sudanthi@arm.com        "id_dfr0", "id_afr0",
3188468Swade.walker@arm.com        "id_mmfr1",
3198147SAli.Saidi@ARM.com        "aidr", "adfsr", "aifsr",
3207297Sgblack@eecs.umich.edu        "dcimvac", "dcisw", "mccsw",
3217272Sgblack@eecs.umich.edu        "dccmvau",
3227406SAli.Saidi@ARM.com        "nsacr",
3238179Sgblack@eecs.umich.edu        "vbar", "mvbar", "isr", "fceidr", "l2latency",
3248550SChander.Sudanthi@ARM.com        "crn15",
3257259Sgblack@eecs.umich.edu        "nop", "raz"
3266242Sgblack@eecs.umich.edu    };
3276242Sgblack@eecs.umich.edu
3286242Sgblack@eecs.umich.edu    BitUnion32(CPSR)
3298303SAli.Saidi@ARM.com        Bitfield<31,30> nz;
3306242Sgblack@eecs.umich.edu        Bitfield<29> c;
3316242Sgblack@eecs.umich.edu        Bitfield<28> v;
3326242Sgblack@eecs.umich.edu        Bitfield<27> q;
3336735Sgblack@eecs.umich.edu        Bitfield<26,25> it1;
3346242Sgblack@eecs.umich.edu        Bitfield<24> j;
3356242Sgblack@eecs.umich.edu        Bitfield<19, 16> ge;
3366735Sgblack@eecs.umich.edu        Bitfield<15,10> it2;
3376242Sgblack@eecs.umich.edu        Bitfield<9> e;
3386242Sgblack@eecs.umich.edu        Bitfield<8> a;
3396242Sgblack@eecs.umich.edu        Bitfield<7> i;
3406242Sgblack@eecs.umich.edu        Bitfield<6> f;
3416242Sgblack@eecs.umich.edu        Bitfield<5> t;
3426242Sgblack@eecs.umich.edu        Bitfield<4, 0> mode;
3436242Sgblack@eecs.umich.edu    EndBitUnion(CPSR)
3446735Sgblack@eecs.umich.edu
3456750Sgblack@eecs.umich.edu    // This mask selects bits of the CPSR that actually go in the CondCodes
3466750Sgblack@eecs.umich.edu    // integer register to allow renaming.
3478302SAli.Saidi@ARM.com    static const uint32_t CondCodesMask   = 0xF00F0000;
3488302SAli.Saidi@ARM.com    static const uint32_t CpsrMaskQ       = 0x08000000;
3496750Sgblack@eecs.umich.edu
3506735Sgblack@eecs.umich.edu    BitUnion32(SCTLR)
3517360Sgblack@eecs.umich.edu        Bitfield<31> ie;  // Instruction endianness
3526735Sgblack@eecs.umich.edu        Bitfield<30> te;  // Thumb Exception Enable
3536735Sgblack@eecs.umich.edu        Bitfield<29> afe; // Access flag enable
3546735Sgblack@eecs.umich.edu        Bitfield<28> tre; // TEX Remap bit
3556735Sgblack@eecs.umich.edu        Bitfield<27> nmfi;// Non-maskable fast interrupts enable
3566735Sgblack@eecs.umich.edu        Bitfield<25> ee;  // Exception Endianness bit
3576735Sgblack@eecs.umich.edu        Bitfield<24> ve;  // Interrupt vectors enable
3587406SAli.Saidi@ARM.com        Bitfield<23> xp; //  Extended page table enable bit
3596735Sgblack@eecs.umich.edu        Bitfield<22> u;   // Alignment (now unused)
3606735Sgblack@eecs.umich.edu        Bitfield<21> fi;  // Fast interrupts configuration enable
3617360Sgblack@eecs.umich.edu        Bitfield<19> dz;  // Divide by Zero fault enable bit
3626735Sgblack@eecs.umich.edu        Bitfield<18> rao2;// Read as one
3637360Sgblack@eecs.umich.edu        Bitfield<17> br;  // Background region bit
3646735Sgblack@eecs.umich.edu        Bitfield<16> rao3;// Read as one
3656735Sgblack@eecs.umich.edu        Bitfield<14> rr;  // Round robin cache replacement
3666735Sgblack@eecs.umich.edu        Bitfield<13> v;   // Base address for exception vectors
3676735Sgblack@eecs.umich.edu        Bitfield<12> i;   // instruction cache enable
3686735Sgblack@eecs.umich.edu        Bitfield<11> z;   // branch prediction enable bit
3696735Sgblack@eecs.umich.edu        Bitfield<10> sw;  // Enable swp/swpb
3707406SAli.Saidi@ARM.com        Bitfield<9,8> rs;   // deprecated protection bits
3716735Sgblack@eecs.umich.edu        Bitfield<6,3> rao4;// Read as one
3726735Sgblack@eecs.umich.edu        Bitfield<7>  b;   // Endianness support (unused)
3736735Sgblack@eecs.umich.edu        Bitfield<2>  c;   // Cache enable bit
3746735Sgblack@eecs.umich.edu        Bitfield<1>  a;   // Alignment fault checking
3756735Sgblack@eecs.umich.edu        Bitfield<0>  m;   // MMU enable bit
3766735Sgblack@eecs.umich.edu    EndBitUnion(SCTLR)
3777320Sgblack@eecs.umich.edu
3787320Sgblack@eecs.umich.edu    BitUnion32(CPACR)
3797320Sgblack@eecs.umich.edu        Bitfield<1, 0> cp0;
3807320Sgblack@eecs.umich.edu        Bitfield<3, 2> cp1;
3817320Sgblack@eecs.umich.edu        Bitfield<5, 4> cp2;
3827320Sgblack@eecs.umich.edu        Bitfield<7, 6> cp3;
3837320Sgblack@eecs.umich.edu        Bitfield<9, 8> cp4;
3847320Sgblack@eecs.umich.edu        Bitfield<11, 10> cp5;
3857320Sgblack@eecs.umich.edu        Bitfield<13, 12> cp6;
3867320Sgblack@eecs.umich.edu        Bitfield<15, 14> cp7;
3877320Sgblack@eecs.umich.edu        Bitfield<17, 16> cp8;
3887320Sgblack@eecs.umich.edu        Bitfield<19, 18> cp9;
3897320Sgblack@eecs.umich.edu        Bitfield<21, 20> cp10;
3907320Sgblack@eecs.umich.edu        Bitfield<23, 22> cp11;
3917320Sgblack@eecs.umich.edu        Bitfield<25, 24> cp12;
3927320Sgblack@eecs.umich.edu        Bitfield<27, 26> cp13;
3938206SWilliam.Wang@arm.com        Bitfield<29, 28> rsvd;
3947320Sgblack@eecs.umich.edu        Bitfield<30> d32dis;
3957320Sgblack@eecs.umich.edu        Bitfield<31> asedis;
3967320Sgblack@eecs.umich.edu    EndBitUnion(CPACR)
3977362Sgblack@eecs.umich.edu
3987362Sgblack@eecs.umich.edu    BitUnion32(FSR)
3997362Sgblack@eecs.umich.edu        Bitfield<3, 0> fsLow;
4007362Sgblack@eecs.umich.edu        Bitfield<7, 4> domain;
4017362Sgblack@eecs.umich.edu        Bitfield<10> fsHigh;
4027362Sgblack@eecs.umich.edu        Bitfield<11> wnr;
4037362Sgblack@eecs.umich.edu        Bitfield<12> ext;
4047362Sgblack@eecs.umich.edu    EndBitUnion(FSR)
4057376Sgblack@eecs.umich.edu
4067376Sgblack@eecs.umich.edu    BitUnion32(FPSCR)
4077376Sgblack@eecs.umich.edu        Bitfield<0> ioc;
4087376Sgblack@eecs.umich.edu        Bitfield<1> dzc;
4097376Sgblack@eecs.umich.edu        Bitfield<2> ofc;
4107376Sgblack@eecs.umich.edu        Bitfield<3> ufc;
4117376Sgblack@eecs.umich.edu        Bitfield<4> ixc;
4127376Sgblack@eecs.umich.edu        Bitfield<7> idc;
4137376Sgblack@eecs.umich.edu        Bitfield<8> ioe;
4147376Sgblack@eecs.umich.edu        Bitfield<9> dze;
4157376Sgblack@eecs.umich.edu        Bitfield<10> ofe;
4167376Sgblack@eecs.umich.edu        Bitfield<11> ufe;
4177376Sgblack@eecs.umich.edu        Bitfield<12> ixe;
4187376Sgblack@eecs.umich.edu        Bitfield<15> ide;
4197376Sgblack@eecs.umich.edu        Bitfield<18, 16> len;
4207376Sgblack@eecs.umich.edu        Bitfield<21, 20> stride;
4217376Sgblack@eecs.umich.edu        Bitfield<23, 22> rMode;
4227376Sgblack@eecs.umich.edu        Bitfield<24> fz;
4237376Sgblack@eecs.umich.edu        Bitfield<25> dn;
4247376Sgblack@eecs.umich.edu        Bitfield<26> ahp;
4257376Sgblack@eecs.umich.edu        Bitfield<27> qc;
4267376Sgblack@eecs.umich.edu        Bitfield<28> v;
4277376Sgblack@eecs.umich.edu        Bitfield<29> c;
4287376Sgblack@eecs.umich.edu        Bitfield<30> z;
4297376Sgblack@eecs.umich.edu        Bitfield<31> n;
4307376Sgblack@eecs.umich.edu    EndBitUnion(FPSCR)
4317383Sgblack@eecs.umich.edu
4327643Sgblack@eecs.umich.edu    // This mask selects bits of the FPSCR that actually go in the FpCondCodes
4337643Sgblack@eecs.umich.edu    // integer register to allow renaming.
4347783SGiacomo.Gabrielli@arm.com    static const uint32_t FpCondCodesMask = 0xF0000000;
4357783SGiacomo.Gabrielli@arm.com    // This mask selects the cumulative FP exception flags of the FPSCR.
4367783SGiacomo.Gabrielli@arm.com    static const uint32_t FpscrExcMask = 0x0000009F;
4377783SGiacomo.Gabrielli@arm.com    // This mask selects the cumulative saturation flag of the FPSCR.
4387783SGiacomo.Gabrielli@arm.com    static const uint32_t FpscrQcMask = 0x08000000;
4397643Sgblack@eecs.umich.edu
4407640Sgblack@eecs.umich.edu    BitUnion32(FPEXC)
4417640Sgblack@eecs.umich.edu        Bitfield<31> ex;
4427640Sgblack@eecs.umich.edu        Bitfield<30> en;
4437640Sgblack@eecs.umich.edu        Bitfield<29, 0> subArchDefined;
4447640Sgblack@eecs.umich.edu    EndBitUnion(FPEXC)
4457640Sgblack@eecs.umich.edu
4467383Sgblack@eecs.umich.edu    BitUnion32(MVFR0)
4477383Sgblack@eecs.umich.edu        Bitfield<3, 0> advSimdRegisters;
4487383Sgblack@eecs.umich.edu        Bitfield<7, 4> singlePrecision;
4497383Sgblack@eecs.umich.edu        Bitfield<11, 8> doublePrecision;
4507383Sgblack@eecs.umich.edu        Bitfield<15, 12> vfpExceptionTrapping;
4517383Sgblack@eecs.umich.edu        Bitfield<19, 16> divide;
4527383Sgblack@eecs.umich.edu        Bitfield<23, 20> squareRoot;
4537383Sgblack@eecs.umich.edu        Bitfield<27, 24> shortVectors;
4547383Sgblack@eecs.umich.edu        Bitfield<31, 28> roundingModes;
4557383Sgblack@eecs.umich.edu    EndBitUnion(MVFR0)
4567383Sgblack@eecs.umich.edu
4577383Sgblack@eecs.umich.edu    BitUnion32(MVFR1)
4587383Sgblack@eecs.umich.edu        Bitfield<3, 0> flushToZero;
4597383Sgblack@eecs.umich.edu        Bitfield<7, 4> defaultNaN;
4607383Sgblack@eecs.umich.edu        Bitfield<11, 8> advSimdLoadStore;
4617383Sgblack@eecs.umich.edu        Bitfield<15, 12> advSimdInteger;
4627383Sgblack@eecs.umich.edu        Bitfield<19, 16> advSimdSinglePrecision;
4637383Sgblack@eecs.umich.edu        Bitfield<23, 20> advSimdHalfPrecision;
4647383Sgblack@eecs.umich.edu        Bitfield<27, 24> vfpHalfPrecision;
4657383Sgblack@eecs.umich.edu        Bitfield<31, 28> raz;
4667383Sgblack@eecs.umich.edu    EndBitUnion(MVFR1)
4677404SAli.Saidi@ARM.com
4687404SAli.Saidi@ARM.com    BitUnion32(PRRR)
4697404SAli.Saidi@ARM.com       Bitfield<1,0> tr0;
4707404SAli.Saidi@ARM.com       Bitfield<3,2> tr1;
4717404SAli.Saidi@ARM.com       Bitfield<5,4> tr2;
4727404SAli.Saidi@ARM.com       Bitfield<7,6> tr3;
4737404SAli.Saidi@ARM.com       Bitfield<9,8> tr4;
4747404SAli.Saidi@ARM.com       Bitfield<11,10> tr5;
4757404SAli.Saidi@ARM.com       Bitfield<13,12> tr6;
4767404SAli.Saidi@ARM.com       Bitfield<15,14> tr7;
4777404SAli.Saidi@ARM.com       Bitfield<16> ds0;
4787404SAli.Saidi@ARM.com       Bitfield<17> ds1;
4797404SAli.Saidi@ARM.com       Bitfield<18> ns0;
4807404SAli.Saidi@ARM.com       Bitfield<19> ns1;
4817404SAli.Saidi@ARM.com       Bitfield<24> nos0;
4827404SAli.Saidi@ARM.com       Bitfield<25> nos1;
4837404SAli.Saidi@ARM.com       Bitfield<26> nos2;
4847404SAli.Saidi@ARM.com       Bitfield<27> nos3;
4857404SAli.Saidi@ARM.com       Bitfield<28> nos4;
4867404SAli.Saidi@ARM.com       Bitfield<29> nos5;
4877404SAli.Saidi@ARM.com       Bitfield<30> nos6;
4887404SAli.Saidi@ARM.com       Bitfield<31> nos7;
4897404SAli.Saidi@ARM.com   EndBitUnion(PRRR)
4907404SAli.Saidi@ARM.com
4917404SAli.Saidi@ARM.com   BitUnion32(NMRR)
4927404SAli.Saidi@ARM.com       Bitfield<1,0> ir0;
4937404SAli.Saidi@ARM.com       Bitfield<3,2> ir1;
4947404SAli.Saidi@ARM.com       Bitfield<5,4> ir2;
4957404SAli.Saidi@ARM.com       Bitfield<7,6> ir3;
4967404SAli.Saidi@ARM.com       Bitfield<9,8> ir4;
4977404SAli.Saidi@ARM.com       Bitfield<11,10> ir5;
4987404SAli.Saidi@ARM.com       Bitfield<13,12> ir6;
4997404SAli.Saidi@ARM.com       Bitfield<15,14> ir7;
5007404SAli.Saidi@ARM.com       Bitfield<17,16> or0;
5017404SAli.Saidi@ARM.com       Bitfield<19,18> or1;
5027404SAli.Saidi@ARM.com       Bitfield<21,20> or2;
5037404SAli.Saidi@ARM.com       Bitfield<23,22> or3;
5047404SAli.Saidi@ARM.com       Bitfield<25,24> or4;
5057404SAli.Saidi@ARM.com       Bitfield<27,26> or5;
5067404SAli.Saidi@ARM.com       Bitfield<29,28> or6;
5077404SAli.Saidi@ARM.com       Bitfield<31,30> or7;
5087404SAli.Saidi@ARM.com   EndBitUnion(NMRR)
5097404SAli.Saidi@ARM.com
5108552Sdaniel.johnson@arm.com   BitUnion32(CONTEXTIDR)
5118552Sdaniel.johnson@arm.com      Bitfield<7,0>  asid;
5128552Sdaniel.johnson@arm.com      Bitfield<31,8> procid;
5138552Sdaniel.johnson@arm.com   EndBitUnion(CONTEXTIDR)
5148552Sdaniel.johnson@arm.com
5158549Sdaniel.johnson@arm.com   BitUnion32(L2CTLR)
5168549Sdaniel.johnson@arm.com      Bitfield<2,0>   sataRAMLatency;
5178549Sdaniel.johnson@arm.com      Bitfield<4,3>   reserved_4_3;
5188549Sdaniel.johnson@arm.com      Bitfield<5>     dataRAMSetup;
5198549Sdaniel.johnson@arm.com      Bitfield<8,6>   tagRAMLatency;
5208549Sdaniel.johnson@arm.com      Bitfield<9>     tagRAMSetup;
5218549Sdaniel.johnson@arm.com      Bitfield<11,10> dataRAMSlice;
5228549Sdaniel.johnson@arm.com      Bitfield<12>    tagRAMSlice;
5238549Sdaniel.johnson@arm.com      Bitfield<20,13> reserved_20_13;
5248549Sdaniel.johnson@arm.com      Bitfield<21>    eccandParityEnable;
5258549Sdaniel.johnson@arm.com      Bitfield<22>    reserved_22;
5268549Sdaniel.johnson@arm.com      Bitfield<23>    interptCtrlPresent;
5278549Sdaniel.johnson@arm.com      Bitfield<25,24> numCPUs;
5288549Sdaniel.johnson@arm.com      Bitfield<30,26> reserved_30_26;
5298549Sdaniel.johnson@arm.com      Bitfield<31>    l2rstDISABLE_monitor;
5308549Sdaniel.johnson@arm.com   EndBitUnion(L2CTLR)
5318549Sdaniel.johnson@arm.com
5328902Sandreas.hansson@arm.com}
5336242Sgblack@eecs.umich.edu
5346242Sgblack@eecs.umich.edu#endif // __ARCH_ARM_MISCREGS_HH__
535