miscregs.cc revision 13366
17259Sgblack@eecs.umich.edu/* 212669Schuan.zhu@arm.com * Copyright (c) 2010-2013, 2015-2018 ARM Limited 37259Sgblack@eecs.umich.edu * All rights reserved 47259Sgblack@eecs.umich.edu * 57259Sgblack@eecs.umich.edu * The license below extends only to copyright in the software and shall 67259Sgblack@eecs.umich.edu * not be construed as granting a license to any other intellectual 77259Sgblack@eecs.umich.edu * property including but not limited to intellectual property relating 87259Sgblack@eecs.umich.edu * to a hardware implementation of the functionality of the software 97259Sgblack@eecs.umich.edu * licensed hereunder. You may use the software subject to the license 107259Sgblack@eecs.umich.edu * terms below provided that you ensure that this notice is replicated 117259Sgblack@eecs.umich.edu * unmodified and in its entirety in all distributions of the software, 127259Sgblack@eecs.umich.edu * modified or unmodified, in source code or in binary form. 137259Sgblack@eecs.umich.edu * 147259Sgblack@eecs.umich.edu * Redistribution and use in source and binary forms, with or without 157259Sgblack@eecs.umich.edu * modification, are permitted provided that the following conditions are 167259Sgblack@eecs.umich.edu * met: redistributions of source code must retain the above copyright 177259Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer; 187259Sgblack@eecs.umich.edu * redistributions in binary form must reproduce the above copyright 197259Sgblack@eecs.umich.edu * notice, this list of conditions and the following disclaimer in the 207259Sgblack@eecs.umich.edu * documentation and/or other materials provided with the distribution; 217259Sgblack@eecs.umich.edu * neither the name of the copyright holders nor the names of its 227259Sgblack@eecs.umich.edu * contributors may be used to endorse or promote products derived from 237259Sgblack@eecs.umich.edu * this software without specific prior written permission. 247259Sgblack@eecs.umich.edu * 257259Sgblack@eecs.umich.edu * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 267259Sgblack@eecs.umich.edu * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 277259Sgblack@eecs.umich.edu * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 287259Sgblack@eecs.umich.edu * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 297259Sgblack@eecs.umich.edu * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 307259Sgblack@eecs.umich.edu * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 317259Sgblack@eecs.umich.edu * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 327259Sgblack@eecs.umich.edu * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 337259Sgblack@eecs.umich.edu * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 347259Sgblack@eecs.umich.edu * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 357259Sgblack@eecs.umich.edu * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 367259Sgblack@eecs.umich.edu * 377259Sgblack@eecs.umich.edu * Authors: Gabe Black 387405SAli.Saidi@ARM.com * Ali Saidi 3910037SARM gem5 Developers * Giacomo Gabrielli 407259Sgblack@eecs.umich.edu */ 417259Sgblack@eecs.umich.edu 4211793Sbrandon.potter@amd.com#include "arch/arm/miscregs.hh" 4311793Sbrandon.potter@amd.com 4411939Snikos.nikoleris@arm.com#include <tuple> 4511939Snikos.nikoleris@arm.com 467405SAli.Saidi@ARM.com#include "arch/arm/isa.hh" 4712334Sgabeblack@google.com#include "base/logging.hh" 4810037SARM gem5 Developers#include "cpu/thread_context.hh" 4910828SGiacomo.Gabrielli@arm.com#include "sim/full_system.hh" 507259Sgblack@eecs.umich.edu 517259Sgblack@eecs.umich.edunamespace ArmISA 527259Sgblack@eecs.umich.edu{ 537259Sgblack@eecs.umich.edu 547259Sgblack@eecs.umich.eduMiscRegIndex 558868SMatt.Horsnell@arm.comdecodeCP14Reg(unsigned crn, unsigned opc1, unsigned crm, unsigned opc2) 568868SMatt.Horsnell@arm.com{ 578868SMatt.Horsnell@arm.com switch(crn) { 588868SMatt.Horsnell@arm.com case 0: 5910037SARM gem5 Developers switch (opc1) { 608868SMatt.Horsnell@arm.com case 0: 6110037SARM gem5 Developers switch (opc2) { 628868SMatt.Horsnell@arm.com case 0: 6310037SARM gem5 Developers switch (crm) { 6410037SARM gem5 Developers case 0: 6510037SARM gem5 Developers return MISCREG_DBGDIDR; 6610037SARM gem5 Developers case 1: 6710037SARM gem5 Developers return MISCREG_DBGDSCRint; 6810037SARM gem5 Developers } 6910037SARM gem5 Developers break; 708868SMatt.Horsnell@arm.com } 7110037SARM gem5 Developers break; 7210037SARM gem5 Developers case 7: 7310037SARM gem5 Developers switch (opc2) { 7410037SARM gem5 Developers case 0: 7510037SARM gem5 Developers switch (crm) { 7610037SARM gem5 Developers case 0: 7710037SARM gem5 Developers return MISCREG_JIDR; 7810037SARM gem5 Developers } 7910037SARM gem5 Developers break; 8010037SARM gem5 Developers } 8110037SARM gem5 Developers break; 829959Schander.sudanthi@arm.com } 8310037SARM gem5 Developers break; 849959Schander.sudanthi@arm.com case 1: 859959Schander.sudanthi@arm.com switch (opc1) { 869959Schander.sudanthi@arm.com case 6: 879959Schander.sudanthi@arm.com switch (crm) { 889959Schander.sudanthi@arm.com case 0: 899959Schander.sudanthi@arm.com switch (opc2) { 909959Schander.sudanthi@arm.com case 0: 919959Schander.sudanthi@arm.com return MISCREG_TEEHBR; 929959Schander.sudanthi@arm.com } 9310037SARM gem5 Developers break; 949959Schander.sudanthi@arm.com } 9510037SARM gem5 Developers break; 9610037SARM gem5 Developers case 7: 9710037SARM gem5 Developers switch (crm) { 9810037SARM gem5 Developers case 0: 9910037SARM gem5 Developers switch (opc2) { 10010037SARM gem5 Developers case 0: 10110037SARM gem5 Developers return MISCREG_JOSCR; 10210037SARM gem5 Developers } 10310037SARM gem5 Developers break; 10410037SARM gem5 Developers } 10510037SARM gem5 Developers break; 1068868SMatt.Horsnell@arm.com } 10710037SARM gem5 Developers break; 10810037SARM gem5 Developers case 2: 10910037SARM gem5 Developers switch (opc1) { 11010037SARM gem5 Developers case 7: 11110037SARM gem5 Developers switch (crm) { 11210037SARM gem5 Developers case 0: 11310037SARM gem5 Developers switch (opc2) { 11410037SARM gem5 Developers case 0: 11510037SARM gem5 Developers return MISCREG_JMCR; 11610037SARM gem5 Developers } 11710037SARM gem5 Developers break; 11810037SARM gem5 Developers } 11910037SARM gem5 Developers break; 12010037SARM gem5 Developers } 12110037SARM gem5 Developers break; 1228868SMatt.Horsnell@arm.com } 12310037SARM gem5 Developers // If we get here then it must be a register that we haven't implemented 12410037SARM gem5 Developers warn("CP14 unimplemented crn[%d], opc1[%d], crm[%d], opc2[%d]", 12510037SARM gem5 Developers crn, opc1, crm, opc2); 12610037SARM gem5 Developers return MISCREG_CP14_UNIMPL; 12710037SARM gem5 Developers} 1288868SMatt.Horsnell@arm.com 12910037SARM gem5 Developersusing namespace std; 13010037SARM gem5 Developers 1318868SMatt.Horsnell@arm.comMiscRegIndex 1327259Sgblack@eecs.umich.edudecodeCP15Reg(unsigned crn, unsigned opc1, unsigned crm, unsigned opc2) 1337259Sgblack@eecs.umich.edu{ 1347259Sgblack@eecs.umich.edu switch (crn) { 1357259Sgblack@eecs.umich.edu case 0: 1367259Sgblack@eecs.umich.edu switch (opc1) { 1377259Sgblack@eecs.umich.edu case 0: 1387259Sgblack@eecs.umich.edu switch (crm) { 1397259Sgblack@eecs.umich.edu case 0: 1407259Sgblack@eecs.umich.edu switch (opc2) { 1417259Sgblack@eecs.umich.edu case 1: 1427259Sgblack@eecs.umich.edu return MISCREG_CTR; 1437259Sgblack@eecs.umich.edu case 2: 1447259Sgblack@eecs.umich.edu return MISCREG_TCMTR; 1457351Sgblack@eecs.umich.edu case 3: 1467351Sgblack@eecs.umich.edu return MISCREG_TLBTR; 1477259Sgblack@eecs.umich.edu case 5: 1487259Sgblack@eecs.umich.edu return MISCREG_MPIDR; 14910037SARM gem5 Developers case 6: 15010037SARM gem5 Developers return MISCREG_REVIDR; 1517259Sgblack@eecs.umich.edu default: 1527259Sgblack@eecs.umich.edu return MISCREG_MIDR; 1537259Sgblack@eecs.umich.edu } 1547259Sgblack@eecs.umich.edu break; 1557259Sgblack@eecs.umich.edu case 1: 1567259Sgblack@eecs.umich.edu switch (opc2) { 1577259Sgblack@eecs.umich.edu case 0: 1587259Sgblack@eecs.umich.edu return MISCREG_ID_PFR0; 1597259Sgblack@eecs.umich.edu case 1: 1607259Sgblack@eecs.umich.edu return MISCREG_ID_PFR1; 1617259Sgblack@eecs.umich.edu case 2: 1627259Sgblack@eecs.umich.edu return MISCREG_ID_DFR0; 1637259Sgblack@eecs.umich.edu case 3: 1647259Sgblack@eecs.umich.edu return MISCREG_ID_AFR0; 1657259Sgblack@eecs.umich.edu case 4: 1667259Sgblack@eecs.umich.edu return MISCREG_ID_MMFR0; 1677259Sgblack@eecs.umich.edu case 5: 1687259Sgblack@eecs.umich.edu return MISCREG_ID_MMFR1; 1697259Sgblack@eecs.umich.edu case 6: 1707259Sgblack@eecs.umich.edu return MISCREG_ID_MMFR2; 1717259Sgblack@eecs.umich.edu case 7: 1727259Sgblack@eecs.umich.edu return MISCREG_ID_MMFR3; 1737259Sgblack@eecs.umich.edu } 1747259Sgblack@eecs.umich.edu break; 1757259Sgblack@eecs.umich.edu case 2: 1767259Sgblack@eecs.umich.edu switch (opc2) { 1777259Sgblack@eecs.umich.edu case 0: 1787259Sgblack@eecs.umich.edu return MISCREG_ID_ISAR0; 1797259Sgblack@eecs.umich.edu case 1: 1807259Sgblack@eecs.umich.edu return MISCREG_ID_ISAR1; 1817259Sgblack@eecs.umich.edu case 2: 1827259Sgblack@eecs.umich.edu return MISCREG_ID_ISAR2; 1837259Sgblack@eecs.umich.edu case 3: 1847259Sgblack@eecs.umich.edu return MISCREG_ID_ISAR3; 1857259Sgblack@eecs.umich.edu case 4: 1867259Sgblack@eecs.umich.edu return MISCREG_ID_ISAR4; 1877259Sgblack@eecs.umich.edu case 5: 1887259Sgblack@eecs.umich.edu return MISCREG_ID_ISAR5; 1897259Sgblack@eecs.umich.edu case 6: 1907259Sgblack@eecs.umich.edu case 7: 1917259Sgblack@eecs.umich.edu return MISCREG_RAZ; // read as zero 1927259Sgblack@eecs.umich.edu } 1937259Sgblack@eecs.umich.edu break; 1947259Sgblack@eecs.umich.edu default: 1957259Sgblack@eecs.umich.edu return MISCREG_RAZ; // read as zero 1967259Sgblack@eecs.umich.edu } 1977259Sgblack@eecs.umich.edu break; 1987259Sgblack@eecs.umich.edu case 1: 1997259Sgblack@eecs.umich.edu if (crm == 0) { 2007259Sgblack@eecs.umich.edu switch (opc2) { 2017259Sgblack@eecs.umich.edu case 0: 2027259Sgblack@eecs.umich.edu return MISCREG_CCSIDR; 2037259Sgblack@eecs.umich.edu case 1: 2047259Sgblack@eecs.umich.edu return MISCREG_CLIDR; 2057259Sgblack@eecs.umich.edu case 7: 2067259Sgblack@eecs.umich.edu return MISCREG_AIDR; 2077259Sgblack@eecs.umich.edu } 2087259Sgblack@eecs.umich.edu } 2097259Sgblack@eecs.umich.edu break; 2107259Sgblack@eecs.umich.edu case 2: 2117259Sgblack@eecs.umich.edu if (crm == 0 && opc2 == 0) { 2127259Sgblack@eecs.umich.edu return MISCREG_CSSELR; 2137259Sgblack@eecs.umich.edu } 2147259Sgblack@eecs.umich.edu break; 21510037SARM gem5 Developers case 4: 21610037SARM gem5 Developers if (crm == 0) { 21710037SARM gem5 Developers if (opc2 == 0) 21810037SARM gem5 Developers return MISCREG_VPIDR; 21910037SARM gem5 Developers else if (opc2 == 5) 22010037SARM gem5 Developers return MISCREG_VMPIDR; 22110037SARM gem5 Developers } 22210037SARM gem5 Developers break; 2237259Sgblack@eecs.umich.edu } 2247259Sgblack@eecs.umich.edu break; 2257259Sgblack@eecs.umich.edu case 1: 2267351Sgblack@eecs.umich.edu if (opc1 == 0) { 2277351Sgblack@eecs.umich.edu if (crm == 0) { 2287351Sgblack@eecs.umich.edu switch (opc2) { 2297351Sgblack@eecs.umich.edu case 0: 2307351Sgblack@eecs.umich.edu return MISCREG_SCTLR; 2317351Sgblack@eecs.umich.edu case 1: 2327351Sgblack@eecs.umich.edu return MISCREG_ACTLR; 2337351Sgblack@eecs.umich.edu case 0x2: 2347351Sgblack@eecs.umich.edu return MISCREG_CPACR; 2357351Sgblack@eecs.umich.edu } 2367351Sgblack@eecs.umich.edu } else if (crm == 1) { 2377351Sgblack@eecs.umich.edu switch (opc2) { 2387351Sgblack@eecs.umich.edu case 0: 2397351Sgblack@eecs.umich.edu return MISCREG_SCR; 2407351Sgblack@eecs.umich.edu case 1: 2417351Sgblack@eecs.umich.edu return MISCREG_SDER; 2427351Sgblack@eecs.umich.edu case 2: 2437351Sgblack@eecs.umich.edu return MISCREG_NSACR; 2447351Sgblack@eecs.umich.edu } 2457351Sgblack@eecs.umich.edu } 24610037SARM gem5 Developers } else if (opc1 == 4) { 24710037SARM gem5 Developers if (crm == 0) { 24810037SARM gem5 Developers if (opc2 == 0) 24910037SARM gem5 Developers return MISCREG_HSCTLR; 25010037SARM gem5 Developers else if (opc2 == 1) 25110037SARM gem5 Developers return MISCREG_HACTLR; 25210037SARM gem5 Developers } else if (crm == 1) { 25310037SARM gem5 Developers switch (opc2) { 25410037SARM gem5 Developers case 0: 25510037SARM gem5 Developers return MISCREG_HCR; 25610037SARM gem5 Developers case 1: 25710037SARM gem5 Developers return MISCREG_HDCR; 25810037SARM gem5 Developers case 2: 25910037SARM gem5 Developers return MISCREG_HCPTR; 26010037SARM gem5 Developers case 3: 26110037SARM gem5 Developers return MISCREG_HSTR; 26210037SARM gem5 Developers case 7: 26310037SARM gem5 Developers return MISCREG_HACR; 26410037SARM gem5 Developers } 26510037SARM gem5 Developers } 2667351Sgblack@eecs.umich.edu } 2677351Sgblack@eecs.umich.edu break; 2687351Sgblack@eecs.umich.edu case 2: 2697406SAli.Saidi@ARM.com if (opc1 == 0 && crm == 0) { 2707259Sgblack@eecs.umich.edu switch (opc2) { 2717259Sgblack@eecs.umich.edu case 0: 2727351Sgblack@eecs.umich.edu return MISCREG_TTBR0; 2737259Sgblack@eecs.umich.edu case 1: 2747351Sgblack@eecs.umich.edu return MISCREG_TTBR1; 2757351Sgblack@eecs.umich.edu case 2: 2767351Sgblack@eecs.umich.edu return MISCREG_TTBCR; 2777259Sgblack@eecs.umich.edu } 27810037SARM gem5 Developers } else if (opc1 == 4) { 27910037SARM gem5 Developers if (crm == 0 && opc2 == 2) 28010037SARM gem5 Developers return MISCREG_HTCR; 28110037SARM gem5 Developers else if (crm == 1 && opc2 == 2) 28210037SARM gem5 Developers return MISCREG_VTCR; 2837259Sgblack@eecs.umich.edu } 2847259Sgblack@eecs.umich.edu break; 2857351Sgblack@eecs.umich.edu case 3: 2867351Sgblack@eecs.umich.edu if (opc1 == 0 && crm == 0 && opc2 == 0) { 2877351Sgblack@eecs.umich.edu return MISCREG_DACR; 2887351Sgblack@eecs.umich.edu } 2897351Sgblack@eecs.umich.edu break; 2907259Sgblack@eecs.umich.edu case 5: 2917259Sgblack@eecs.umich.edu if (opc1 == 0) { 2927259Sgblack@eecs.umich.edu if (crm == 0) { 2937259Sgblack@eecs.umich.edu if (opc2 == 0) { 2947259Sgblack@eecs.umich.edu return MISCREG_DFSR; 2957259Sgblack@eecs.umich.edu } else if (opc2 == 1) { 2967259Sgblack@eecs.umich.edu return MISCREG_IFSR; 2977259Sgblack@eecs.umich.edu } 2987259Sgblack@eecs.umich.edu } else if (crm == 1) { 2997259Sgblack@eecs.umich.edu if (opc2 == 0) { 3007259Sgblack@eecs.umich.edu return MISCREG_ADFSR; 3017259Sgblack@eecs.umich.edu } else if (opc2 == 1) { 3027259Sgblack@eecs.umich.edu return MISCREG_AIFSR; 3037259Sgblack@eecs.umich.edu } 3047259Sgblack@eecs.umich.edu } 30510037SARM gem5 Developers } else if (opc1 == 4) { 30610037SARM gem5 Developers if (crm == 1) { 30710037SARM gem5 Developers if (opc2 == 0) 30810037SARM gem5 Developers return MISCREG_HADFSR; 30910037SARM gem5 Developers else if (opc2 == 1) 31010037SARM gem5 Developers return MISCREG_HAIFSR; 31110037SARM gem5 Developers } else if (crm == 2 && opc2 == 0) { 31210037SARM gem5 Developers return MISCREG_HSR; 31310037SARM gem5 Developers } 3147259Sgblack@eecs.umich.edu } 3157259Sgblack@eecs.umich.edu break; 3167259Sgblack@eecs.umich.edu case 6: 3177351Sgblack@eecs.umich.edu if (opc1 == 0 && crm == 0) { 3187351Sgblack@eecs.umich.edu switch (opc2) { 3197259Sgblack@eecs.umich.edu case 0: 3207351Sgblack@eecs.umich.edu return MISCREG_DFAR; 3217259Sgblack@eecs.umich.edu case 2: 3227351Sgblack@eecs.umich.edu return MISCREG_IFAR; 3237259Sgblack@eecs.umich.edu } 32410037SARM gem5 Developers } else if (opc1 == 4 && crm == 0) { 32510037SARM gem5 Developers switch (opc2) { 32610037SARM gem5 Developers case 0: 32710037SARM gem5 Developers return MISCREG_HDFAR; 32810037SARM gem5 Developers case 2: 32910037SARM gem5 Developers return MISCREG_HIFAR; 33010037SARM gem5 Developers case 4: 33110037SARM gem5 Developers return MISCREG_HPFAR; 33210037SARM gem5 Developers } 3337259Sgblack@eecs.umich.edu } 3347259Sgblack@eecs.umich.edu break; 3357259Sgblack@eecs.umich.edu case 7: 3367259Sgblack@eecs.umich.edu if (opc1 == 0) { 3377259Sgblack@eecs.umich.edu switch (crm) { 3387259Sgblack@eecs.umich.edu case 0: 3397259Sgblack@eecs.umich.edu if (opc2 == 4) { 3407259Sgblack@eecs.umich.edu return MISCREG_NOP; 3417259Sgblack@eecs.umich.edu } 3427259Sgblack@eecs.umich.edu break; 3437259Sgblack@eecs.umich.edu case 1: 3447259Sgblack@eecs.umich.edu switch (opc2) { 3457259Sgblack@eecs.umich.edu case 0: 3467259Sgblack@eecs.umich.edu return MISCREG_ICIALLUIS; 3477259Sgblack@eecs.umich.edu case 6: 3487259Sgblack@eecs.umich.edu return MISCREG_BPIALLIS; 3497259Sgblack@eecs.umich.edu } 3507259Sgblack@eecs.umich.edu break; 3517351Sgblack@eecs.umich.edu case 4: 3527351Sgblack@eecs.umich.edu if (opc2 == 0) { 3537351Sgblack@eecs.umich.edu return MISCREG_PAR; 3547351Sgblack@eecs.umich.edu } 3557351Sgblack@eecs.umich.edu break; 3567259Sgblack@eecs.umich.edu case 5: 3577259Sgblack@eecs.umich.edu switch (opc2) { 3587259Sgblack@eecs.umich.edu case 0: 3597259Sgblack@eecs.umich.edu return MISCREG_ICIALLU; 3607259Sgblack@eecs.umich.edu case 1: 3617259Sgblack@eecs.umich.edu return MISCREG_ICIMVAU; 3627259Sgblack@eecs.umich.edu case 4: 3637259Sgblack@eecs.umich.edu return MISCREG_CP15ISB; 3647259Sgblack@eecs.umich.edu case 6: 3657259Sgblack@eecs.umich.edu return MISCREG_BPIALL; 3667259Sgblack@eecs.umich.edu case 7: 3677259Sgblack@eecs.umich.edu return MISCREG_BPIMVA; 3687259Sgblack@eecs.umich.edu } 3697259Sgblack@eecs.umich.edu break; 3707259Sgblack@eecs.umich.edu case 6: 3717259Sgblack@eecs.umich.edu if (opc2 == 1) { 3727259Sgblack@eecs.umich.edu return MISCREG_DCIMVAC; 3737259Sgblack@eecs.umich.edu } else if (opc2 == 2) { 3747259Sgblack@eecs.umich.edu return MISCREG_DCISW; 3757259Sgblack@eecs.umich.edu } 3767259Sgblack@eecs.umich.edu break; 3777351Sgblack@eecs.umich.edu case 8: 3787351Sgblack@eecs.umich.edu switch (opc2) { 3797351Sgblack@eecs.umich.edu case 0: 38010037SARM gem5 Developers return MISCREG_ATS1CPR; 3817351Sgblack@eecs.umich.edu case 1: 38210037SARM gem5 Developers return MISCREG_ATS1CPW; 3837351Sgblack@eecs.umich.edu case 2: 38410037SARM gem5 Developers return MISCREG_ATS1CUR; 3857351Sgblack@eecs.umich.edu case 3: 38610037SARM gem5 Developers return MISCREG_ATS1CUW; 3877351Sgblack@eecs.umich.edu case 4: 38810037SARM gem5 Developers return MISCREG_ATS12NSOPR; 3897351Sgblack@eecs.umich.edu case 5: 39010037SARM gem5 Developers return MISCREG_ATS12NSOPW; 3917351Sgblack@eecs.umich.edu case 6: 39210037SARM gem5 Developers return MISCREG_ATS12NSOUR; 3937351Sgblack@eecs.umich.edu case 7: 39410037SARM gem5 Developers return MISCREG_ATS12NSOUW; 3957351Sgblack@eecs.umich.edu } 3967351Sgblack@eecs.umich.edu break; 3977259Sgblack@eecs.umich.edu case 10: 3987259Sgblack@eecs.umich.edu switch (opc2) { 3997259Sgblack@eecs.umich.edu case 1: 4007259Sgblack@eecs.umich.edu return MISCREG_DCCMVAC; 4017259Sgblack@eecs.umich.edu case 2: 40210037SARM gem5 Developers return MISCREG_DCCSW; 4037259Sgblack@eecs.umich.edu case 4: 4047259Sgblack@eecs.umich.edu return MISCREG_CP15DSB; 4057259Sgblack@eecs.umich.edu case 5: 4067259Sgblack@eecs.umich.edu return MISCREG_CP15DMB; 4077259Sgblack@eecs.umich.edu } 4087259Sgblack@eecs.umich.edu break; 4097259Sgblack@eecs.umich.edu case 11: 4107259Sgblack@eecs.umich.edu if (opc2 == 1) { 4117259Sgblack@eecs.umich.edu return MISCREG_DCCMVAU; 4127259Sgblack@eecs.umich.edu } 4137259Sgblack@eecs.umich.edu break; 4147259Sgblack@eecs.umich.edu case 13: 4157259Sgblack@eecs.umich.edu if (opc2 == 1) { 4167259Sgblack@eecs.umich.edu return MISCREG_NOP; 4177259Sgblack@eecs.umich.edu } 4187259Sgblack@eecs.umich.edu break; 4197259Sgblack@eecs.umich.edu case 14: 4207259Sgblack@eecs.umich.edu if (opc2 == 1) { 4217259Sgblack@eecs.umich.edu return MISCREG_DCCIMVAC; 4227259Sgblack@eecs.umich.edu } else if (opc2 == 2) { 4237259Sgblack@eecs.umich.edu return MISCREG_DCCISW; 4247259Sgblack@eecs.umich.edu } 4257259Sgblack@eecs.umich.edu break; 4267259Sgblack@eecs.umich.edu } 42710037SARM gem5 Developers } else if (opc1 == 4 && crm == 8) { 42810037SARM gem5 Developers if (opc2 == 0) 42910037SARM gem5 Developers return MISCREG_ATS1HR; 43010037SARM gem5 Developers else if (opc2 == 1) 43110037SARM gem5 Developers return MISCREG_ATS1HW; 4327259Sgblack@eecs.umich.edu } 4337259Sgblack@eecs.umich.edu break; 4347351Sgblack@eecs.umich.edu case 8: 4357351Sgblack@eecs.umich.edu if (opc1 == 0) { 4367351Sgblack@eecs.umich.edu switch (crm) { 4377351Sgblack@eecs.umich.edu case 3: 4387351Sgblack@eecs.umich.edu switch (opc2) { 4397351Sgblack@eecs.umich.edu case 0: 4407351Sgblack@eecs.umich.edu return MISCREG_TLBIALLIS; 4417351Sgblack@eecs.umich.edu case 1: 4427351Sgblack@eecs.umich.edu return MISCREG_TLBIMVAIS; 4437351Sgblack@eecs.umich.edu case 2: 4447351Sgblack@eecs.umich.edu return MISCREG_TLBIASIDIS; 4457351Sgblack@eecs.umich.edu case 3: 4467351Sgblack@eecs.umich.edu return MISCREG_TLBIMVAAIS; 44712576Sgiacomo.travaglini@arm.com case 5: 44812576Sgiacomo.travaglini@arm.com return MISCREG_TLBIMVALIS; 44912576Sgiacomo.travaglini@arm.com case 7: 45012576Sgiacomo.travaglini@arm.com return MISCREG_TLBIMVAALIS; 4517351Sgblack@eecs.umich.edu } 4527351Sgblack@eecs.umich.edu break; 4537351Sgblack@eecs.umich.edu case 5: 4547351Sgblack@eecs.umich.edu switch (opc2) { 4557351Sgblack@eecs.umich.edu case 0: 4567351Sgblack@eecs.umich.edu return MISCREG_ITLBIALL; 4577351Sgblack@eecs.umich.edu case 1: 4587351Sgblack@eecs.umich.edu return MISCREG_ITLBIMVA; 4597351Sgblack@eecs.umich.edu case 2: 4607351Sgblack@eecs.umich.edu return MISCREG_ITLBIASID; 4617351Sgblack@eecs.umich.edu } 4627351Sgblack@eecs.umich.edu break; 4637351Sgblack@eecs.umich.edu case 6: 4647351Sgblack@eecs.umich.edu switch (opc2) { 4657351Sgblack@eecs.umich.edu case 0: 4667351Sgblack@eecs.umich.edu return MISCREG_DTLBIALL; 4677351Sgblack@eecs.umich.edu case 1: 4687351Sgblack@eecs.umich.edu return MISCREG_DTLBIMVA; 4697351Sgblack@eecs.umich.edu case 2: 4707351Sgblack@eecs.umich.edu return MISCREG_DTLBIASID; 4717351Sgblack@eecs.umich.edu } 4727351Sgblack@eecs.umich.edu break; 4737351Sgblack@eecs.umich.edu case 7: 4747351Sgblack@eecs.umich.edu switch (opc2) { 4757351Sgblack@eecs.umich.edu case 0: 4767351Sgblack@eecs.umich.edu return MISCREG_TLBIALL; 4777351Sgblack@eecs.umich.edu case 1: 4787351Sgblack@eecs.umich.edu return MISCREG_TLBIMVA; 4797351Sgblack@eecs.umich.edu case 2: 4807351Sgblack@eecs.umich.edu return MISCREG_TLBIASID; 4817351Sgblack@eecs.umich.edu case 3: 4827351Sgblack@eecs.umich.edu return MISCREG_TLBIMVAA; 48312576Sgiacomo.travaglini@arm.com case 5: 48412576Sgiacomo.travaglini@arm.com return MISCREG_TLBIMVAL; 48512576Sgiacomo.travaglini@arm.com case 7: 48612576Sgiacomo.travaglini@arm.com return MISCREG_TLBIMVAAL; 4877351Sgblack@eecs.umich.edu } 4887351Sgblack@eecs.umich.edu break; 4897351Sgblack@eecs.umich.edu } 49010037SARM gem5 Developers } else if (opc1 == 4) { 49112577Sgiacomo.travaglini@arm.com if (crm == 0) { 49212577Sgiacomo.travaglini@arm.com switch (opc2) { 49312577Sgiacomo.travaglini@arm.com case 1: 49412577Sgiacomo.travaglini@arm.com return MISCREG_TLBIIPAS2IS; 49512577Sgiacomo.travaglini@arm.com case 5: 49612577Sgiacomo.travaglini@arm.com return MISCREG_TLBIIPAS2LIS; 49712577Sgiacomo.travaglini@arm.com } 49812577Sgiacomo.travaglini@arm.com } else if (crm == 3) { 49910037SARM gem5 Developers switch (opc2) { 50010037SARM gem5 Developers case 0: 50110037SARM gem5 Developers return MISCREG_TLBIALLHIS; 50210037SARM gem5 Developers case 1: 50310037SARM gem5 Developers return MISCREG_TLBIMVAHIS; 50410037SARM gem5 Developers case 4: 50510037SARM gem5 Developers return MISCREG_TLBIALLNSNHIS; 50612576Sgiacomo.travaglini@arm.com case 5: 50712576Sgiacomo.travaglini@arm.com return MISCREG_TLBIMVALHIS; 50810037SARM gem5 Developers } 50912577Sgiacomo.travaglini@arm.com } else if (crm == 4) { 51012577Sgiacomo.travaglini@arm.com switch (opc2) { 51112577Sgiacomo.travaglini@arm.com case 1: 51212577Sgiacomo.travaglini@arm.com return MISCREG_TLBIIPAS2; 51312577Sgiacomo.travaglini@arm.com case 5: 51412577Sgiacomo.travaglini@arm.com return MISCREG_TLBIIPAS2L; 51512577Sgiacomo.travaglini@arm.com } 51610037SARM gem5 Developers } else if (crm == 7) { 51710037SARM gem5 Developers switch (opc2) { 51810037SARM gem5 Developers case 0: 51910037SARM gem5 Developers return MISCREG_TLBIALLH; 52010037SARM gem5 Developers case 1: 52110037SARM gem5 Developers return MISCREG_TLBIMVAH; 52210037SARM gem5 Developers case 4: 52310037SARM gem5 Developers return MISCREG_TLBIALLNSNH; 52412576Sgiacomo.travaglini@arm.com case 5: 52512576Sgiacomo.travaglini@arm.com return MISCREG_TLBIMVALH; 52610037SARM gem5 Developers } 52710037SARM gem5 Developers } 5287351Sgblack@eecs.umich.edu } 5297351Sgblack@eecs.umich.edu break; 5307259Sgblack@eecs.umich.edu case 9: 53112530Sgiacomo.travaglini@arm.com // Every cop register with CRn = 9 and CRm in 53212530Sgiacomo.travaglini@arm.com // {0-2}, {5-8} is implementation defined regardless 53312530Sgiacomo.travaglini@arm.com // of opc1 and opc2. 53412530Sgiacomo.travaglini@arm.com switch (crm) { 53512530Sgiacomo.travaglini@arm.com case 0: 53612530Sgiacomo.travaglini@arm.com case 1: 53712530Sgiacomo.travaglini@arm.com case 2: 53812530Sgiacomo.travaglini@arm.com case 5: 53912530Sgiacomo.travaglini@arm.com case 6: 54012530Sgiacomo.travaglini@arm.com case 7: 54112530Sgiacomo.travaglini@arm.com case 8: 54212530Sgiacomo.travaglini@arm.com return MISCREG_IMPDEF_UNIMPL; 54312530Sgiacomo.travaglini@arm.com } 5447583SAli.Saidi@arm.com if (opc1 == 0) { 5457259Sgblack@eecs.umich.edu switch (crm) { 5467259Sgblack@eecs.umich.edu case 12: 5477583SAli.Saidi@arm.com switch (opc2) { 5487583SAli.Saidi@arm.com case 0: 5497583SAli.Saidi@arm.com return MISCREG_PMCR; 5507583SAli.Saidi@arm.com case 1: 5517583SAli.Saidi@arm.com return MISCREG_PMCNTENSET; 5527583SAli.Saidi@arm.com case 2: 5537583SAli.Saidi@arm.com return MISCREG_PMCNTENCLR; 5547583SAli.Saidi@arm.com case 3: 5557583SAli.Saidi@arm.com return MISCREG_PMOVSR; 5567583SAli.Saidi@arm.com case 4: 5577583SAli.Saidi@arm.com return MISCREG_PMSWINC; 5587583SAli.Saidi@arm.com case 5: 5597583SAli.Saidi@arm.com return MISCREG_PMSELR; 5607583SAli.Saidi@arm.com case 6: 5617583SAli.Saidi@arm.com return MISCREG_PMCEID0; 5627583SAli.Saidi@arm.com case 7: 5637583SAli.Saidi@arm.com return MISCREG_PMCEID1; 5647583SAli.Saidi@arm.com } 5658988SAli.Saidi@ARM.com break; 5667259Sgblack@eecs.umich.edu case 13: 5677583SAli.Saidi@arm.com switch (opc2) { 5687583SAli.Saidi@arm.com case 0: 5697583SAli.Saidi@arm.com return MISCREG_PMCCNTR; 5707583SAli.Saidi@arm.com case 1: 57110037SARM gem5 Developers // Selector is PMSELR.SEL 57210037SARM gem5 Developers return MISCREG_PMXEVTYPER_PMCCFILTR; 5737583SAli.Saidi@arm.com case 2: 5747583SAli.Saidi@arm.com return MISCREG_PMXEVCNTR; 5757583SAli.Saidi@arm.com } 5768988SAli.Saidi@ARM.com break; 5777259Sgblack@eecs.umich.edu case 14: 5787583SAli.Saidi@arm.com switch (opc2) { 5797583SAli.Saidi@arm.com case 0: 5807583SAli.Saidi@arm.com return MISCREG_PMUSERENR; 5817583SAli.Saidi@arm.com case 1: 5827583SAli.Saidi@arm.com return MISCREG_PMINTENSET; 5837583SAli.Saidi@arm.com case 2: 5847583SAli.Saidi@arm.com return MISCREG_PMINTENCLR; 58510037SARM gem5 Developers case 3: 58610037SARM gem5 Developers return MISCREG_PMOVSSET; 5877583SAli.Saidi@arm.com } 5888988SAli.Saidi@ARM.com break; 5897259Sgblack@eecs.umich.edu } 5908058SAli.Saidi@ARM.com } else if (opc1 == 1) { 5918549Sdaniel.johnson@arm.com switch (crm) { 5928549Sdaniel.johnson@arm.com case 0: 5938549Sdaniel.johnson@arm.com switch (opc2) { 5948549Sdaniel.johnson@arm.com case 2: // L2CTLR, L2 Control Register 5958549Sdaniel.johnson@arm.com return MISCREG_L2CTLR; 59610037SARM gem5 Developers case 3: 59710037SARM gem5 Developers return MISCREG_L2ECTLR; 5988549Sdaniel.johnson@arm.com } 5998988SAli.Saidi@ARM.com break; 60010037SARM gem5 Developers break; 6018549Sdaniel.johnson@arm.com } 6027259Sgblack@eecs.umich.edu } 6037259Sgblack@eecs.umich.edu break; 6047351Sgblack@eecs.umich.edu case 10: 6057351Sgblack@eecs.umich.edu if (opc1 == 0) { 6067351Sgblack@eecs.umich.edu // crm 0, 1, 4, and 8, with op2 0 - 7, reserved for TLB lockdown 60712530Sgiacomo.travaglini@arm.com if (crm < 2) { 60812530Sgiacomo.travaglini@arm.com return MISCREG_IMPDEF_UNIMPL; 60912530Sgiacomo.travaglini@arm.com } else if (crm == 2) { // TEX Remap Registers 6107351Sgblack@eecs.umich.edu if (opc2 == 0) { 61110037SARM gem5 Developers // Selector is TTBCR.EAE 61210037SARM gem5 Developers return MISCREG_PRRR_MAIR0; 6137351Sgblack@eecs.umich.edu } else if (opc2 == 1) { 61410037SARM gem5 Developers // Selector is TTBCR.EAE 61510037SARM gem5 Developers return MISCREG_NMRR_MAIR1; 6167351Sgblack@eecs.umich.edu } 61710037SARM gem5 Developers } else if (crm == 3) { 61810037SARM gem5 Developers if (opc2 == 0) { 61910037SARM gem5 Developers return MISCREG_AMAIR0; 62010037SARM gem5 Developers } else if (opc2 == 1) { 62110037SARM gem5 Developers return MISCREG_AMAIR1; 62210037SARM gem5 Developers } 62310037SARM gem5 Developers } 62410037SARM gem5 Developers } else if (opc1 == 4) { 62510037SARM gem5 Developers // crm 0, 1, 4, and 8, with op2 0 - 7, reserved for TLB lockdown 62610037SARM gem5 Developers if (crm == 2) { 62710037SARM gem5 Developers if (opc2 == 0) 62810037SARM gem5 Developers return MISCREG_HMAIR0; 62910037SARM gem5 Developers else if (opc2 == 1) 63010037SARM gem5 Developers return MISCREG_HMAIR1; 63110037SARM gem5 Developers } else if (crm == 3) { 63210037SARM gem5 Developers if (opc2 == 0) 63310037SARM gem5 Developers return MISCREG_HAMAIR0; 63410037SARM gem5 Developers else if (opc2 == 1) 63510037SARM gem5 Developers return MISCREG_HAMAIR1; 6367351Sgblack@eecs.umich.edu } 6377351Sgblack@eecs.umich.edu } 6387351Sgblack@eecs.umich.edu break; 6397259Sgblack@eecs.umich.edu case 11: 6408737Skoansin.tan@gmail.com if (opc1 <=7) { 6417259Sgblack@eecs.umich.edu switch (crm) { 6427259Sgblack@eecs.umich.edu case 0: 6437259Sgblack@eecs.umich.edu case 1: 6447259Sgblack@eecs.umich.edu case 2: 6457259Sgblack@eecs.umich.edu case 3: 6467259Sgblack@eecs.umich.edu case 4: 6477259Sgblack@eecs.umich.edu case 5: 6487259Sgblack@eecs.umich.edu case 6: 6497259Sgblack@eecs.umich.edu case 7: 6507259Sgblack@eecs.umich.edu case 8: 6517259Sgblack@eecs.umich.edu case 15: 6527259Sgblack@eecs.umich.edu // Reserved for DMA operations for TCM access 65312530Sgiacomo.travaglini@arm.com return MISCREG_IMPDEF_UNIMPL; 65412530Sgiacomo.travaglini@arm.com default: 6557259Sgblack@eecs.umich.edu break; 6567259Sgblack@eecs.umich.edu } 6577259Sgblack@eecs.umich.edu } 6587259Sgblack@eecs.umich.edu break; 6597351Sgblack@eecs.umich.edu case 12: 6607351Sgblack@eecs.umich.edu if (opc1 == 0) { 6617351Sgblack@eecs.umich.edu if (crm == 0) { 6627351Sgblack@eecs.umich.edu if (opc2 == 0) { 6637351Sgblack@eecs.umich.edu return MISCREG_VBAR; 6647351Sgblack@eecs.umich.edu } else if (opc2 == 1) { 6657351Sgblack@eecs.umich.edu return MISCREG_MVBAR; 6667351Sgblack@eecs.umich.edu } 6677351Sgblack@eecs.umich.edu } else if (crm == 1) { 6687351Sgblack@eecs.umich.edu if (opc2 == 0) { 6697351Sgblack@eecs.umich.edu return MISCREG_ISR; 6707351Sgblack@eecs.umich.edu } 6717351Sgblack@eecs.umich.edu } 67210037SARM gem5 Developers } else if (opc1 == 4) { 67310037SARM gem5 Developers if (crm == 0 && opc2 == 0) 67410037SARM gem5 Developers return MISCREG_HVBAR; 6757351Sgblack@eecs.umich.edu } 6767351Sgblack@eecs.umich.edu break; 6777259Sgblack@eecs.umich.edu case 13: 6787259Sgblack@eecs.umich.edu if (opc1 == 0) { 6797259Sgblack@eecs.umich.edu if (crm == 0) { 6807406SAli.Saidi@ARM.com switch (opc2) { 6817351Sgblack@eecs.umich.edu case 0: 68210037SARM gem5 Developers return MISCREG_FCSEIDR; 6837259Sgblack@eecs.umich.edu case 1: 6847259Sgblack@eecs.umich.edu return MISCREG_CONTEXTIDR; 6857259Sgblack@eecs.umich.edu case 2: 6867259Sgblack@eecs.umich.edu return MISCREG_TPIDRURW; 6877259Sgblack@eecs.umich.edu case 3: 6887259Sgblack@eecs.umich.edu return MISCREG_TPIDRURO; 6897259Sgblack@eecs.umich.edu case 4: 6907259Sgblack@eecs.umich.edu return MISCREG_TPIDRPRW; 6917259Sgblack@eecs.umich.edu } 6927259Sgblack@eecs.umich.edu } 69310037SARM gem5 Developers } else if (opc1 == 4) { 69410037SARM gem5 Developers if (crm == 0 && opc2 == 2) 69510037SARM gem5 Developers return MISCREG_HTPIDR; 69610037SARM gem5 Developers } 69710037SARM gem5 Developers break; 69810037SARM gem5 Developers case 14: 69910037SARM gem5 Developers if (opc1 == 0) { 70010037SARM gem5 Developers switch (crm) { 70110037SARM gem5 Developers case 0: 70210037SARM gem5 Developers if (opc2 == 0) 70310037SARM gem5 Developers return MISCREG_CNTFRQ; 70410037SARM gem5 Developers break; 70510037SARM gem5 Developers case 1: 70610037SARM gem5 Developers if (opc2 == 0) 70710037SARM gem5 Developers return MISCREG_CNTKCTL; 70810037SARM gem5 Developers break; 70910037SARM gem5 Developers case 2: 71010037SARM gem5 Developers if (opc2 == 0) 71110037SARM gem5 Developers return MISCREG_CNTP_TVAL; 71210037SARM gem5 Developers else if (opc2 == 1) 71310037SARM gem5 Developers return MISCREG_CNTP_CTL; 71410037SARM gem5 Developers break; 71510037SARM gem5 Developers case 3: 71610037SARM gem5 Developers if (opc2 == 0) 71710037SARM gem5 Developers return MISCREG_CNTV_TVAL; 71810037SARM gem5 Developers else if (opc2 == 1) 71910037SARM gem5 Developers return MISCREG_CNTV_CTL; 72010037SARM gem5 Developers break; 72110037SARM gem5 Developers } 72210037SARM gem5 Developers } else if (opc1 == 4) { 72310037SARM gem5 Developers if (crm == 1 && opc2 == 0) { 72410037SARM gem5 Developers return MISCREG_CNTHCTL; 72510037SARM gem5 Developers } else if (crm == 2) { 72610037SARM gem5 Developers if (opc2 == 0) 72710037SARM gem5 Developers return MISCREG_CNTHP_TVAL; 72810037SARM gem5 Developers else if (opc2 == 1) 72910037SARM gem5 Developers return MISCREG_CNTHP_CTL; 73010037SARM gem5 Developers } 7317259Sgblack@eecs.umich.edu } 7327259Sgblack@eecs.umich.edu break; 7337259Sgblack@eecs.umich.edu case 15: 7347259Sgblack@eecs.umich.edu // Implementation defined 73512530Sgiacomo.travaglini@arm.com return MISCREG_IMPDEF_UNIMPL; 7367259Sgblack@eecs.umich.edu } 7377259Sgblack@eecs.umich.edu // Unrecognized register 73810037SARM gem5 Developers return MISCREG_CP15_UNIMPL; 7397259Sgblack@eecs.umich.edu} 7407259Sgblack@eecs.umich.edu 74110037SARM gem5 DevelopersMiscRegIndex 74210037SARM gem5 DevelopersdecodeCP15Reg64(unsigned crm, unsigned opc1) 74310037SARM gem5 Developers{ 74410037SARM gem5 Developers switch (crm) { 74510037SARM gem5 Developers case 2: 74610037SARM gem5 Developers switch (opc1) { 74710037SARM gem5 Developers case 0: 74810037SARM gem5 Developers return MISCREG_TTBR0; 74910037SARM gem5 Developers case 1: 75010037SARM gem5 Developers return MISCREG_TTBR1; 75110037SARM gem5 Developers case 4: 75210037SARM gem5 Developers return MISCREG_HTTBR; 75310037SARM gem5 Developers case 6: 75410037SARM gem5 Developers return MISCREG_VTTBR; 75510037SARM gem5 Developers } 75610037SARM gem5 Developers break; 75710037SARM gem5 Developers case 7: 75810037SARM gem5 Developers if (opc1 == 0) 75910037SARM gem5 Developers return MISCREG_PAR; 76010037SARM gem5 Developers break; 76110037SARM gem5 Developers case 14: 76210037SARM gem5 Developers switch (opc1) { 76310037SARM gem5 Developers case 0: 76410037SARM gem5 Developers return MISCREG_CNTPCT; 76510037SARM gem5 Developers case 1: 76610037SARM gem5 Developers return MISCREG_CNTVCT; 76710037SARM gem5 Developers case 2: 76810037SARM gem5 Developers return MISCREG_CNTP_CVAL; 76910037SARM gem5 Developers case 3: 77010037SARM gem5 Developers return MISCREG_CNTV_CVAL; 77110037SARM gem5 Developers case 4: 77210037SARM gem5 Developers return MISCREG_CNTVOFF; 77310037SARM gem5 Developers case 6: 77410037SARM gem5 Developers return MISCREG_CNTHP_CVAL; 77510037SARM gem5 Developers } 77610037SARM gem5 Developers break; 77710037SARM gem5 Developers case 15: 77810037SARM gem5 Developers if (opc1 == 0) 77910037SARM gem5 Developers return MISCREG_CPUMERRSR; 78010037SARM gem5 Developers else if (opc1 == 1) 78110037SARM gem5 Developers return MISCREG_L2MERRSR; 78210037SARM gem5 Developers break; 78310037SARM gem5 Developers } 78410037SARM gem5 Developers // Unrecognized register 78510037SARM gem5 Developers return MISCREG_CP15_UNIMPL; 7868902Sandreas.hansson@arm.com} 78710037SARM gem5 Developers 78811939Snikos.nikoleris@arm.comstd::tuple<bool, bool> 78911939Snikos.nikoleris@arm.comcanReadCoprocReg(MiscRegIndex reg, SCR scr, CPSR cpsr) 79010037SARM gem5 Developers{ 79110037SARM gem5 Developers bool secure = !scr.ns; 79211939Snikos.nikoleris@arm.com bool canRead = false; 79311939Snikos.nikoleris@arm.com bool undefined = false; 79410037SARM gem5 Developers 79510037SARM gem5 Developers switch (cpsr.mode) { 79610037SARM gem5 Developers case MODE_USER: 79710037SARM gem5 Developers canRead = secure ? miscRegInfo[reg][MISCREG_USR_S_RD] : 79810037SARM gem5 Developers miscRegInfo[reg][MISCREG_USR_NS_RD]; 79910037SARM gem5 Developers break; 80010037SARM gem5 Developers case MODE_FIQ: 80110037SARM gem5 Developers case MODE_IRQ: 80210037SARM gem5 Developers case MODE_SVC: 80310037SARM gem5 Developers case MODE_ABORT: 80410037SARM gem5 Developers case MODE_UNDEFINED: 80510037SARM gem5 Developers case MODE_SYSTEM: 80610037SARM gem5 Developers canRead = secure ? miscRegInfo[reg][MISCREG_PRI_S_RD] : 80710037SARM gem5 Developers miscRegInfo[reg][MISCREG_PRI_NS_RD]; 80810037SARM gem5 Developers break; 80910037SARM gem5 Developers case MODE_MON: 81010037SARM gem5 Developers canRead = secure ? miscRegInfo[reg][MISCREG_MON_NS0_RD] : 81110037SARM gem5 Developers miscRegInfo[reg][MISCREG_MON_NS1_RD]; 81210037SARM gem5 Developers break; 81310037SARM gem5 Developers case MODE_HYP: 81410037SARM gem5 Developers canRead = miscRegInfo[reg][MISCREG_HYP_RD]; 81510037SARM gem5 Developers break; 81610037SARM gem5 Developers default: 81711939Snikos.nikoleris@arm.com undefined = true; 81810037SARM gem5 Developers } 81910037SARM gem5 Developers // can't do permissions checkes on the root of a banked pair of regs 82010037SARM gem5 Developers assert(!miscRegInfo[reg][MISCREG_BANKED]); 82111939Snikos.nikoleris@arm.com return std::make_tuple(canRead, undefined); 82210037SARM gem5 Developers} 82310037SARM gem5 Developers 82411939Snikos.nikoleris@arm.comstd::tuple<bool, bool> 82511939Snikos.nikoleris@arm.comcanWriteCoprocReg(MiscRegIndex reg, SCR scr, CPSR cpsr) 82610037SARM gem5 Developers{ 82710037SARM gem5 Developers bool secure = !scr.ns; 82811939Snikos.nikoleris@arm.com bool canWrite = false; 82911939Snikos.nikoleris@arm.com bool undefined = false; 83010037SARM gem5 Developers 83110037SARM gem5 Developers switch (cpsr.mode) { 83210037SARM gem5 Developers case MODE_USER: 83310037SARM gem5 Developers canWrite = secure ? miscRegInfo[reg][MISCREG_USR_S_WR] : 83410037SARM gem5 Developers miscRegInfo[reg][MISCREG_USR_NS_WR]; 83510037SARM gem5 Developers break; 83610037SARM gem5 Developers case MODE_FIQ: 83710037SARM gem5 Developers case MODE_IRQ: 83810037SARM gem5 Developers case MODE_SVC: 83910037SARM gem5 Developers case MODE_ABORT: 84010037SARM gem5 Developers case MODE_UNDEFINED: 84110037SARM gem5 Developers case MODE_SYSTEM: 84210037SARM gem5 Developers canWrite = secure ? miscRegInfo[reg][MISCREG_PRI_S_WR] : 84310037SARM gem5 Developers miscRegInfo[reg][MISCREG_PRI_NS_WR]; 84410037SARM gem5 Developers break; 84510037SARM gem5 Developers case MODE_MON: 84610037SARM gem5 Developers canWrite = secure ? miscRegInfo[reg][MISCREG_MON_NS0_WR] : 84710037SARM gem5 Developers miscRegInfo[reg][MISCREG_MON_NS1_WR]; 84810037SARM gem5 Developers break; 84910037SARM gem5 Developers case MODE_HYP: 85010037SARM gem5 Developers canWrite = miscRegInfo[reg][MISCREG_HYP_WR]; 85110037SARM gem5 Developers break; 85210037SARM gem5 Developers default: 85311939Snikos.nikoleris@arm.com undefined = true; 85410037SARM gem5 Developers } 85510037SARM gem5 Developers // can't do permissions checkes on the root of a banked pair of regs 85610037SARM gem5 Developers assert(!miscRegInfo[reg][MISCREG_BANKED]); 85711939Snikos.nikoleris@arm.com return std::make_tuple(canWrite, undefined); 85810037SARM gem5 Developers} 85910037SARM gem5 Developers 86010037SARM gem5 Developersint 86112499Sgiacomo.travaglini@arm.comsnsBankedIndex(MiscRegIndex reg, ThreadContext *tc) 86210037SARM gem5 Developers{ 86311771SCurtis.Dunham@arm.com SCR scr = tc->readMiscReg(MISCREG_SCR); 86412499Sgiacomo.travaglini@arm.com return snsBankedIndex(reg, tc, scr.ns); 86510037SARM gem5 Developers} 86610037SARM gem5 Developers 86710037SARM gem5 Developersint 86812499Sgiacomo.travaglini@arm.comsnsBankedIndex(MiscRegIndex reg, ThreadContext *tc, bool ns) 86910037SARM gem5 Developers{ 87010421Sandreas.hansson@arm.com int reg_as_int = static_cast<int>(reg); 87110037SARM gem5 Developers if (miscRegInfo[reg][MISCREG_BANKED]) { 87211771SCurtis.Dunham@arm.com reg_as_int += (ArmSystem::haveSecurity(tc) && 87311771SCurtis.Dunham@arm.com !ArmSystem::highestELIs64(tc) && !ns) ? 2 : 1; 87410037SARM gem5 Developers } 87510421Sandreas.hansson@arm.com return reg_as_int; 87610037SARM gem5 Developers} 87710037SARM gem5 Developers 87810037SARM gem5 Developers 87910037SARM gem5 Developers/** 88010037SARM gem5 Developers * If the reg is a child reg of a banked set, then the parent is the last 88110037SARM gem5 Developers * banked one in the list. This is messy, and the wish is to eventually have 88210037SARM gem5 Developers * the bitmap replaced with a better data structure. the preUnflatten function 88310037SARM gem5 Developers * initializes a lookup table to speed up the search for these banked 88410037SARM gem5 Developers * registers. 88510037SARM gem5 Developers */ 88610037SARM gem5 Developers 88710037SARM gem5 Developersint unflattenResultMiscReg[NUM_MISCREGS]; 88810037SARM gem5 Developers 88910037SARM gem5 Developersvoid 89010037SARM gem5 DeveloperspreUnflattenMiscReg() 89110037SARM gem5 Developers{ 89210037SARM gem5 Developers int reg = -1; 89310037SARM gem5 Developers for (int i = 0 ; i < NUM_MISCREGS; i++){ 89410037SARM gem5 Developers if (miscRegInfo[i][MISCREG_BANKED]) 89510037SARM gem5 Developers reg = i; 89610037SARM gem5 Developers if (miscRegInfo[i][MISCREG_BANKED_CHILD]) 89710037SARM gem5 Developers unflattenResultMiscReg[i] = reg; 89810037SARM gem5 Developers else 89910037SARM gem5 Developers unflattenResultMiscReg[i] = i; 90010037SARM gem5 Developers // if this assert fails, no parent was found, and something is broken 90110037SARM gem5 Developers assert(unflattenResultMiscReg[i] > -1); 90210037SARM gem5 Developers } 90310037SARM gem5 Developers} 90410037SARM gem5 Developers 90510037SARM gem5 Developersint 90610037SARM gem5 DevelopersunflattenMiscReg(int reg) 90710037SARM gem5 Developers{ 90810037SARM gem5 Developers return unflattenResultMiscReg[reg]; 90910037SARM gem5 Developers} 91010037SARM gem5 Developers 91110037SARM gem5 Developersbool 91210037SARM gem5 DeveloperscanReadAArch64SysReg(MiscRegIndex reg, SCR scr, CPSR cpsr, ThreadContext *tc) 91310037SARM gem5 Developers{ 91410037SARM gem5 Developers // Check for SP_EL0 access while SPSEL == 0 91510037SARM gem5 Developers if ((reg == MISCREG_SP_EL0) && (tc->readMiscReg(MISCREG_SPSEL) == 0)) 91610037SARM gem5 Developers return false; 91710037SARM gem5 Developers 91810037SARM gem5 Developers // Check for RVBAR access 91910037SARM gem5 Developers if (reg == MISCREG_RVBAR_EL1) { 92010037SARM gem5 Developers ExceptionLevel highest_el = ArmSystem::highestEL(tc); 92110037SARM gem5 Developers if (highest_el == EL2 || highest_el == EL3) 92210037SARM gem5 Developers return false; 92310037SARM gem5 Developers } 92410037SARM gem5 Developers if (reg == MISCREG_RVBAR_EL2) { 92510037SARM gem5 Developers ExceptionLevel highest_el = ArmSystem::highestEL(tc); 92610037SARM gem5 Developers if (highest_el == EL3) 92710037SARM gem5 Developers return false; 92810037SARM gem5 Developers } 92910037SARM gem5 Developers 93010037SARM gem5 Developers bool secure = ArmSystem::haveSecurity(tc) && !scr.ns; 93110037SARM gem5 Developers 93210037SARM gem5 Developers switch (opModeToEL((OperatingMode) (uint8_t) cpsr.mode)) { 93310037SARM gem5 Developers case EL0: 93410037SARM gem5 Developers return secure ? miscRegInfo[reg][MISCREG_USR_S_RD] : 93510037SARM gem5 Developers miscRegInfo[reg][MISCREG_USR_NS_RD]; 93610037SARM gem5 Developers case EL1: 93710037SARM gem5 Developers return secure ? miscRegInfo[reg][MISCREG_PRI_S_RD] : 93810037SARM gem5 Developers miscRegInfo[reg][MISCREG_PRI_NS_RD]; 93911574SCurtis.Dunham@arm.com case EL2: 94011574SCurtis.Dunham@arm.com return miscRegInfo[reg][MISCREG_HYP_RD]; 94110037SARM gem5 Developers case EL3: 94210037SARM gem5 Developers return secure ? miscRegInfo[reg][MISCREG_MON_NS0_RD] : 94310037SARM gem5 Developers miscRegInfo[reg][MISCREG_MON_NS1_RD]; 94410037SARM gem5 Developers default: 94510037SARM gem5 Developers panic("Invalid exception level"); 94610037SARM gem5 Developers } 94710037SARM gem5 Developers} 94810037SARM gem5 Developers 94910037SARM gem5 Developersbool 95010037SARM gem5 DeveloperscanWriteAArch64SysReg(MiscRegIndex reg, SCR scr, CPSR cpsr, ThreadContext *tc) 95110037SARM gem5 Developers{ 95210037SARM gem5 Developers // Check for SP_EL0 access while SPSEL == 0 95310037SARM gem5 Developers if ((reg == MISCREG_SP_EL0) && (tc->readMiscReg(MISCREG_SPSEL) == 0)) 95410037SARM gem5 Developers return false; 95510037SARM gem5 Developers ExceptionLevel el = opModeToEL((OperatingMode) (uint8_t) cpsr.mode); 95610037SARM gem5 Developers if (reg == MISCREG_DAIF) { 95710037SARM gem5 Developers SCTLR sctlr = tc->readMiscReg(MISCREG_SCTLR_EL1); 95810037SARM gem5 Developers if (el == EL0 && !sctlr.uma) 95910037SARM gem5 Developers return false; 96010037SARM gem5 Developers } 96110828SGiacomo.Gabrielli@arm.com if (FullSystem && reg == MISCREG_DC_ZVA_Xt) { 96210828SGiacomo.Gabrielli@arm.com // In syscall-emulation mode, this test is skipped and DCZVA is always 96310828SGiacomo.Gabrielli@arm.com // allowed at EL0 96410037SARM gem5 Developers SCTLR sctlr = tc->readMiscReg(MISCREG_SCTLR_EL1); 96510037SARM gem5 Developers if (el == EL0 && !sctlr.dze) 96610037SARM gem5 Developers return false; 96710037SARM gem5 Developers } 96812502Snikos.nikoleris@arm.com if (reg == MISCREG_DC_CVAC_Xt || reg == MISCREG_DC_CIVAC_Xt) { 96910037SARM gem5 Developers SCTLR sctlr = tc->readMiscReg(MISCREG_SCTLR_EL1); 97010037SARM gem5 Developers if (el == EL0 && !sctlr.uci) 97110037SARM gem5 Developers return false; 97210037SARM gem5 Developers } 97310037SARM gem5 Developers 97410037SARM gem5 Developers bool secure = ArmSystem::haveSecurity(tc) && !scr.ns; 97510037SARM gem5 Developers 97610037SARM gem5 Developers switch (el) { 97710037SARM gem5 Developers case EL0: 97810037SARM gem5 Developers return secure ? miscRegInfo[reg][MISCREG_USR_S_WR] : 97910037SARM gem5 Developers miscRegInfo[reg][MISCREG_USR_NS_WR]; 98010037SARM gem5 Developers case EL1: 98110037SARM gem5 Developers return secure ? miscRegInfo[reg][MISCREG_PRI_S_WR] : 98210037SARM gem5 Developers miscRegInfo[reg][MISCREG_PRI_NS_WR]; 98311574SCurtis.Dunham@arm.com case EL2: 98411574SCurtis.Dunham@arm.com return miscRegInfo[reg][MISCREG_HYP_WR]; 98510037SARM gem5 Developers case EL3: 98610037SARM gem5 Developers return secure ? miscRegInfo[reg][MISCREG_MON_NS0_WR] : 98710037SARM gem5 Developers miscRegInfo[reg][MISCREG_MON_NS1_WR]; 98810037SARM gem5 Developers default: 98910037SARM gem5 Developers panic("Invalid exception level"); 99010037SARM gem5 Developers } 99110037SARM gem5 Developers} 99210037SARM gem5 Developers 99310037SARM gem5 DevelopersMiscRegIndex 99410037SARM gem5 DevelopersdecodeAArch64SysReg(unsigned op0, unsigned op1, 99510037SARM gem5 Developers unsigned crn, unsigned crm, 99610037SARM gem5 Developers unsigned op2) 99710037SARM gem5 Developers{ 99810037SARM gem5 Developers switch (op0) { 99910037SARM gem5 Developers case 1: 100010037SARM gem5 Developers switch (crn) { 100110037SARM gem5 Developers case 7: 100210037SARM gem5 Developers switch (op1) { 100310037SARM gem5 Developers case 0: 100410037SARM gem5 Developers switch (crm) { 100510037SARM gem5 Developers case 1: 100610037SARM gem5 Developers switch (op2) { 100710037SARM gem5 Developers case 0: 100810037SARM gem5 Developers return MISCREG_IC_IALLUIS; 100910037SARM gem5 Developers } 101010037SARM gem5 Developers break; 101110037SARM gem5 Developers case 5: 101210037SARM gem5 Developers switch (op2) { 101310037SARM gem5 Developers case 0: 101410037SARM gem5 Developers return MISCREG_IC_IALLU; 101510037SARM gem5 Developers } 101610037SARM gem5 Developers break; 101710037SARM gem5 Developers case 6: 101810037SARM gem5 Developers switch (op2) { 101910037SARM gem5 Developers case 1: 102010037SARM gem5 Developers return MISCREG_DC_IVAC_Xt; 102110037SARM gem5 Developers case 2: 102210037SARM gem5 Developers return MISCREG_DC_ISW_Xt; 102310037SARM gem5 Developers } 102410037SARM gem5 Developers break; 102510037SARM gem5 Developers case 8: 102610037SARM gem5 Developers switch (op2) { 102710037SARM gem5 Developers case 0: 102810037SARM gem5 Developers return MISCREG_AT_S1E1R_Xt; 102910037SARM gem5 Developers case 1: 103010037SARM gem5 Developers return MISCREG_AT_S1E1W_Xt; 103110037SARM gem5 Developers case 2: 103210037SARM gem5 Developers return MISCREG_AT_S1E0R_Xt; 103310037SARM gem5 Developers case 3: 103410037SARM gem5 Developers return MISCREG_AT_S1E0W_Xt; 103510037SARM gem5 Developers } 103610037SARM gem5 Developers break; 103710037SARM gem5 Developers case 10: 103810037SARM gem5 Developers switch (op2) { 103910037SARM gem5 Developers case 2: 104010037SARM gem5 Developers return MISCREG_DC_CSW_Xt; 104110037SARM gem5 Developers } 104210037SARM gem5 Developers break; 104310037SARM gem5 Developers case 14: 104410037SARM gem5 Developers switch (op2) { 104510037SARM gem5 Developers case 2: 104610037SARM gem5 Developers return MISCREG_DC_CISW_Xt; 104710037SARM gem5 Developers } 104810037SARM gem5 Developers break; 104910037SARM gem5 Developers } 105010037SARM gem5 Developers break; 105110037SARM gem5 Developers case 3: 105210037SARM gem5 Developers switch (crm) { 105310037SARM gem5 Developers case 4: 105410037SARM gem5 Developers switch (op2) { 105510037SARM gem5 Developers case 1: 105610037SARM gem5 Developers return MISCREG_DC_ZVA_Xt; 105710037SARM gem5 Developers } 105810037SARM gem5 Developers break; 105910037SARM gem5 Developers case 5: 106010037SARM gem5 Developers switch (op2) { 106110037SARM gem5 Developers case 1: 106210037SARM gem5 Developers return MISCREG_IC_IVAU_Xt; 106310037SARM gem5 Developers } 106410037SARM gem5 Developers break; 106510037SARM gem5 Developers case 10: 106610037SARM gem5 Developers switch (op2) { 106710037SARM gem5 Developers case 1: 106810037SARM gem5 Developers return MISCREG_DC_CVAC_Xt; 106910037SARM gem5 Developers } 107010037SARM gem5 Developers break; 107110037SARM gem5 Developers case 11: 107210037SARM gem5 Developers switch (op2) { 107310037SARM gem5 Developers case 1: 107410037SARM gem5 Developers return MISCREG_DC_CVAU_Xt; 107510037SARM gem5 Developers } 107610037SARM gem5 Developers break; 107710037SARM gem5 Developers case 14: 107810037SARM gem5 Developers switch (op2) { 107910037SARM gem5 Developers case 1: 108010037SARM gem5 Developers return MISCREG_DC_CIVAC_Xt; 108110037SARM gem5 Developers } 108210037SARM gem5 Developers break; 108310037SARM gem5 Developers } 108410037SARM gem5 Developers break; 108510037SARM gem5 Developers case 4: 108610037SARM gem5 Developers switch (crm) { 108710037SARM gem5 Developers case 8: 108810037SARM gem5 Developers switch (op2) { 108910037SARM gem5 Developers case 0: 109010037SARM gem5 Developers return MISCREG_AT_S1E2R_Xt; 109110037SARM gem5 Developers case 1: 109210037SARM gem5 Developers return MISCREG_AT_S1E2W_Xt; 109310037SARM gem5 Developers case 4: 109410037SARM gem5 Developers return MISCREG_AT_S12E1R_Xt; 109510037SARM gem5 Developers case 5: 109610037SARM gem5 Developers return MISCREG_AT_S12E1W_Xt; 109710037SARM gem5 Developers case 6: 109810037SARM gem5 Developers return MISCREG_AT_S12E0R_Xt; 109910037SARM gem5 Developers case 7: 110010037SARM gem5 Developers return MISCREG_AT_S12E0W_Xt; 110110037SARM gem5 Developers } 110210037SARM gem5 Developers break; 110310037SARM gem5 Developers } 110410037SARM gem5 Developers break; 110510037SARM gem5 Developers case 6: 110610037SARM gem5 Developers switch (crm) { 110710037SARM gem5 Developers case 8: 110810037SARM gem5 Developers switch (op2) { 110910037SARM gem5 Developers case 0: 111010037SARM gem5 Developers return MISCREG_AT_S1E3R_Xt; 111110037SARM gem5 Developers case 1: 111210037SARM gem5 Developers return MISCREG_AT_S1E3W_Xt; 111310037SARM gem5 Developers } 111410037SARM gem5 Developers break; 111510037SARM gem5 Developers } 111610037SARM gem5 Developers break; 111710037SARM gem5 Developers } 111810037SARM gem5 Developers break; 111910037SARM gem5 Developers case 8: 112010037SARM gem5 Developers switch (op1) { 112110037SARM gem5 Developers case 0: 112210037SARM gem5 Developers switch (crm) { 112310037SARM gem5 Developers case 3: 112410037SARM gem5 Developers switch (op2) { 112510037SARM gem5 Developers case 0: 112610037SARM gem5 Developers return MISCREG_TLBI_VMALLE1IS; 112710037SARM gem5 Developers case 1: 112810037SARM gem5 Developers return MISCREG_TLBI_VAE1IS_Xt; 112910037SARM gem5 Developers case 2: 113010037SARM gem5 Developers return MISCREG_TLBI_ASIDE1IS_Xt; 113110037SARM gem5 Developers case 3: 113210037SARM gem5 Developers return MISCREG_TLBI_VAAE1IS_Xt; 113310037SARM gem5 Developers case 5: 113410037SARM gem5 Developers return MISCREG_TLBI_VALE1IS_Xt; 113510037SARM gem5 Developers case 7: 113610037SARM gem5 Developers return MISCREG_TLBI_VAALE1IS_Xt; 113710037SARM gem5 Developers } 113810037SARM gem5 Developers break; 113910037SARM gem5 Developers case 7: 114010037SARM gem5 Developers switch (op2) { 114110037SARM gem5 Developers case 0: 114210037SARM gem5 Developers return MISCREG_TLBI_VMALLE1; 114310037SARM gem5 Developers case 1: 114410037SARM gem5 Developers return MISCREG_TLBI_VAE1_Xt; 114510037SARM gem5 Developers case 2: 114610037SARM gem5 Developers return MISCREG_TLBI_ASIDE1_Xt; 114710037SARM gem5 Developers case 3: 114810037SARM gem5 Developers return MISCREG_TLBI_VAAE1_Xt; 114910037SARM gem5 Developers case 5: 115010037SARM gem5 Developers return MISCREG_TLBI_VALE1_Xt; 115110037SARM gem5 Developers case 7: 115210037SARM gem5 Developers return MISCREG_TLBI_VAALE1_Xt; 115310037SARM gem5 Developers } 115410037SARM gem5 Developers break; 115510037SARM gem5 Developers } 115610037SARM gem5 Developers break; 115710037SARM gem5 Developers case 4: 115810037SARM gem5 Developers switch (crm) { 115910037SARM gem5 Developers case 0: 116010037SARM gem5 Developers switch (op2) { 116110037SARM gem5 Developers case 1: 116210037SARM gem5 Developers return MISCREG_TLBI_IPAS2E1IS_Xt; 116310037SARM gem5 Developers case 5: 116410037SARM gem5 Developers return MISCREG_TLBI_IPAS2LE1IS_Xt; 116510037SARM gem5 Developers } 116610037SARM gem5 Developers break; 116710037SARM gem5 Developers case 3: 116810037SARM gem5 Developers switch (op2) { 116910037SARM gem5 Developers case 0: 117010037SARM gem5 Developers return MISCREG_TLBI_ALLE2IS; 117110037SARM gem5 Developers case 1: 117210037SARM gem5 Developers return MISCREG_TLBI_VAE2IS_Xt; 117310037SARM gem5 Developers case 4: 117410037SARM gem5 Developers return MISCREG_TLBI_ALLE1IS; 117510037SARM gem5 Developers case 5: 117610037SARM gem5 Developers return MISCREG_TLBI_VALE2IS_Xt; 117710037SARM gem5 Developers case 6: 117810037SARM gem5 Developers return MISCREG_TLBI_VMALLS12E1IS; 117910037SARM gem5 Developers } 118010037SARM gem5 Developers break; 118110037SARM gem5 Developers case 4: 118210037SARM gem5 Developers switch (op2) { 118310037SARM gem5 Developers case 1: 118410037SARM gem5 Developers return MISCREG_TLBI_IPAS2E1_Xt; 118510037SARM gem5 Developers case 5: 118610037SARM gem5 Developers return MISCREG_TLBI_IPAS2LE1_Xt; 118710037SARM gem5 Developers } 118810037SARM gem5 Developers break; 118910037SARM gem5 Developers case 7: 119010037SARM gem5 Developers switch (op2) { 119110037SARM gem5 Developers case 0: 119210037SARM gem5 Developers return MISCREG_TLBI_ALLE2; 119310037SARM gem5 Developers case 1: 119410037SARM gem5 Developers return MISCREG_TLBI_VAE2_Xt; 119510037SARM gem5 Developers case 4: 119610037SARM gem5 Developers return MISCREG_TLBI_ALLE1; 119710037SARM gem5 Developers case 5: 119810037SARM gem5 Developers return MISCREG_TLBI_VALE2_Xt; 119910037SARM gem5 Developers case 6: 120010037SARM gem5 Developers return MISCREG_TLBI_VMALLS12E1; 120110037SARM gem5 Developers } 120210037SARM gem5 Developers break; 120310037SARM gem5 Developers } 120410037SARM gem5 Developers break; 120510037SARM gem5 Developers case 6: 120610037SARM gem5 Developers switch (crm) { 120710037SARM gem5 Developers case 3: 120810037SARM gem5 Developers switch (op2) { 120910037SARM gem5 Developers case 0: 121010037SARM gem5 Developers return MISCREG_TLBI_ALLE3IS; 121110037SARM gem5 Developers case 1: 121210037SARM gem5 Developers return MISCREG_TLBI_VAE3IS_Xt; 121310037SARM gem5 Developers case 5: 121410037SARM gem5 Developers return MISCREG_TLBI_VALE3IS_Xt; 121510037SARM gem5 Developers } 121610037SARM gem5 Developers break; 121710037SARM gem5 Developers case 7: 121810037SARM gem5 Developers switch (op2) { 121910037SARM gem5 Developers case 0: 122010037SARM gem5 Developers return MISCREG_TLBI_ALLE3; 122110037SARM gem5 Developers case 1: 122210037SARM gem5 Developers return MISCREG_TLBI_VAE3_Xt; 122310037SARM gem5 Developers case 5: 122410037SARM gem5 Developers return MISCREG_TLBI_VALE3_Xt; 122510037SARM gem5 Developers } 122610037SARM gem5 Developers break; 122710037SARM gem5 Developers } 122810037SARM gem5 Developers break; 122910037SARM gem5 Developers } 123010037SARM gem5 Developers break; 123113366Sgiacomo.travaglini@arm.com case 11: 123213366Sgiacomo.travaglini@arm.com case 15: 123313366Sgiacomo.travaglini@arm.com // SYS Instruction with CRn = { 11, 15 } 123413366Sgiacomo.travaglini@arm.com // (Trappable by HCR_EL2.TIDCP) 123513366Sgiacomo.travaglini@arm.com return MISCREG_IMPDEF_UNIMPL; 123610037SARM gem5 Developers } 123710037SARM gem5 Developers break; 123810037SARM gem5 Developers case 2: 123910037SARM gem5 Developers switch (crn) { 124010037SARM gem5 Developers case 0: 124110037SARM gem5 Developers switch (op1) { 124210037SARM gem5 Developers case 0: 124310037SARM gem5 Developers switch (crm) { 124410037SARM gem5 Developers case 0: 124510037SARM gem5 Developers switch (op2) { 124610037SARM gem5 Developers case 2: 124710037SARM gem5 Developers return MISCREG_OSDTRRX_EL1; 124810037SARM gem5 Developers case 4: 124910037SARM gem5 Developers return MISCREG_DBGBVR0_EL1; 125010037SARM gem5 Developers case 5: 125110037SARM gem5 Developers return MISCREG_DBGBCR0_EL1; 125210037SARM gem5 Developers case 6: 125310037SARM gem5 Developers return MISCREG_DBGWVR0_EL1; 125410037SARM gem5 Developers case 7: 125510037SARM gem5 Developers return MISCREG_DBGWCR0_EL1; 125610037SARM gem5 Developers } 125710037SARM gem5 Developers break; 125810037SARM gem5 Developers case 1: 125910037SARM gem5 Developers switch (op2) { 126010037SARM gem5 Developers case 4: 126110037SARM gem5 Developers return MISCREG_DBGBVR1_EL1; 126210037SARM gem5 Developers case 5: 126310037SARM gem5 Developers return MISCREG_DBGBCR1_EL1; 126410037SARM gem5 Developers case 6: 126510037SARM gem5 Developers return MISCREG_DBGWVR1_EL1; 126610037SARM gem5 Developers case 7: 126710037SARM gem5 Developers return MISCREG_DBGWCR1_EL1; 126810037SARM gem5 Developers } 126910037SARM gem5 Developers break; 127010037SARM gem5 Developers case 2: 127110037SARM gem5 Developers switch (op2) { 127210037SARM gem5 Developers case 0: 127310037SARM gem5 Developers return MISCREG_MDCCINT_EL1; 127410037SARM gem5 Developers case 2: 127510037SARM gem5 Developers return MISCREG_MDSCR_EL1; 127610037SARM gem5 Developers case 4: 127710037SARM gem5 Developers return MISCREG_DBGBVR2_EL1; 127810037SARM gem5 Developers case 5: 127910037SARM gem5 Developers return MISCREG_DBGBCR2_EL1; 128010037SARM gem5 Developers case 6: 128110037SARM gem5 Developers return MISCREG_DBGWVR2_EL1; 128210037SARM gem5 Developers case 7: 128310037SARM gem5 Developers return MISCREG_DBGWCR2_EL1; 128410037SARM gem5 Developers } 128510037SARM gem5 Developers break; 128610037SARM gem5 Developers case 3: 128710037SARM gem5 Developers switch (op2) { 128810037SARM gem5 Developers case 2: 128910037SARM gem5 Developers return MISCREG_OSDTRTX_EL1; 129010037SARM gem5 Developers case 4: 129110037SARM gem5 Developers return MISCREG_DBGBVR3_EL1; 129210037SARM gem5 Developers case 5: 129310037SARM gem5 Developers return MISCREG_DBGBCR3_EL1; 129410037SARM gem5 Developers case 6: 129510037SARM gem5 Developers return MISCREG_DBGWVR3_EL1; 129610037SARM gem5 Developers case 7: 129710037SARM gem5 Developers return MISCREG_DBGWCR3_EL1; 129810037SARM gem5 Developers } 129910037SARM gem5 Developers break; 130010037SARM gem5 Developers case 4: 130110037SARM gem5 Developers switch (op2) { 130210037SARM gem5 Developers case 4: 130310037SARM gem5 Developers return MISCREG_DBGBVR4_EL1; 130410037SARM gem5 Developers case 5: 130510037SARM gem5 Developers return MISCREG_DBGBCR4_EL1; 130610037SARM gem5 Developers } 130710037SARM gem5 Developers break; 130810037SARM gem5 Developers case 5: 130910037SARM gem5 Developers switch (op2) { 131010037SARM gem5 Developers case 4: 131110037SARM gem5 Developers return MISCREG_DBGBVR5_EL1; 131210037SARM gem5 Developers case 5: 131310037SARM gem5 Developers return MISCREG_DBGBCR5_EL1; 131410037SARM gem5 Developers } 131510037SARM gem5 Developers break; 131610037SARM gem5 Developers case 6: 131710037SARM gem5 Developers switch (op2) { 131810037SARM gem5 Developers case 2: 131910037SARM gem5 Developers return MISCREG_OSECCR_EL1; 132010037SARM gem5 Developers } 132110037SARM gem5 Developers break; 132210037SARM gem5 Developers } 132310037SARM gem5 Developers break; 132410037SARM gem5 Developers case 2: 132510037SARM gem5 Developers switch (crm) { 132610037SARM gem5 Developers case 0: 132710037SARM gem5 Developers switch (op2) { 132810037SARM gem5 Developers case 0: 132910037SARM gem5 Developers return MISCREG_TEECR32_EL1; 133010037SARM gem5 Developers } 133110037SARM gem5 Developers break; 133210037SARM gem5 Developers } 133310037SARM gem5 Developers break; 133410037SARM gem5 Developers case 3: 133510037SARM gem5 Developers switch (crm) { 133610037SARM gem5 Developers case 1: 133710037SARM gem5 Developers switch (op2) { 133810037SARM gem5 Developers case 0: 133910037SARM gem5 Developers return MISCREG_MDCCSR_EL0; 134010037SARM gem5 Developers } 134110037SARM gem5 Developers break; 134210037SARM gem5 Developers case 4: 134310037SARM gem5 Developers switch (op2) { 134410037SARM gem5 Developers case 0: 134510037SARM gem5 Developers return MISCREG_MDDTR_EL0; 134610037SARM gem5 Developers } 134710037SARM gem5 Developers break; 134810037SARM gem5 Developers case 5: 134910037SARM gem5 Developers switch (op2) { 135010037SARM gem5 Developers case 0: 135110037SARM gem5 Developers return MISCREG_MDDTRRX_EL0; 135210037SARM gem5 Developers } 135310037SARM gem5 Developers break; 135410037SARM gem5 Developers } 135510037SARM gem5 Developers break; 135610037SARM gem5 Developers case 4: 135710037SARM gem5 Developers switch (crm) { 135810037SARM gem5 Developers case 7: 135910037SARM gem5 Developers switch (op2) { 136010037SARM gem5 Developers case 0: 136110037SARM gem5 Developers return MISCREG_DBGVCR32_EL2; 136210037SARM gem5 Developers } 136310037SARM gem5 Developers break; 136410037SARM gem5 Developers } 136510037SARM gem5 Developers break; 136610037SARM gem5 Developers } 136710037SARM gem5 Developers break; 136810037SARM gem5 Developers case 1: 136910037SARM gem5 Developers switch (op1) { 137010037SARM gem5 Developers case 0: 137110037SARM gem5 Developers switch (crm) { 137210037SARM gem5 Developers case 0: 137310037SARM gem5 Developers switch (op2) { 137410037SARM gem5 Developers case 0: 137510037SARM gem5 Developers return MISCREG_MDRAR_EL1; 137610037SARM gem5 Developers case 4: 137710037SARM gem5 Developers return MISCREG_OSLAR_EL1; 137810037SARM gem5 Developers } 137910037SARM gem5 Developers break; 138010037SARM gem5 Developers case 1: 138110037SARM gem5 Developers switch (op2) { 138210037SARM gem5 Developers case 4: 138310037SARM gem5 Developers return MISCREG_OSLSR_EL1; 138410037SARM gem5 Developers } 138510037SARM gem5 Developers break; 138610037SARM gem5 Developers case 3: 138710037SARM gem5 Developers switch (op2) { 138810037SARM gem5 Developers case 4: 138910037SARM gem5 Developers return MISCREG_OSDLR_EL1; 139010037SARM gem5 Developers } 139110037SARM gem5 Developers break; 139210037SARM gem5 Developers case 4: 139310037SARM gem5 Developers switch (op2) { 139410037SARM gem5 Developers case 4: 139510037SARM gem5 Developers return MISCREG_DBGPRCR_EL1; 139610037SARM gem5 Developers } 139710037SARM gem5 Developers break; 139810037SARM gem5 Developers } 139910037SARM gem5 Developers break; 140010037SARM gem5 Developers case 2: 140110037SARM gem5 Developers switch (crm) { 140210037SARM gem5 Developers case 0: 140310037SARM gem5 Developers switch (op2) { 140410037SARM gem5 Developers case 0: 140510037SARM gem5 Developers return MISCREG_TEEHBR32_EL1; 140610037SARM gem5 Developers } 140710037SARM gem5 Developers break; 140810037SARM gem5 Developers } 140910037SARM gem5 Developers break; 141010037SARM gem5 Developers } 141110037SARM gem5 Developers break; 141210037SARM gem5 Developers case 7: 141310037SARM gem5 Developers switch (op1) { 141410037SARM gem5 Developers case 0: 141510037SARM gem5 Developers switch (crm) { 141610037SARM gem5 Developers case 8: 141710037SARM gem5 Developers switch (op2) { 141810037SARM gem5 Developers case 6: 141910037SARM gem5 Developers return MISCREG_DBGCLAIMSET_EL1; 142010037SARM gem5 Developers } 142110037SARM gem5 Developers break; 142210037SARM gem5 Developers case 9: 142310037SARM gem5 Developers switch (op2) { 142410037SARM gem5 Developers case 6: 142510037SARM gem5 Developers return MISCREG_DBGCLAIMCLR_EL1; 142610037SARM gem5 Developers } 142710037SARM gem5 Developers break; 142810037SARM gem5 Developers case 14: 142910037SARM gem5 Developers switch (op2) { 143010037SARM gem5 Developers case 6: 143110037SARM gem5 Developers return MISCREG_DBGAUTHSTATUS_EL1; 143210037SARM gem5 Developers } 143310037SARM gem5 Developers break; 143410037SARM gem5 Developers } 143510037SARM gem5 Developers break; 143610037SARM gem5 Developers } 143710037SARM gem5 Developers break; 143810037SARM gem5 Developers } 143910037SARM gem5 Developers break; 144010037SARM gem5 Developers case 3: 144110037SARM gem5 Developers switch (crn) { 144210037SARM gem5 Developers case 0: 144310037SARM gem5 Developers switch (op1) { 144410037SARM gem5 Developers case 0: 144510037SARM gem5 Developers switch (crm) { 144610037SARM gem5 Developers case 0: 144710037SARM gem5 Developers switch (op2) { 144810037SARM gem5 Developers case 0: 144910037SARM gem5 Developers return MISCREG_MIDR_EL1; 145010037SARM gem5 Developers case 5: 145110037SARM gem5 Developers return MISCREG_MPIDR_EL1; 145210037SARM gem5 Developers case 6: 145310037SARM gem5 Developers return MISCREG_REVIDR_EL1; 145410037SARM gem5 Developers } 145510037SARM gem5 Developers break; 145610037SARM gem5 Developers case 1: 145710037SARM gem5 Developers switch (op2) { 145810037SARM gem5 Developers case 0: 145910037SARM gem5 Developers return MISCREG_ID_PFR0_EL1; 146010037SARM gem5 Developers case 1: 146110037SARM gem5 Developers return MISCREG_ID_PFR1_EL1; 146210037SARM gem5 Developers case 2: 146310037SARM gem5 Developers return MISCREG_ID_DFR0_EL1; 146410037SARM gem5 Developers case 3: 146510037SARM gem5 Developers return MISCREG_ID_AFR0_EL1; 146610037SARM gem5 Developers case 4: 146710037SARM gem5 Developers return MISCREG_ID_MMFR0_EL1; 146810037SARM gem5 Developers case 5: 146910037SARM gem5 Developers return MISCREG_ID_MMFR1_EL1; 147010037SARM gem5 Developers case 6: 147110037SARM gem5 Developers return MISCREG_ID_MMFR2_EL1; 147210037SARM gem5 Developers case 7: 147310037SARM gem5 Developers return MISCREG_ID_MMFR3_EL1; 147410037SARM gem5 Developers } 147510037SARM gem5 Developers break; 147610037SARM gem5 Developers case 2: 147710037SARM gem5 Developers switch (op2) { 147810037SARM gem5 Developers case 0: 147910037SARM gem5 Developers return MISCREG_ID_ISAR0_EL1; 148010037SARM gem5 Developers case 1: 148110037SARM gem5 Developers return MISCREG_ID_ISAR1_EL1; 148210037SARM gem5 Developers case 2: 148310037SARM gem5 Developers return MISCREG_ID_ISAR2_EL1; 148410037SARM gem5 Developers case 3: 148510037SARM gem5 Developers return MISCREG_ID_ISAR3_EL1; 148610037SARM gem5 Developers case 4: 148710037SARM gem5 Developers return MISCREG_ID_ISAR4_EL1; 148810037SARM gem5 Developers case 5: 148910037SARM gem5 Developers return MISCREG_ID_ISAR5_EL1; 149010037SARM gem5 Developers } 149110037SARM gem5 Developers break; 149210037SARM gem5 Developers case 3: 149310037SARM gem5 Developers switch (op2) { 149410037SARM gem5 Developers case 0: 149510037SARM gem5 Developers return MISCREG_MVFR0_EL1; 149610037SARM gem5 Developers case 1: 149710037SARM gem5 Developers return MISCREG_MVFR1_EL1; 149810037SARM gem5 Developers case 2: 149910037SARM gem5 Developers return MISCREG_MVFR2_EL1; 150010037SARM gem5 Developers case 3 ... 7: 150110037SARM gem5 Developers return MISCREG_RAZ; 150210037SARM gem5 Developers } 150310037SARM gem5 Developers break; 150410037SARM gem5 Developers case 4: 150510037SARM gem5 Developers switch (op2) { 150610037SARM gem5 Developers case 0: 150710037SARM gem5 Developers return MISCREG_ID_AA64PFR0_EL1; 150810037SARM gem5 Developers case 1: 150910037SARM gem5 Developers return MISCREG_ID_AA64PFR1_EL1; 151010037SARM gem5 Developers case 2 ... 7: 151110037SARM gem5 Developers return MISCREG_RAZ; 151210037SARM gem5 Developers } 151310037SARM gem5 Developers break; 151410037SARM gem5 Developers case 5: 151510037SARM gem5 Developers switch (op2) { 151610037SARM gem5 Developers case 0: 151710037SARM gem5 Developers return MISCREG_ID_AA64DFR0_EL1; 151810037SARM gem5 Developers case 1: 151910037SARM gem5 Developers return MISCREG_ID_AA64DFR1_EL1; 152010037SARM gem5 Developers case 4: 152110037SARM gem5 Developers return MISCREG_ID_AA64AFR0_EL1; 152210037SARM gem5 Developers case 5: 152310037SARM gem5 Developers return MISCREG_ID_AA64AFR1_EL1; 152410037SARM gem5 Developers case 2: 152510037SARM gem5 Developers case 3: 152610037SARM gem5 Developers case 6: 152710037SARM gem5 Developers case 7: 152810037SARM gem5 Developers return MISCREG_RAZ; 152910037SARM gem5 Developers } 153010037SARM gem5 Developers break; 153110037SARM gem5 Developers case 6: 153210037SARM gem5 Developers switch (op2) { 153310037SARM gem5 Developers case 0: 153410037SARM gem5 Developers return MISCREG_ID_AA64ISAR0_EL1; 153510037SARM gem5 Developers case 1: 153610037SARM gem5 Developers return MISCREG_ID_AA64ISAR1_EL1; 153710037SARM gem5 Developers case 2 ... 7: 153810037SARM gem5 Developers return MISCREG_RAZ; 153910037SARM gem5 Developers } 154010037SARM gem5 Developers break; 154110037SARM gem5 Developers case 7: 154210037SARM gem5 Developers switch (op2) { 154310037SARM gem5 Developers case 0: 154410037SARM gem5 Developers return MISCREG_ID_AA64MMFR0_EL1; 154510037SARM gem5 Developers case 1: 154610037SARM gem5 Developers return MISCREG_ID_AA64MMFR1_EL1; 154713116Sgiacomo.travaglini@arm.com case 2: 154813116Sgiacomo.travaglini@arm.com return MISCREG_ID_AA64MMFR2_EL1; 154913116Sgiacomo.travaglini@arm.com case 3 ... 7: 155010037SARM gem5 Developers return MISCREG_RAZ; 155110037SARM gem5 Developers } 155210037SARM gem5 Developers break; 155310037SARM gem5 Developers } 155410037SARM gem5 Developers break; 155510037SARM gem5 Developers case 1: 155610037SARM gem5 Developers switch (crm) { 155710037SARM gem5 Developers case 0: 155810037SARM gem5 Developers switch (op2) { 155910037SARM gem5 Developers case 0: 156010037SARM gem5 Developers return MISCREG_CCSIDR_EL1; 156110037SARM gem5 Developers case 1: 156210037SARM gem5 Developers return MISCREG_CLIDR_EL1; 156310037SARM gem5 Developers case 7: 156410037SARM gem5 Developers return MISCREG_AIDR_EL1; 156510037SARM gem5 Developers } 156610037SARM gem5 Developers break; 156710037SARM gem5 Developers } 156810037SARM gem5 Developers break; 156910037SARM gem5 Developers case 2: 157010037SARM gem5 Developers switch (crm) { 157110037SARM gem5 Developers case 0: 157210037SARM gem5 Developers switch (op2) { 157310037SARM gem5 Developers case 0: 157410037SARM gem5 Developers return MISCREG_CSSELR_EL1; 157510037SARM gem5 Developers } 157610037SARM gem5 Developers break; 157710037SARM gem5 Developers } 157810037SARM gem5 Developers break; 157910037SARM gem5 Developers case 3: 158010037SARM gem5 Developers switch (crm) { 158110037SARM gem5 Developers case 0: 158210037SARM gem5 Developers switch (op2) { 158310037SARM gem5 Developers case 1: 158410037SARM gem5 Developers return MISCREG_CTR_EL0; 158510037SARM gem5 Developers case 7: 158610037SARM gem5 Developers return MISCREG_DCZID_EL0; 158710037SARM gem5 Developers } 158810037SARM gem5 Developers break; 158910037SARM gem5 Developers } 159010037SARM gem5 Developers break; 159110037SARM gem5 Developers case 4: 159210037SARM gem5 Developers switch (crm) { 159310037SARM gem5 Developers case 0: 159410037SARM gem5 Developers switch (op2) { 159510037SARM gem5 Developers case 0: 159610037SARM gem5 Developers return MISCREG_VPIDR_EL2; 159710037SARM gem5 Developers case 5: 159810037SARM gem5 Developers return MISCREG_VMPIDR_EL2; 159910037SARM gem5 Developers } 160010037SARM gem5 Developers break; 160110037SARM gem5 Developers } 160210037SARM gem5 Developers break; 160310037SARM gem5 Developers } 160410037SARM gem5 Developers break; 160510037SARM gem5 Developers case 1: 160610037SARM gem5 Developers switch (op1) { 160710037SARM gem5 Developers case 0: 160810037SARM gem5 Developers switch (crm) { 160910037SARM gem5 Developers case 0: 161010037SARM gem5 Developers switch (op2) { 161110037SARM gem5 Developers case 0: 161210037SARM gem5 Developers return MISCREG_SCTLR_EL1; 161310037SARM gem5 Developers case 1: 161410037SARM gem5 Developers return MISCREG_ACTLR_EL1; 161510037SARM gem5 Developers case 2: 161610037SARM gem5 Developers return MISCREG_CPACR_EL1; 161710037SARM gem5 Developers } 161810037SARM gem5 Developers break; 161910037SARM gem5 Developers } 162010037SARM gem5 Developers break; 162110037SARM gem5 Developers case 4: 162210037SARM gem5 Developers switch (crm) { 162310037SARM gem5 Developers case 0: 162410037SARM gem5 Developers switch (op2) { 162510037SARM gem5 Developers case 0: 162610037SARM gem5 Developers return MISCREG_SCTLR_EL2; 162710037SARM gem5 Developers case 1: 162810037SARM gem5 Developers return MISCREG_ACTLR_EL2; 162910037SARM gem5 Developers } 163010037SARM gem5 Developers break; 163110037SARM gem5 Developers case 1: 163210037SARM gem5 Developers switch (op2) { 163310037SARM gem5 Developers case 0: 163410037SARM gem5 Developers return MISCREG_HCR_EL2; 163510037SARM gem5 Developers case 1: 163610037SARM gem5 Developers return MISCREG_MDCR_EL2; 163710037SARM gem5 Developers case 2: 163810037SARM gem5 Developers return MISCREG_CPTR_EL2; 163910037SARM gem5 Developers case 3: 164010037SARM gem5 Developers return MISCREG_HSTR_EL2; 164110037SARM gem5 Developers case 7: 164210037SARM gem5 Developers return MISCREG_HACR_EL2; 164310037SARM gem5 Developers } 164410037SARM gem5 Developers break; 164510037SARM gem5 Developers } 164610037SARM gem5 Developers break; 164710037SARM gem5 Developers case 6: 164810037SARM gem5 Developers switch (crm) { 164910037SARM gem5 Developers case 0: 165010037SARM gem5 Developers switch (op2) { 165110037SARM gem5 Developers case 0: 165210037SARM gem5 Developers return MISCREG_SCTLR_EL3; 165310037SARM gem5 Developers case 1: 165410037SARM gem5 Developers return MISCREG_ACTLR_EL3; 165510037SARM gem5 Developers } 165610037SARM gem5 Developers break; 165710037SARM gem5 Developers case 1: 165810037SARM gem5 Developers switch (op2) { 165910037SARM gem5 Developers case 0: 166010037SARM gem5 Developers return MISCREG_SCR_EL3; 166110037SARM gem5 Developers case 1: 166210037SARM gem5 Developers return MISCREG_SDER32_EL3; 166310037SARM gem5 Developers case 2: 166410037SARM gem5 Developers return MISCREG_CPTR_EL3; 166510037SARM gem5 Developers } 166610037SARM gem5 Developers break; 166710037SARM gem5 Developers case 3: 166810037SARM gem5 Developers switch (op2) { 166910037SARM gem5 Developers case 1: 167010037SARM gem5 Developers return MISCREG_MDCR_EL3; 167110037SARM gem5 Developers } 167210037SARM gem5 Developers break; 167310037SARM gem5 Developers } 167410037SARM gem5 Developers break; 167510037SARM gem5 Developers } 167610037SARM gem5 Developers break; 167710037SARM gem5 Developers case 2: 167810037SARM gem5 Developers switch (op1) { 167910037SARM gem5 Developers case 0: 168010037SARM gem5 Developers switch (crm) { 168110037SARM gem5 Developers case 0: 168210037SARM gem5 Developers switch (op2) { 168310037SARM gem5 Developers case 0: 168410037SARM gem5 Developers return MISCREG_TTBR0_EL1; 168510037SARM gem5 Developers case 1: 168610037SARM gem5 Developers return MISCREG_TTBR1_EL1; 168710037SARM gem5 Developers case 2: 168810037SARM gem5 Developers return MISCREG_TCR_EL1; 168910037SARM gem5 Developers } 169010037SARM gem5 Developers break; 169110037SARM gem5 Developers } 169210037SARM gem5 Developers break; 169310037SARM gem5 Developers case 4: 169410037SARM gem5 Developers switch (crm) { 169510037SARM gem5 Developers case 0: 169610037SARM gem5 Developers switch (op2) { 169710037SARM gem5 Developers case 0: 169810037SARM gem5 Developers return MISCREG_TTBR0_EL2; 169912675Sgiacomo.travaglini@arm.com case 1: 170012675Sgiacomo.travaglini@arm.com return MISCREG_TTBR1_EL2; 170110037SARM gem5 Developers case 2: 170210037SARM gem5 Developers return MISCREG_TCR_EL2; 170310037SARM gem5 Developers } 170410037SARM gem5 Developers break; 170510037SARM gem5 Developers case 1: 170610037SARM gem5 Developers switch (op2) { 170710037SARM gem5 Developers case 0: 170810037SARM gem5 Developers return MISCREG_VTTBR_EL2; 170910037SARM gem5 Developers case 2: 171010037SARM gem5 Developers return MISCREG_VTCR_EL2; 171110037SARM gem5 Developers } 171210037SARM gem5 Developers break; 171310037SARM gem5 Developers } 171410037SARM gem5 Developers break; 171510037SARM gem5 Developers case 6: 171610037SARM gem5 Developers switch (crm) { 171710037SARM gem5 Developers case 0: 171810037SARM gem5 Developers switch (op2) { 171910037SARM gem5 Developers case 0: 172010037SARM gem5 Developers return MISCREG_TTBR0_EL3; 172110037SARM gem5 Developers case 2: 172210037SARM gem5 Developers return MISCREG_TCR_EL3; 172310037SARM gem5 Developers } 172410037SARM gem5 Developers break; 172510037SARM gem5 Developers } 172610037SARM gem5 Developers break; 172710037SARM gem5 Developers } 172810037SARM gem5 Developers break; 172910037SARM gem5 Developers case 3: 173010037SARM gem5 Developers switch (op1) { 173110037SARM gem5 Developers case 4: 173210037SARM gem5 Developers switch (crm) { 173310037SARM gem5 Developers case 0: 173410037SARM gem5 Developers switch (op2) { 173510037SARM gem5 Developers case 0: 173610037SARM gem5 Developers return MISCREG_DACR32_EL2; 173710037SARM gem5 Developers } 173810037SARM gem5 Developers break; 173910037SARM gem5 Developers } 174010037SARM gem5 Developers break; 174110037SARM gem5 Developers } 174210037SARM gem5 Developers break; 174310037SARM gem5 Developers case 4: 174410037SARM gem5 Developers switch (op1) { 174510037SARM gem5 Developers case 0: 174610037SARM gem5 Developers switch (crm) { 174710037SARM gem5 Developers case 0: 174810037SARM gem5 Developers switch (op2) { 174910037SARM gem5 Developers case 0: 175010037SARM gem5 Developers return MISCREG_SPSR_EL1; 175110037SARM gem5 Developers case 1: 175210037SARM gem5 Developers return MISCREG_ELR_EL1; 175310037SARM gem5 Developers } 175410037SARM gem5 Developers break; 175510037SARM gem5 Developers case 1: 175610037SARM gem5 Developers switch (op2) { 175710037SARM gem5 Developers case 0: 175810037SARM gem5 Developers return MISCREG_SP_EL0; 175910037SARM gem5 Developers } 176010037SARM gem5 Developers break; 176110037SARM gem5 Developers case 2: 176210037SARM gem5 Developers switch (op2) { 176310037SARM gem5 Developers case 0: 176410037SARM gem5 Developers return MISCREG_SPSEL; 176510037SARM gem5 Developers case 2: 176610037SARM gem5 Developers return MISCREG_CURRENTEL; 176710037SARM gem5 Developers } 176810037SARM gem5 Developers break; 176910037SARM gem5 Developers } 177010037SARM gem5 Developers break; 177110037SARM gem5 Developers case 3: 177210037SARM gem5 Developers switch (crm) { 177310037SARM gem5 Developers case 2: 177410037SARM gem5 Developers switch (op2) { 177510037SARM gem5 Developers case 0: 177610037SARM gem5 Developers return MISCREG_NZCV; 177710037SARM gem5 Developers case 1: 177810037SARM gem5 Developers return MISCREG_DAIF; 177910037SARM gem5 Developers } 178010037SARM gem5 Developers break; 178110037SARM gem5 Developers case 4: 178210037SARM gem5 Developers switch (op2) { 178310037SARM gem5 Developers case 0: 178410037SARM gem5 Developers return MISCREG_FPCR; 178510037SARM gem5 Developers case 1: 178610037SARM gem5 Developers return MISCREG_FPSR; 178710037SARM gem5 Developers } 178810037SARM gem5 Developers break; 178910037SARM gem5 Developers case 5: 179010037SARM gem5 Developers switch (op2) { 179110037SARM gem5 Developers case 0: 179210037SARM gem5 Developers return MISCREG_DSPSR_EL0; 179310037SARM gem5 Developers case 1: 179410037SARM gem5 Developers return MISCREG_DLR_EL0; 179510037SARM gem5 Developers } 179610037SARM gem5 Developers break; 179710037SARM gem5 Developers } 179810037SARM gem5 Developers break; 179910037SARM gem5 Developers case 4: 180010037SARM gem5 Developers switch (crm) { 180110037SARM gem5 Developers case 0: 180210037SARM gem5 Developers switch (op2) { 180310037SARM gem5 Developers case 0: 180410037SARM gem5 Developers return MISCREG_SPSR_EL2; 180510037SARM gem5 Developers case 1: 180610037SARM gem5 Developers return MISCREG_ELR_EL2; 180710037SARM gem5 Developers } 180810037SARM gem5 Developers break; 180910037SARM gem5 Developers case 1: 181010037SARM gem5 Developers switch (op2) { 181110037SARM gem5 Developers case 0: 181210037SARM gem5 Developers return MISCREG_SP_EL1; 181310037SARM gem5 Developers } 181410037SARM gem5 Developers break; 181510037SARM gem5 Developers case 3: 181610037SARM gem5 Developers switch (op2) { 181710037SARM gem5 Developers case 0: 181810037SARM gem5 Developers return MISCREG_SPSR_IRQ_AA64; 181910037SARM gem5 Developers case 1: 182010037SARM gem5 Developers return MISCREG_SPSR_ABT_AA64; 182110037SARM gem5 Developers case 2: 182210037SARM gem5 Developers return MISCREG_SPSR_UND_AA64; 182310037SARM gem5 Developers case 3: 182410037SARM gem5 Developers return MISCREG_SPSR_FIQ_AA64; 182510037SARM gem5 Developers } 182610037SARM gem5 Developers break; 182710037SARM gem5 Developers } 182810037SARM gem5 Developers break; 182910037SARM gem5 Developers case 6: 183010037SARM gem5 Developers switch (crm) { 183110037SARM gem5 Developers case 0: 183210037SARM gem5 Developers switch (op2) { 183310037SARM gem5 Developers case 0: 183410037SARM gem5 Developers return MISCREG_SPSR_EL3; 183510037SARM gem5 Developers case 1: 183610037SARM gem5 Developers return MISCREG_ELR_EL3; 183710037SARM gem5 Developers } 183810037SARM gem5 Developers break; 183910037SARM gem5 Developers case 1: 184010037SARM gem5 Developers switch (op2) { 184110037SARM gem5 Developers case 0: 184210037SARM gem5 Developers return MISCREG_SP_EL2; 184310037SARM gem5 Developers } 184410037SARM gem5 Developers break; 184510037SARM gem5 Developers } 184610037SARM gem5 Developers break; 184710037SARM gem5 Developers } 184810037SARM gem5 Developers break; 184910037SARM gem5 Developers case 5: 185010037SARM gem5 Developers switch (op1) { 185110037SARM gem5 Developers case 0: 185210037SARM gem5 Developers switch (crm) { 185310037SARM gem5 Developers case 1: 185410037SARM gem5 Developers switch (op2) { 185510037SARM gem5 Developers case 0: 185610037SARM gem5 Developers return MISCREG_AFSR0_EL1; 185710037SARM gem5 Developers case 1: 185810037SARM gem5 Developers return MISCREG_AFSR1_EL1; 185910037SARM gem5 Developers } 186010037SARM gem5 Developers break; 186110037SARM gem5 Developers case 2: 186210037SARM gem5 Developers switch (op2) { 186310037SARM gem5 Developers case 0: 186410037SARM gem5 Developers return MISCREG_ESR_EL1; 186510037SARM gem5 Developers } 186610037SARM gem5 Developers break; 186712815Sgiacomo.travaglini@arm.com case 3: 186812815Sgiacomo.travaglini@arm.com switch (op2) { 186912815Sgiacomo.travaglini@arm.com case 0: 187012815Sgiacomo.travaglini@arm.com return MISCREG_ERRIDR_EL1; 187112815Sgiacomo.travaglini@arm.com case 1: 187212815Sgiacomo.travaglini@arm.com return MISCREG_ERRSELR_EL1; 187312815Sgiacomo.travaglini@arm.com } 187412815Sgiacomo.travaglini@arm.com break; 187512815Sgiacomo.travaglini@arm.com case 4: 187612815Sgiacomo.travaglini@arm.com switch (op2) { 187712815Sgiacomo.travaglini@arm.com case 0: 187812815Sgiacomo.travaglini@arm.com return MISCREG_ERXFR_EL1; 187912815Sgiacomo.travaglini@arm.com case 1: 188012815Sgiacomo.travaglini@arm.com return MISCREG_ERXCTLR_EL1; 188112815Sgiacomo.travaglini@arm.com case 2: 188212815Sgiacomo.travaglini@arm.com return MISCREG_ERXSTATUS_EL1; 188312815Sgiacomo.travaglini@arm.com case 3: 188412815Sgiacomo.travaglini@arm.com return MISCREG_ERXADDR_EL1; 188512815Sgiacomo.travaglini@arm.com } 188612815Sgiacomo.travaglini@arm.com break; 188712815Sgiacomo.travaglini@arm.com case 5: 188812815Sgiacomo.travaglini@arm.com switch (op2) { 188912815Sgiacomo.travaglini@arm.com case 0: 189012815Sgiacomo.travaglini@arm.com return MISCREG_ERXMISC0_EL1; 189112815Sgiacomo.travaglini@arm.com case 1: 189212815Sgiacomo.travaglini@arm.com return MISCREG_ERXMISC1_EL1; 189312815Sgiacomo.travaglini@arm.com } 189412815Sgiacomo.travaglini@arm.com break; 189510037SARM gem5 Developers } 189610037SARM gem5 Developers break; 189710037SARM gem5 Developers case 4: 189810037SARM gem5 Developers switch (crm) { 189910037SARM gem5 Developers case 0: 190010037SARM gem5 Developers switch (op2) { 190110037SARM gem5 Developers case 1: 190210037SARM gem5 Developers return MISCREG_IFSR32_EL2; 190310037SARM gem5 Developers } 190410037SARM gem5 Developers break; 190510037SARM gem5 Developers case 1: 190610037SARM gem5 Developers switch (op2) { 190710037SARM gem5 Developers case 0: 190810037SARM gem5 Developers return MISCREG_AFSR0_EL2; 190910037SARM gem5 Developers case 1: 191010037SARM gem5 Developers return MISCREG_AFSR1_EL2; 191110037SARM gem5 Developers } 191210037SARM gem5 Developers break; 191310037SARM gem5 Developers case 2: 191410037SARM gem5 Developers switch (op2) { 191510037SARM gem5 Developers case 0: 191610037SARM gem5 Developers return MISCREG_ESR_EL2; 191712815Sgiacomo.travaglini@arm.com case 3: 191812815Sgiacomo.travaglini@arm.com return MISCREG_VSESR_EL2; 191910037SARM gem5 Developers } 192010037SARM gem5 Developers break; 192110037SARM gem5 Developers case 3: 192210037SARM gem5 Developers switch (op2) { 192310037SARM gem5 Developers case 0: 192410037SARM gem5 Developers return MISCREG_FPEXC32_EL2; 192510037SARM gem5 Developers } 192610037SARM gem5 Developers break; 192710037SARM gem5 Developers } 192810037SARM gem5 Developers break; 192910037SARM gem5 Developers case 6: 193010037SARM gem5 Developers switch (crm) { 193110037SARM gem5 Developers case 1: 193210037SARM gem5 Developers switch (op2) { 193310037SARM gem5 Developers case 0: 193410037SARM gem5 Developers return MISCREG_AFSR0_EL3; 193510037SARM gem5 Developers case 1: 193610037SARM gem5 Developers return MISCREG_AFSR1_EL3; 193710037SARM gem5 Developers } 193810037SARM gem5 Developers break; 193910037SARM gem5 Developers case 2: 194010037SARM gem5 Developers switch (op2) { 194110037SARM gem5 Developers case 0: 194210037SARM gem5 Developers return MISCREG_ESR_EL3; 194310037SARM gem5 Developers } 194410037SARM gem5 Developers break; 194510037SARM gem5 Developers } 194610037SARM gem5 Developers break; 194710037SARM gem5 Developers } 194810037SARM gem5 Developers break; 194910037SARM gem5 Developers case 6: 195010037SARM gem5 Developers switch (op1) { 195110037SARM gem5 Developers case 0: 195210037SARM gem5 Developers switch (crm) { 195310037SARM gem5 Developers case 0: 195410037SARM gem5 Developers switch (op2) { 195510037SARM gem5 Developers case 0: 195610037SARM gem5 Developers return MISCREG_FAR_EL1; 195710037SARM gem5 Developers } 195810037SARM gem5 Developers break; 195910037SARM gem5 Developers } 196010037SARM gem5 Developers break; 196110037SARM gem5 Developers case 4: 196210037SARM gem5 Developers switch (crm) { 196310037SARM gem5 Developers case 0: 196410037SARM gem5 Developers switch (op2) { 196510037SARM gem5 Developers case 0: 196610037SARM gem5 Developers return MISCREG_FAR_EL2; 196710037SARM gem5 Developers case 4: 196810037SARM gem5 Developers return MISCREG_HPFAR_EL2; 196910037SARM gem5 Developers } 197010037SARM gem5 Developers break; 197110037SARM gem5 Developers } 197210037SARM gem5 Developers break; 197310037SARM gem5 Developers case 6: 197410037SARM gem5 Developers switch (crm) { 197510037SARM gem5 Developers case 0: 197610037SARM gem5 Developers switch (op2) { 197710037SARM gem5 Developers case 0: 197810037SARM gem5 Developers return MISCREG_FAR_EL3; 197910037SARM gem5 Developers } 198010037SARM gem5 Developers break; 198110037SARM gem5 Developers } 198210037SARM gem5 Developers break; 198310037SARM gem5 Developers } 198410037SARM gem5 Developers break; 198510037SARM gem5 Developers case 7: 198610037SARM gem5 Developers switch (op1) { 198710037SARM gem5 Developers case 0: 198810037SARM gem5 Developers switch (crm) { 198910037SARM gem5 Developers case 4: 199010037SARM gem5 Developers switch (op2) { 199110037SARM gem5 Developers case 0: 199210037SARM gem5 Developers return MISCREG_PAR_EL1; 199310037SARM gem5 Developers } 199410037SARM gem5 Developers break; 199510037SARM gem5 Developers } 199610037SARM gem5 Developers break; 199710037SARM gem5 Developers } 199810037SARM gem5 Developers break; 199910037SARM gem5 Developers case 9: 200010037SARM gem5 Developers switch (op1) { 200110037SARM gem5 Developers case 0: 200210037SARM gem5 Developers switch (crm) { 200310037SARM gem5 Developers case 14: 200410037SARM gem5 Developers switch (op2) { 200510037SARM gem5 Developers case 1: 200610037SARM gem5 Developers return MISCREG_PMINTENSET_EL1; 200710037SARM gem5 Developers case 2: 200810037SARM gem5 Developers return MISCREG_PMINTENCLR_EL1; 200910037SARM gem5 Developers } 201010037SARM gem5 Developers break; 201110037SARM gem5 Developers } 201210037SARM gem5 Developers break; 201310037SARM gem5 Developers case 3: 201410037SARM gem5 Developers switch (crm) { 201510037SARM gem5 Developers case 12: 201610037SARM gem5 Developers switch (op2) { 201710037SARM gem5 Developers case 0: 201810037SARM gem5 Developers return MISCREG_PMCR_EL0; 201910037SARM gem5 Developers case 1: 202010037SARM gem5 Developers return MISCREG_PMCNTENSET_EL0; 202110037SARM gem5 Developers case 2: 202210037SARM gem5 Developers return MISCREG_PMCNTENCLR_EL0; 202310037SARM gem5 Developers case 3: 202410037SARM gem5 Developers return MISCREG_PMOVSCLR_EL0; 202510037SARM gem5 Developers case 4: 202610037SARM gem5 Developers return MISCREG_PMSWINC_EL0; 202710037SARM gem5 Developers case 5: 202810037SARM gem5 Developers return MISCREG_PMSELR_EL0; 202910037SARM gem5 Developers case 6: 203010037SARM gem5 Developers return MISCREG_PMCEID0_EL0; 203110037SARM gem5 Developers case 7: 203210037SARM gem5 Developers return MISCREG_PMCEID1_EL0; 203310037SARM gem5 Developers } 203410037SARM gem5 Developers break; 203510037SARM gem5 Developers case 13: 203610037SARM gem5 Developers switch (op2) { 203710037SARM gem5 Developers case 0: 203810037SARM gem5 Developers return MISCREG_PMCCNTR_EL0; 203910037SARM gem5 Developers case 1: 204010604SAndreas.Sandberg@ARM.com return MISCREG_PMXEVTYPER_EL0; 204110037SARM gem5 Developers case 2: 204210037SARM gem5 Developers return MISCREG_PMXEVCNTR_EL0; 204310037SARM gem5 Developers } 204410037SARM gem5 Developers break; 204510037SARM gem5 Developers case 14: 204610037SARM gem5 Developers switch (op2) { 204710037SARM gem5 Developers case 0: 204810037SARM gem5 Developers return MISCREG_PMUSERENR_EL0; 204910037SARM gem5 Developers case 3: 205010037SARM gem5 Developers return MISCREG_PMOVSSET_EL0; 205110037SARM gem5 Developers } 205210037SARM gem5 Developers break; 205310037SARM gem5 Developers } 205410037SARM gem5 Developers break; 205510037SARM gem5 Developers } 205610037SARM gem5 Developers break; 205710037SARM gem5 Developers case 10: 205810037SARM gem5 Developers switch (op1) { 205910037SARM gem5 Developers case 0: 206010037SARM gem5 Developers switch (crm) { 206110037SARM gem5 Developers case 2: 206210037SARM gem5 Developers switch (op2) { 206310037SARM gem5 Developers case 0: 206410037SARM gem5 Developers return MISCREG_MAIR_EL1; 206510037SARM gem5 Developers } 206610037SARM gem5 Developers break; 206710037SARM gem5 Developers case 3: 206810037SARM gem5 Developers switch (op2) { 206910037SARM gem5 Developers case 0: 207010037SARM gem5 Developers return MISCREG_AMAIR_EL1; 207110037SARM gem5 Developers } 207210037SARM gem5 Developers break; 207310037SARM gem5 Developers } 207410037SARM gem5 Developers break; 207510037SARM gem5 Developers case 4: 207610037SARM gem5 Developers switch (crm) { 207710037SARM gem5 Developers case 2: 207810037SARM gem5 Developers switch (op2) { 207910037SARM gem5 Developers case 0: 208010037SARM gem5 Developers return MISCREG_MAIR_EL2; 208110037SARM gem5 Developers } 208210037SARM gem5 Developers break; 208310037SARM gem5 Developers case 3: 208410037SARM gem5 Developers switch (op2) { 208510037SARM gem5 Developers case 0: 208610037SARM gem5 Developers return MISCREG_AMAIR_EL2; 208710037SARM gem5 Developers } 208810037SARM gem5 Developers break; 208910037SARM gem5 Developers } 209010037SARM gem5 Developers break; 209110037SARM gem5 Developers case 6: 209210037SARM gem5 Developers switch (crm) { 209310037SARM gem5 Developers case 2: 209410037SARM gem5 Developers switch (op2) { 209510037SARM gem5 Developers case 0: 209610037SARM gem5 Developers return MISCREG_MAIR_EL3; 209710037SARM gem5 Developers } 209810037SARM gem5 Developers break; 209910037SARM gem5 Developers case 3: 210010037SARM gem5 Developers switch (op2) { 210110037SARM gem5 Developers case 0: 210210037SARM gem5 Developers return MISCREG_AMAIR_EL3; 210310037SARM gem5 Developers } 210410037SARM gem5 Developers break; 210510037SARM gem5 Developers } 210610037SARM gem5 Developers break; 210710037SARM gem5 Developers } 210810037SARM gem5 Developers break; 210910037SARM gem5 Developers case 11: 211010037SARM gem5 Developers switch (op1) { 211110037SARM gem5 Developers case 1: 211210037SARM gem5 Developers switch (crm) { 211310037SARM gem5 Developers case 0: 211410037SARM gem5 Developers switch (op2) { 211510037SARM gem5 Developers case 2: 211610037SARM gem5 Developers return MISCREG_L2CTLR_EL1; 211710037SARM gem5 Developers case 3: 211810037SARM gem5 Developers return MISCREG_L2ECTLR_EL1; 211910037SARM gem5 Developers } 212010037SARM gem5 Developers break; 212110037SARM gem5 Developers } 212212711Sgiacomo.travaglini@arm.com M5_FALLTHROUGH; 212312711Sgiacomo.travaglini@arm.com default: 212412711Sgiacomo.travaglini@arm.com // S3_<op1>_11_<Cm>_<op2> 212512711Sgiacomo.travaglini@arm.com return MISCREG_IMPDEF_UNIMPL; 212610037SARM gem5 Developers } 212712711Sgiacomo.travaglini@arm.com M5_UNREACHABLE; 212810037SARM gem5 Developers case 12: 212910037SARM gem5 Developers switch (op1) { 213010037SARM gem5 Developers case 0: 213110037SARM gem5 Developers switch (crm) { 213210037SARM gem5 Developers case 0: 213310037SARM gem5 Developers switch (op2) { 213410037SARM gem5 Developers case 0: 213510037SARM gem5 Developers return MISCREG_VBAR_EL1; 213610037SARM gem5 Developers case 1: 213710037SARM gem5 Developers return MISCREG_RVBAR_EL1; 213810037SARM gem5 Developers } 213910037SARM gem5 Developers break; 214010037SARM gem5 Developers case 1: 214110037SARM gem5 Developers switch (op2) { 214210037SARM gem5 Developers case 0: 214310037SARM gem5 Developers return MISCREG_ISR_EL1; 214412815Sgiacomo.travaglini@arm.com case 1: 214512815Sgiacomo.travaglini@arm.com return MISCREG_DISR_EL1; 214610037SARM gem5 Developers } 214710037SARM gem5 Developers break; 214810037SARM gem5 Developers } 214910037SARM gem5 Developers break; 215010037SARM gem5 Developers case 4: 215110037SARM gem5 Developers switch (crm) { 215210037SARM gem5 Developers case 0: 215310037SARM gem5 Developers switch (op2) { 215410037SARM gem5 Developers case 0: 215510037SARM gem5 Developers return MISCREG_VBAR_EL2; 215610037SARM gem5 Developers case 1: 215710037SARM gem5 Developers return MISCREG_RVBAR_EL2; 215810037SARM gem5 Developers } 215910037SARM gem5 Developers break; 216012815Sgiacomo.travaglini@arm.com case 1: 216112815Sgiacomo.travaglini@arm.com switch (op2) { 216212815Sgiacomo.travaglini@arm.com case 1: 216312815Sgiacomo.travaglini@arm.com return MISCREG_VDISR_EL2; 216412815Sgiacomo.travaglini@arm.com } 216512815Sgiacomo.travaglini@arm.com break; 216610037SARM gem5 Developers } 216710037SARM gem5 Developers break; 216810037SARM gem5 Developers case 6: 216910037SARM gem5 Developers switch (crm) { 217010037SARM gem5 Developers case 0: 217110037SARM gem5 Developers switch (op2) { 217210037SARM gem5 Developers case 0: 217310037SARM gem5 Developers return MISCREG_VBAR_EL3; 217410037SARM gem5 Developers case 1: 217510037SARM gem5 Developers return MISCREG_RVBAR_EL3; 217610037SARM gem5 Developers case 2: 217710037SARM gem5 Developers return MISCREG_RMR_EL3; 217810037SARM gem5 Developers } 217910037SARM gem5 Developers break; 218010037SARM gem5 Developers } 218110037SARM gem5 Developers break; 218210037SARM gem5 Developers } 218310037SARM gem5 Developers break; 218410037SARM gem5 Developers case 13: 218510037SARM gem5 Developers switch (op1) { 218610037SARM gem5 Developers case 0: 218710037SARM gem5 Developers switch (crm) { 218810037SARM gem5 Developers case 0: 218910037SARM gem5 Developers switch (op2) { 219010037SARM gem5 Developers case 1: 219110037SARM gem5 Developers return MISCREG_CONTEXTIDR_EL1; 219210037SARM gem5 Developers case 4: 219310037SARM gem5 Developers return MISCREG_TPIDR_EL1; 219410037SARM gem5 Developers } 219510037SARM gem5 Developers break; 219610037SARM gem5 Developers } 219710037SARM gem5 Developers break; 219810037SARM gem5 Developers case 3: 219910037SARM gem5 Developers switch (crm) { 220010037SARM gem5 Developers case 0: 220110037SARM gem5 Developers switch (op2) { 220210037SARM gem5 Developers case 2: 220310037SARM gem5 Developers return MISCREG_TPIDR_EL0; 220410037SARM gem5 Developers case 3: 220510037SARM gem5 Developers return MISCREG_TPIDRRO_EL0; 220610037SARM gem5 Developers } 220710037SARM gem5 Developers break; 220810037SARM gem5 Developers } 220910037SARM gem5 Developers break; 221010037SARM gem5 Developers case 4: 221110037SARM gem5 Developers switch (crm) { 221210037SARM gem5 Developers case 0: 221310037SARM gem5 Developers switch (op2) { 221410856SCurtis.Dunham@arm.com case 1: 221510856SCurtis.Dunham@arm.com return MISCREG_CONTEXTIDR_EL2; 221610037SARM gem5 Developers case 2: 221710037SARM gem5 Developers return MISCREG_TPIDR_EL2; 221810037SARM gem5 Developers } 221910037SARM gem5 Developers break; 222010037SARM gem5 Developers } 222110037SARM gem5 Developers break; 222210037SARM gem5 Developers case 6: 222310037SARM gem5 Developers switch (crm) { 222410037SARM gem5 Developers case 0: 222510037SARM gem5 Developers switch (op2) { 222610037SARM gem5 Developers case 2: 222710037SARM gem5 Developers return MISCREG_TPIDR_EL3; 222810037SARM gem5 Developers } 222910037SARM gem5 Developers break; 223010037SARM gem5 Developers } 223110037SARM gem5 Developers break; 223210037SARM gem5 Developers } 223310037SARM gem5 Developers break; 223410037SARM gem5 Developers case 14: 223510037SARM gem5 Developers switch (op1) { 223610037SARM gem5 Developers case 0: 223710037SARM gem5 Developers switch (crm) { 223810037SARM gem5 Developers case 1: 223910037SARM gem5 Developers switch (op2) { 224010037SARM gem5 Developers case 0: 224110037SARM gem5 Developers return MISCREG_CNTKCTL_EL1; 224210037SARM gem5 Developers } 224310037SARM gem5 Developers break; 224410037SARM gem5 Developers } 224510037SARM gem5 Developers break; 224610037SARM gem5 Developers case 3: 224710037SARM gem5 Developers switch (crm) { 224810037SARM gem5 Developers case 0: 224910037SARM gem5 Developers switch (op2) { 225010037SARM gem5 Developers case 0: 225110037SARM gem5 Developers return MISCREG_CNTFRQ_EL0; 225210037SARM gem5 Developers case 1: 225310037SARM gem5 Developers return MISCREG_CNTPCT_EL0; 225410037SARM gem5 Developers case 2: 225510037SARM gem5 Developers return MISCREG_CNTVCT_EL0; 225610037SARM gem5 Developers } 225710037SARM gem5 Developers break; 225810037SARM gem5 Developers case 2: 225910037SARM gem5 Developers switch (op2) { 226010037SARM gem5 Developers case 0: 226110037SARM gem5 Developers return MISCREG_CNTP_TVAL_EL0; 226210037SARM gem5 Developers case 1: 226310037SARM gem5 Developers return MISCREG_CNTP_CTL_EL0; 226410037SARM gem5 Developers case 2: 226510037SARM gem5 Developers return MISCREG_CNTP_CVAL_EL0; 226610037SARM gem5 Developers } 226710037SARM gem5 Developers break; 226810037SARM gem5 Developers case 3: 226910037SARM gem5 Developers switch (op2) { 227010037SARM gem5 Developers case 0: 227110037SARM gem5 Developers return MISCREG_CNTV_TVAL_EL0; 227210037SARM gem5 Developers case 1: 227310037SARM gem5 Developers return MISCREG_CNTV_CTL_EL0; 227410037SARM gem5 Developers case 2: 227510037SARM gem5 Developers return MISCREG_CNTV_CVAL_EL0; 227610037SARM gem5 Developers } 227710037SARM gem5 Developers break; 227810037SARM gem5 Developers case 8: 227910037SARM gem5 Developers switch (op2) { 228010037SARM gem5 Developers case 0: 228110037SARM gem5 Developers return MISCREG_PMEVCNTR0_EL0; 228210037SARM gem5 Developers case 1: 228310037SARM gem5 Developers return MISCREG_PMEVCNTR1_EL0; 228410037SARM gem5 Developers case 2: 228510037SARM gem5 Developers return MISCREG_PMEVCNTR2_EL0; 228610037SARM gem5 Developers case 3: 228710037SARM gem5 Developers return MISCREG_PMEVCNTR3_EL0; 228810037SARM gem5 Developers case 4: 228910037SARM gem5 Developers return MISCREG_PMEVCNTR4_EL0; 229010037SARM gem5 Developers case 5: 229110037SARM gem5 Developers return MISCREG_PMEVCNTR5_EL0; 229210037SARM gem5 Developers } 229310037SARM gem5 Developers break; 229410037SARM gem5 Developers case 12: 229510037SARM gem5 Developers switch (op2) { 229610037SARM gem5 Developers case 0: 229710037SARM gem5 Developers return MISCREG_PMEVTYPER0_EL0; 229810037SARM gem5 Developers case 1: 229910037SARM gem5 Developers return MISCREG_PMEVTYPER1_EL0; 230010037SARM gem5 Developers case 2: 230110037SARM gem5 Developers return MISCREG_PMEVTYPER2_EL0; 230210037SARM gem5 Developers case 3: 230310037SARM gem5 Developers return MISCREG_PMEVTYPER3_EL0; 230410037SARM gem5 Developers case 4: 230510037SARM gem5 Developers return MISCREG_PMEVTYPER4_EL0; 230610037SARM gem5 Developers case 5: 230710037SARM gem5 Developers return MISCREG_PMEVTYPER5_EL0; 230810037SARM gem5 Developers } 230910037SARM gem5 Developers break; 231010604SAndreas.Sandberg@ARM.com case 15: 231110604SAndreas.Sandberg@ARM.com switch (op2) { 231210604SAndreas.Sandberg@ARM.com case 7: 231310604SAndreas.Sandberg@ARM.com return MISCREG_PMCCFILTR_EL0; 231410604SAndreas.Sandberg@ARM.com } 231510037SARM gem5 Developers } 231610037SARM gem5 Developers break; 231710037SARM gem5 Developers case 4: 231810037SARM gem5 Developers switch (crm) { 231910037SARM gem5 Developers case 0: 232010037SARM gem5 Developers switch (op2) { 232110037SARM gem5 Developers case 3: 232210037SARM gem5 Developers return MISCREG_CNTVOFF_EL2; 232310037SARM gem5 Developers } 232410037SARM gem5 Developers break; 232510037SARM gem5 Developers case 1: 232610037SARM gem5 Developers switch (op2) { 232710037SARM gem5 Developers case 0: 232810037SARM gem5 Developers return MISCREG_CNTHCTL_EL2; 232910037SARM gem5 Developers } 233010037SARM gem5 Developers break; 233110037SARM gem5 Developers case 2: 233210037SARM gem5 Developers switch (op2) { 233310037SARM gem5 Developers case 0: 233410037SARM gem5 Developers return MISCREG_CNTHP_TVAL_EL2; 233510037SARM gem5 Developers case 1: 233610037SARM gem5 Developers return MISCREG_CNTHP_CTL_EL2; 233710037SARM gem5 Developers case 2: 233810037SARM gem5 Developers return MISCREG_CNTHP_CVAL_EL2; 233910037SARM gem5 Developers } 234010037SARM gem5 Developers break; 234112816Sgiacomo.travaglini@arm.com case 3: 234212816Sgiacomo.travaglini@arm.com switch (op2) { 234312816Sgiacomo.travaglini@arm.com case 0: 234412816Sgiacomo.travaglini@arm.com return MISCREG_CNTHV_TVAL_EL2; 234512816Sgiacomo.travaglini@arm.com case 1: 234612816Sgiacomo.travaglini@arm.com return MISCREG_CNTHV_CTL_EL2; 234712816Sgiacomo.travaglini@arm.com case 2: 234812816Sgiacomo.travaglini@arm.com return MISCREG_CNTHV_CVAL_EL2; 234912816Sgiacomo.travaglini@arm.com } 235012816Sgiacomo.travaglini@arm.com break; 235110037SARM gem5 Developers } 235210037SARM gem5 Developers break; 235310037SARM gem5 Developers case 7: 235410037SARM gem5 Developers switch (crm) { 235510037SARM gem5 Developers case 2: 235610037SARM gem5 Developers switch (op2) { 235710037SARM gem5 Developers case 0: 235810037SARM gem5 Developers return MISCREG_CNTPS_TVAL_EL1; 235910037SARM gem5 Developers case 1: 236010037SARM gem5 Developers return MISCREG_CNTPS_CTL_EL1; 236110037SARM gem5 Developers case 2: 236210037SARM gem5 Developers return MISCREG_CNTPS_CVAL_EL1; 236310037SARM gem5 Developers } 236410037SARM gem5 Developers break; 236510037SARM gem5 Developers } 236610037SARM gem5 Developers break; 236710037SARM gem5 Developers } 236810037SARM gem5 Developers break; 236910037SARM gem5 Developers case 15: 237010037SARM gem5 Developers switch (op1) { 237110037SARM gem5 Developers case 0: 237210037SARM gem5 Developers switch (crm) { 237310037SARM gem5 Developers case 0: 237410037SARM gem5 Developers switch (op2) { 237510037SARM gem5 Developers case 0: 237610037SARM gem5 Developers return MISCREG_IL1DATA0_EL1; 237710037SARM gem5 Developers case 1: 237810037SARM gem5 Developers return MISCREG_IL1DATA1_EL1; 237910037SARM gem5 Developers case 2: 238010037SARM gem5 Developers return MISCREG_IL1DATA2_EL1; 238110037SARM gem5 Developers case 3: 238210037SARM gem5 Developers return MISCREG_IL1DATA3_EL1; 238310037SARM gem5 Developers } 238410037SARM gem5 Developers break; 238510037SARM gem5 Developers case 1: 238610037SARM gem5 Developers switch (op2) { 238710037SARM gem5 Developers case 0: 238810037SARM gem5 Developers return MISCREG_DL1DATA0_EL1; 238910037SARM gem5 Developers case 1: 239010037SARM gem5 Developers return MISCREG_DL1DATA1_EL1; 239110037SARM gem5 Developers case 2: 239210037SARM gem5 Developers return MISCREG_DL1DATA2_EL1; 239310037SARM gem5 Developers case 3: 239410037SARM gem5 Developers return MISCREG_DL1DATA3_EL1; 239510037SARM gem5 Developers case 4: 239610037SARM gem5 Developers return MISCREG_DL1DATA4_EL1; 239710037SARM gem5 Developers } 239810037SARM gem5 Developers break; 239910037SARM gem5 Developers } 240010037SARM gem5 Developers break; 240110037SARM gem5 Developers case 1: 240210037SARM gem5 Developers switch (crm) { 240310037SARM gem5 Developers case 0: 240410037SARM gem5 Developers switch (op2) { 240510037SARM gem5 Developers case 0: 240610037SARM gem5 Developers return MISCREG_L2ACTLR_EL1; 240710037SARM gem5 Developers } 240810037SARM gem5 Developers break; 240910037SARM gem5 Developers case 2: 241010037SARM gem5 Developers switch (op2) { 241110037SARM gem5 Developers case 0: 241210037SARM gem5 Developers return MISCREG_CPUACTLR_EL1; 241310037SARM gem5 Developers case 1: 241410037SARM gem5 Developers return MISCREG_CPUECTLR_EL1; 241510037SARM gem5 Developers case 2: 241610037SARM gem5 Developers return MISCREG_CPUMERRSR_EL1; 241710037SARM gem5 Developers case 3: 241810037SARM gem5 Developers return MISCREG_L2MERRSR_EL1; 241910037SARM gem5 Developers } 242010037SARM gem5 Developers break; 242110037SARM gem5 Developers case 3: 242210037SARM gem5 Developers switch (op2) { 242310037SARM gem5 Developers case 0: 242410037SARM gem5 Developers return MISCREG_CBAR_EL1; 242510037SARM gem5 Developers 242610037SARM gem5 Developers } 242710037SARM gem5 Developers break; 242810037SARM gem5 Developers } 242910037SARM gem5 Developers break; 243010037SARM gem5 Developers } 243112711Sgiacomo.travaglini@arm.com // S3_<op1>_15_<Cm>_<op2> 243212711Sgiacomo.travaglini@arm.com return MISCREG_IMPDEF_UNIMPL; 243310037SARM gem5 Developers } 243410037SARM gem5 Developers break; 243510037SARM gem5 Developers } 243610037SARM gem5 Developers 243710037SARM gem5 Developers return MISCREG_UNKNOWN; 243810037SARM gem5 Developers} 243910037SARM gem5 Developers 244012479SCurtis.Dunham@arm.combitset<NUM_MISCREG_INFOS> miscRegInfo[NUM_MISCREGS]; // initialized below 244112479SCurtis.Dunham@arm.com 244212479SCurtis.Dunham@arm.comvoid 244312479SCurtis.Dunham@arm.comISA::initializeMiscRegMetadata() 244412479SCurtis.Dunham@arm.com{ 244512479SCurtis.Dunham@arm.com // the MiscReg metadata tables are shared across all instances of the 244612479SCurtis.Dunham@arm.com // ISA object, so there's no need to initialize them multiple times. 244712479SCurtis.Dunham@arm.com static bool completed = false; 244812479SCurtis.Dunham@arm.com if (completed) 244912479SCurtis.Dunham@arm.com return; 245012479SCurtis.Dunham@arm.com 245112661Sgiacomo.travaglini@arm.com // This boolean variable specifies if the system is running in aarch32 at 245212661Sgiacomo.travaglini@arm.com // EL3 (aarch32EL3 = true). It is false if EL3 is not implemented, or it 245312661Sgiacomo.travaglini@arm.com // is running in aarch64 (aarch32EL3 = false) 245412661Sgiacomo.travaglini@arm.com bool aarch32EL3 = haveSecurity && !highestELIs64; 245512661Sgiacomo.travaglini@arm.com 245612479SCurtis.Dunham@arm.com /** 245712479SCurtis.Dunham@arm.com * Some registers alias with others, and therefore need to be translated. 245812479SCurtis.Dunham@arm.com * When two mapping registers are given, they are the 32b lower and 245912479SCurtis.Dunham@arm.com * upper halves, respectively, of the 64b register being mapped. 246012479SCurtis.Dunham@arm.com * aligned with reference documentation ARM DDI 0487A.i pp 1540-1543 246112479SCurtis.Dunham@arm.com * 246212479SCurtis.Dunham@arm.com * NAM = "not architecturally mandated", 246312479SCurtis.Dunham@arm.com * from ARM DDI 0487A.i, template text 246412479SCurtis.Dunham@arm.com * "AArch64 System register ___ can be mapped to 246512479SCurtis.Dunham@arm.com * AArch32 System register ___, but this is not 246612479SCurtis.Dunham@arm.com * architecturally mandated." 246712479SCurtis.Dunham@arm.com */ 246812479SCurtis.Dunham@arm.com 246912479SCurtis.Dunham@arm.com InitReg(MISCREG_CPSR) 247012479SCurtis.Dunham@arm.com .allPrivileges(); 247112479SCurtis.Dunham@arm.com InitReg(MISCREG_SPSR) 247212479SCurtis.Dunham@arm.com .allPrivileges(); 247312479SCurtis.Dunham@arm.com InitReg(MISCREG_SPSR_FIQ) 247412479SCurtis.Dunham@arm.com .allPrivileges(); 247512479SCurtis.Dunham@arm.com InitReg(MISCREG_SPSR_IRQ) 247612479SCurtis.Dunham@arm.com .allPrivileges(); 247712479SCurtis.Dunham@arm.com InitReg(MISCREG_SPSR_SVC) 247812479SCurtis.Dunham@arm.com .allPrivileges(); 247912479SCurtis.Dunham@arm.com InitReg(MISCREG_SPSR_MON) 248012479SCurtis.Dunham@arm.com .allPrivileges(); 248112479SCurtis.Dunham@arm.com InitReg(MISCREG_SPSR_ABT) 248212479SCurtis.Dunham@arm.com .allPrivileges(); 248312479SCurtis.Dunham@arm.com InitReg(MISCREG_SPSR_HYP) 248412479SCurtis.Dunham@arm.com .allPrivileges(); 248512479SCurtis.Dunham@arm.com InitReg(MISCREG_SPSR_UND) 248612479SCurtis.Dunham@arm.com .allPrivileges(); 248712479SCurtis.Dunham@arm.com InitReg(MISCREG_ELR_HYP) 248812479SCurtis.Dunham@arm.com .allPrivileges(); 248912479SCurtis.Dunham@arm.com InitReg(MISCREG_FPSID) 249012479SCurtis.Dunham@arm.com .allPrivileges(); 249112479SCurtis.Dunham@arm.com InitReg(MISCREG_FPSCR) 249212479SCurtis.Dunham@arm.com .allPrivileges(); 249312479SCurtis.Dunham@arm.com InitReg(MISCREG_MVFR1) 249412479SCurtis.Dunham@arm.com .allPrivileges(); 249512479SCurtis.Dunham@arm.com InitReg(MISCREG_MVFR0) 249612479SCurtis.Dunham@arm.com .allPrivileges(); 249712479SCurtis.Dunham@arm.com InitReg(MISCREG_FPEXC) 249812479SCurtis.Dunham@arm.com .allPrivileges(); 249912479SCurtis.Dunham@arm.com 250012479SCurtis.Dunham@arm.com // Helper registers 250112479SCurtis.Dunham@arm.com InitReg(MISCREG_CPSR_MODE) 250212479SCurtis.Dunham@arm.com .allPrivileges(); 250312479SCurtis.Dunham@arm.com InitReg(MISCREG_CPSR_Q) 250412479SCurtis.Dunham@arm.com .allPrivileges(); 250512479SCurtis.Dunham@arm.com InitReg(MISCREG_FPSCR_EXC) 250612479SCurtis.Dunham@arm.com .allPrivileges(); 250712479SCurtis.Dunham@arm.com InitReg(MISCREG_FPSCR_QC) 250812479SCurtis.Dunham@arm.com .allPrivileges(); 250912479SCurtis.Dunham@arm.com InitReg(MISCREG_LOCKADDR) 251012479SCurtis.Dunham@arm.com .allPrivileges(); 251112479SCurtis.Dunham@arm.com InitReg(MISCREG_LOCKFLAG) 251212479SCurtis.Dunham@arm.com .allPrivileges(); 251312479SCurtis.Dunham@arm.com InitReg(MISCREG_PRRR_MAIR0) 251412479SCurtis.Dunham@arm.com .mutex() 251512479SCurtis.Dunham@arm.com .banked(); 251612479SCurtis.Dunham@arm.com InitReg(MISCREG_PRRR_MAIR0_NS) 251712479SCurtis.Dunham@arm.com .mutex() 251812661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 251912479SCurtis.Dunham@arm.com .bankedChild(); 252012479SCurtis.Dunham@arm.com InitReg(MISCREG_PRRR_MAIR0_S) 252112479SCurtis.Dunham@arm.com .mutex() 252212479SCurtis.Dunham@arm.com .bankedChild(); 252312479SCurtis.Dunham@arm.com InitReg(MISCREG_NMRR_MAIR1) 252412479SCurtis.Dunham@arm.com .mutex() 252512479SCurtis.Dunham@arm.com .banked(); 252612479SCurtis.Dunham@arm.com InitReg(MISCREG_NMRR_MAIR1_NS) 252712479SCurtis.Dunham@arm.com .mutex() 252812661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 252912479SCurtis.Dunham@arm.com .bankedChild(); 253012479SCurtis.Dunham@arm.com InitReg(MISCREG_NMRR_MAIR1_S) 253112479SCurtis.Dunham@arm.com .mutex() 253212479SCurtis.Dunham@arm.com .bankedChild(); 253312479SCurtis.Dunham@arm.com InitReg(MISCREG_PMXEVTYPER_PMCCFILTR) 253412479SCurtis.Dunham@arm.com .mutex(); 253512479SCurtis.Dunham@arm.com InitReg(MISCREG_SCTLR_RST) 253612479SCurtis.Dunham@arm.com .allPrivileges(); 253712479SCurtis.Dunham@arm.com InitReg(MISCREG_SEV_MAILBOX) 253812479SCurtis.Dunham@arm.com .allPrivileges(); 253912479SCurtis.Dunham@arm.com 254012479SCurtis.Dunham@arm.com // AArch32 CP14 registers 254112479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGDIDR) 254212479SCurtis.Dunham@arm.com .allPrivileges().monSecureWrite(0).monNonSecureWrite(0); 254312479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGDSCRint) 254412479SCurtis.Dunham@arm.com .allPrivileges().monSecureWrite(0).monNonSecureWrite(0); 254512479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGDCCINT) 254612479SCurtis.Dunham@arm.com .unimplemented() 254712479SCurtis.Dunham@arm.com .allPrivileges(); 254812479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGDTRTXint) 254912479SCurtis.Dunham@arm.com .unimplemented() 255012479SCurtis.Dunham@arm.com .allPrivileges(); 255112479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGDTRRXint) 255212479SCurtis.Dunham@arm.com .unimplemented() 255312479SCurtis.Dunham@arm.com .allPrivileges(); 255412479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGWFAR) 255512479SCurtis.Dunham@arm.com .unimplemented() 255612479SCurtis.Dunham@arm.com .allPrivileges(); 255712479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGVCR) 255812479SCurtis.Dunham@arm.com .unimplemented() 255912479SCurtis.Dunham@arm.com .allPrivileges(); 256012479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGDTRRXext) 256112479SCurtis.Dunham@arm.com .unimplemented() 256212479SCurtis.Dunham@arm.com .allPrivileges(); 256312479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGDSCRext) 256412479SCurtis.Dunham@arm.com .unimplemented() 256512479SCurtis.Dunham@arm.com .warnNotFail() 256612479SCurtis.Dunham@arm.com .allPrivileges(); 256712479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGDTRTXext) 256812479SCurtis.Dunham@arm.com .unimplemented() 256912479SCurtis.Dunham@arm.com .allPrivileges(); 257012479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGOSECCR) 257112479SCurtis.Dunham@arm.com .unimplemented() 257212479SCurtis.Dunham@arm.com .allPrivileges(); 257312479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBVR0) 257412479SCurtis.Dunham@arm.com .unimplemented() 257512479SCurtis.Dunham@arm.com .allPrivileges(); 257612479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBVR1) 257712479SCurtis.Dunham@arm.com .unimplemented() 257812479SCurtis.Dunham@arm.com .allPrivileges(); 257912479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBVR2) 258012479SCurtis.Dunham@arm.com .unimplemented() 258112479SCurtis.Dunham@arm.com .allPrivileges(); 258212479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBVR3) 258312479SCurtis.Dunham@arm.com .unimplemented() 258412479SCurtis.Dunham@arm.com .allPrivileges(); 258512479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBVR4) 258612479SCurtis.Dunham@arm.com .unimplemented() 258712479SCurtis.Dunham@arm.com .allPrivileges(); 258812479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBVR5) 258912479SCurtis.Dunham@arm.com .unimplemented() 259012479SCurtis.Dunham@arm.com .allPrivileges(); 259112479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBCR0) 259212479SCurtis.Dunham@arm.com .unimplemented() 259312479SCurtis.Dunham@arm.com .allPrivileges(); 259412479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBCR1) 259512479SCurtis.Dunham@arm.com .unimplemented() 259612479SCurtis.Dunham@arm.com .allPrivileges(); 259712479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBCR2) 259812479SCurtis.Dunham@arm.com .unimplemented() 259912479SCurtis.Dunham@arm.com .allPrivileges(); 260012479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBCR3) 260112479SCurtis.Dunham@arm.com .unimplemented() 260212479SCurtis.Dunham@arm.com .allPrivileges(); 260312479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBCR4) 260412479SCurtis.Dunham@arm.com .unimplemented() 260512479SCurtis.Dunham@arm.com .allPrivileges(); 260612479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBCR5) 260712479SCurtis.Dunham@arm.com .unimplemented() 260812479SCurtis.Dunham@arm.com .allPrivileges(); 260912479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGWVR0) 261012479SCurtis.Dunham@arm.com .unimplemented() 261112479SCurtis.Dunham@arm.com .allPrivileges(); 261212479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGWVR1) 261312479SCurtis.Dunham@arm.com .unimplemented() 261412479SCurtis.Dunham@arm.com .allPrivileges(); 261512479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGWVR2) 261612479SCurtis.Dunham@arm.com .unimplemented() 261712479SCurtis.Dunham@arm.com .allPrivileges(); 261812479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGWVR3) 261912479SCurtis.Dunham@arm.com .unimplemented() 262012479SCurtis.Dunham@arm.com .allPrivileges(); 262112479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGWCR0) 262212479SCurtis.Dunham@arm.com .unimplemented() 262312479SCurtis.Dunham@arm.com .allPrivileges(); 262412479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGWCR1) 262512479SCurtis.Dunham@arm.com .unimplemented() 262612479SCurtis.Dunham@arm.com .allPrivileges(); 262712479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGWCR2) 262812479SCurtis.Dunham@arm.com .unimplemented() 262912479SCurtis.Dunham@arm.com .allPrivileges(); 263012479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGWCR3) 263112479SCurtis.Dunham@arm.com .unimplemented() 263212479SCurtis.Dunham@arm.com .allPrivileges(); 263312479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGDRAR) 263412479SCurtis.Dunham@arm.com .unimplemented() 263512479SCurtis.Dunham@arm.com .allPrivileges().monSecureWrite(0).monNonSecureWrite(0); 263612479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBXVR4) 263712479SCurtis.Dunham@arm.com .unimplemented() 263812479SCurtis.Dunham@arm.com .allPrivileges(); 263912479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBXVR5) 264012479SCurtis.Dunham@arm.com .unimplemented() 264112479SCurtis.Dunham@arm.com .allPrivileges(); 264212479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGOSLAR) 264312479SCurtis.Dunham@arm.com .unimplemented() 264412479SCurtis.Dunham@arm.com .allPrivileges().monSecureRead(0).monNonSecureRead(0); 264512479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGOSLSR) 264612479SCurtis.Dunham@arm.com .unimplemented() 264712479SCurtis.Dunham@arm.com .allPrivileges().monSecureWrite(0).monNonSecureWrite(0); 264812479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGOSDLR) 264912479SCurtis.Dunham@arm.com .unimplemented() 265012479SCurtis.Dunham@arm.com .allPrivileges(); 265112479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGPRCR) 265212479SCurtis.Dunham@arm.com .unimplemented() 265312479SCurtis.Dunham@arm.com .allPrivileges(); 265412479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGDSAR) 265512479SCurtis.Dunham@arm.com .unimplemented() 265612479SCurtis.Dunham@arm.com .allPrivileges().monSecureWrite(0).monNonSecureWrite(0); 265712479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGCLAIMSET) 265812479SCurtis.Dunham@arm.com .unimplemented() 265912479SCurtis.Dunham@arm.com .allPrivileges(); 266012479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGCLAIMCLR) 266112479SCurtis.Dunham@arm.com .unimplemented() 266212479SCurtis.Dunham@arm.com .allPrivileges(); 266312479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGAUTHSTATUS) 266412479SCurtis.Dunham@arm.com .unimplemented() 266512479SCurtis.Dunham@arm.com .allPrivileges().monSecureWrite(0).monNonSecureWrite(0); 266612479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGDEVID2) 266712479SCurtis.Dunham@arm.com .unimplemented() 266812479SCurtis.Dunham@arm.com .allPrivileges().monSecureWrite(0).monNonSecureWrite(0); 266912479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGDEVID1) 267012479SCurtis.Dunham@arm.com .unimplemented() 267112479SCurtis.Dunham@arm.com .allPrivileges().monSecureWrite(0).monNonSecureWrite(0); 267212479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGDEVID0) 267312479SCurtis.Dunham@arm.com .unimplemented() 267412479SCurtis.Dunham@arm.com .allPrivileges().monSecureWrite(0).monNonSecureWrite(0); 267512479SCurtis.Dunham@arm.com InitReg(MISCREG_TEECR) 267612479SCurtis.Dunham@arm.com .unimplemented() 267712479SCurtis.Dunham@arm.com .allPrivileges(); 267812479SCurtis.Dunham@arm.com InitReg(MISCREG_JIDR) 267912479SCurtis.Dunham@arm.com .allPrivileges(); 268012479SCurtis.Dunham@arm.com InitReg(MISCREG_TEEHBR) 268112479SCurtis.Dunham@arm.com .allPrivileges(); 268212479SCurtis.Dunham@arm.com InitReg(MISCREG_JOSCR) 268312479SCurtis.Dunham@arm.com .allPrivileges(); 268412479SCurtis.Dunham@arm.com InitReg(MISCREG_JMCR) 268512479SCurtis.Dunham@arm.com .allPrivileges(); 268612479SCurtis.Dunham@arm.com 268712479SCurtis.Dunham@arm.com // AArch32 CP15 registers 268812479SCurtis.Dunham@arm.com InitReg(MISCREG_MIDR) 268912479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 269012479SCurtis.Dunham@arm.com InitReg(MISCREG_CTR) 269112479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 269212479SCurtis.Dunham@arm.com InitReg(MISCREG_TCMTR) 269312479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 269412479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBTR) 269512479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 269612479SCurtis.Dunham@arm.com InitReg(MISCREG_MPIDR) 269712479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 269812479SCurtis.Dunham@arm.com InitReg(MISCREG_REVIDR) 269912479SCurtis.Dunham@arm.com .unimplemented() 270012479SCurtis.Dunham@arm.com .warnNotFail() 270112479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 270212479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_PFR0) 270312479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 270412479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_PFR1) 270512479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 270612479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_DFR0) 270712479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 270812479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_AFR0) 270912479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 271012479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_MMFR0) 271112479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 271212479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_MMFR1) 271312479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 271412479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_MMFR2) 271512479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 271612479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_MMFR3) 271712479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 271812479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_ISAR0) 271912479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 272012479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_ISAR1) 272112479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 272212479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_ISAR2) 272312479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 272412479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_ISAR3) 272512479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 272612479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_ISAR4) 272712479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 272812479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_ISAR5) 272912479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 273012479SCurtis.Dunham@arm.com InitReg(MISCREG_CCSIDR) 273112479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 273212479SCurtis.Dunham@arm.com InitReg(MISCREG_CLIDR) 273312479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 273412479SCurtis.Dunham@arm.com InitReg(MISCREG_AIDR) 273512479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 273612479SCurtis.Dunham@arm.com InitReg(MISCREG_CSSELR) 273712479SCurtis.Dunham@arm.com .banked(); 273812479SCurtis.Dunham@arm.com InitReg(MISCREG_CSSELR_NS) 273912479SCurtis.Dunham@arm.com .bankedChild() 274012661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 274112479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 274212479SCurtis.Dunham@arm.com InitReg(MISCREG_CSSELR_S) 274312479SCurtis.Dunham@arm.com .bankedChild() 274412479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 274512479SCurtis.Dunham@arm.com InitReg(MISCREG_VPIDR) 274612479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 274712479SCurtis.Dunham@arm.com InitReg(MISCREG_VMPIDR) 274812479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 274912479SCurtis.Dunham@arm.com InitReg(MISCREG_SCTLR) 275012479SCurtis.Dunham@arm.com .banked(); 275112479SCurtis.Dunham@arm.com InitReg(MISCREG_SCTLR_NS) 275212479SCurtis.Dunham@arm.com .bankedChild() 275312661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 275412479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 275512479SCurtis.Dunham@arm.com InitReg(MISCREG_SCTLR_S) 275612479SCurtis.Dunham@arm.com .bankedChild() 275712479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 275812479SCurtis.Dunham@arm.com InitReg(MISCREG_ACTLR) 275912479SCurtis.Dunham@arm.com .banked(); 276012479SCurtis.Dunham@arm.com InitReg(MISCREG_ACTLR_NS) 276112479SCurtis.Dunham@arm.com .bankedChild() 276212661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 276312479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 276412479SCurtis.Dunham@arm.com InitReg(MISCREG_ACTLR_S) 276512479SCurtis.Dunham@arm.com .bankedChild() 276612479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 276712479SCurtis.Dunham@arm.com InitReg(MISCREG_CPACR) 276812479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 276912479SCurtis.Dunham@arm.com InitReg(MISCREG_SCR) 277012479SCurtis.Dunham@arm.com .mon().secure().exceptUserMode() 277112479SCurtis.Dunham@arm.com .res0(0xff40) // [31:16], [6] 277212479SCurtis.Dunham@arm.com .res1(0x0030); // [5:4] 277312479SCurtis.Dunham@arm.com InitReg(MISCREG_SDER) 277412479SCurtis.Dunham@arm.com .mon(); 277512479SCurtis.Dunham@arm.com InitReg(MISCREG_NSACR) 277612479SCurtis.Dunham@arm.com .allPrivileges().hypWrite(0).privNonSecureWrite(0).exceptUserMode(); 277712479SCurtis.Dunham@arm.com InitReg(MISCREG_HSCTLR) 277812479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 277912479SCurtis.Dunham@arm.com InitReg(MISCREG_HACTLR) 278012479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 278112479SCurtis.Dunham@arm.com InitReg(MISCREG_HCR) 278212479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 278312479SCurtis.Dunham@arm.com InitReg(MISCREG_HDCR) 278412479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 278512479SCurtis.Dunham@arm.com InitReg(MISCREG_HCPTR) 278612479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 278712479SCurtis.Dunham@arm.com InitReg(MISCREG_HSTR) 278812479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 278912479SCurtis.Dunham@arm.com InitReg(MISCREG_HACR) 279012479SCurtis.Dunham@arm.com .unimplemented() 279112479SCurtis.Dunham@arm.com .warnNotFail() 279212479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 279312479SCurtis.Dunham@arm.com InitReg(MISCREG_TTBR0) 279412479SCurtis.Dunham@arm.com .banked(); 279512479SCurtis.Dunham@arm.com InitReg(MISCREG_TTBR0_NS) 279612479SCurtis.Dunham@arm.com .bankedChild() 279712661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 279812479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 279912479SCurtis.Dunham@arm.com InitReg(MISCREG_TTBR0_S) 280012479SCurtis.Dunham@arm.com .bankedChild() 280112479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 280212479SCurtis.Dunham@arm.com InitReg(MISCREG_TTBR1) 280312479SCurtis.Dunham@arm.com .banked(); 280412479SCurtis.Dunham@arm.com InitReg(MISCREG_TTBR1_NS) 280512479SCurtis.Dunham@arm.com .bankedChild() 280612661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 280712479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 280812479SCurtis.Dunham@arm.com InitReg(MISCREG_TTBR1_S) 280912479SCurtis.Dunham@arm.com .bankedChild() 281012479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 281112479SCurtis.Dunham@arm.com InitReg(MISCREG_TTBCR) 281212479SCurtis.Dunham@arm.com .banked(); 281312479SCurtis.Dunham@arm.com InitReg(MISCREG_TTBCR_NS) 281412479SCurtis.Dunham@arm.com .bankedChild() 281512661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 281612479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 281712479SCurtis.Dunham@arm.com InitReg(MISCREG_TTBCR_S) 281812479SCurtis.Dunham@arm.com .bankedChild() 281912479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 282012479SCurtis.Dunham@arm.com InitReg(MISCREG_HTCR) 282112479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 282212479SCurtis.Dunham@arm.com InitReg(MISCREG_VTCR) 282312479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 282412479SCurtis.Dunham@arm.com InitReg(MISCREG_DACR) 282512479SCurtis.Dunham@arm.com .banked(); 282612479SCurtis.Dunham@arm.com InitReg(MISCREG_DACR_NS) 282712479SCurtis.Dunham@arm.com .bankedChild() 282812661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 282912479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 283012479SCurtis.Dunham@arm.com InitReg(MISCREG_DACR_S) 283112479SCurtis.Dunham@arm.com .bankedChild() 283212479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 283312479SCurtis.Dunham@arm.com InitReg(MISCREG_DFSR) 283412479SCurtis.Dunham@arm.com .banked(); 283512479SCurtis.Dunham@arm.com InitReg(MISCREG_DFSR_NS) 283612479SCurtis.Dunham@arm.com .bankedChild() 283712661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 283812479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 283912479SCurtis.Dunham@arm.com InitReg(MISCREG_DFSR_S) 284012479SCurtis.Dunham@arm.com .bankedChild() 284112479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 284212479SCurtis.Dunham@arm.com InitReg(MISCREG_IFSR) 284312479SCurtis.Dunham@arm.com .banked(); 284412479SCurtis.Dunham@arm.com InitReg(MISCREG_IFSR_NS) 284512479SCurtis.Dunham@arm.com .bankedChild() 284612661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 284712479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 284812479SCurtis.Dunham@arm.com InitReg(MISCREG_IFSR_S) 284912479SCurtis.Dunham@arm.com .bankedChild() 285012479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 285112479SCurtis.Dunham@arm.com InitReg(MISCREG_ADFSR) 285212479SCurtis.Dunham@arm.com .unimplemented() 285312479SCurtis.Dunham@arm.com .warnNotFail() 285412479SCurtis.Dunham@arm.com .banked(); 285512479SCurtis.Dunham@arm.com InitReg(MISCREG_ADFSR_NS) 285612479SCurtis.Dunham@arm.com .unimplemented() 285712479SCurtis.Dunham@arm.com .warnNotFail() 285812479SCurtis.Dunham@arm.com .bankedChild() 285912661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 286012479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 286112479SCurtis.Dunham@arm.com InitReg(MISCREG_ADFSR_S) 286212479SCurtis.Dunham@arm.com .unimplemented() 286312479SCurtis.Dunham@arm.com .warnNotFail() 286412479SCurtis.Dunham@arm.com .bankedChild() 286512479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 286612479SCurtis.Dunham@arm.com InitReg(MISCREG_AIFSR) 286712479SCurtis.Dunham@arm.com .unimplemented() 286812479SCurtis.Dunham@arm.com .warnNotFail() 286912479SCurtis.Dunham@arm.com .banked(); 287012479SCurtis.Dunham@arm.com InitReg(MISCREG_AIFSR_NS) 287112479SCurtis.Dunham@arm.com .unimplemented() 287212479SCurtis.Dunham@arm.com .warnNotFail() 287312479SCurtis.Dunham@arm.com .bankedChild() 287412661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 287512479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 287612479SCurtis.Dunham@arm.com InitReg(MISCREG_AIFSR_S) 287712479SCurtis.Dunham@arm.com .unimplemented() 287812479SCurtis.Dunham@arm.com .warnNotFail() 287912479SCurtis.Dunham@arm.com .bankedChild() 288012479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 288112479SCurtis.Dunham@arm.com InitReg(MISCREG_HADFSR) 288212479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 288312479SCurtis.Dunham@arm.com InitReg(MISCREG_HAIFSR) 288412479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 288512479SCurtis.Dunham@arm.com InitReg(MISCREG_HSR) 288612479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 288712479SCurtis.Dunham@arm.com InitReg(MISCREG_DFAR) 288812479SCurtis.Dunham@arm.com .banked(); 288912479SCurtis.Dunham@arm.com InitReg(MISCREG_DFAR_NS) 289012479SCurtis.Dunham@arm.com .bankedChild() 289112661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 289212479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 289312479SCurtis.Dunham@arm.com InitReg(MISCREG_DFAR_S) 289412479SCurtis.Dunham@arm.com .bankedChild() 289512479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 289612479SCurtis.Dunham@arm.com InitReg(MISCREG_IFAR) 289712479SCurtis.Dunham@arm.com .banked(); 289812479SCurtis.Dunham@arm.com InitReg(MISCREG_IFAR_NS) 289912479SCurtis.Dunham@arm.com .bankedChild() 290012661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 290112479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 290212479SCurtis.Dunham@arm.com InitReg(MISCREG_IFAR_S) 290312479SCurtis.Dunham@arm.com .bankedChild() 290412479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 290512479SCurtis.Dunham@arm.com InitReg(MISCREG_HDFAR) 290612479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 290712479SCurtis.Dunham@arm.com InitReg(MISCREG_HIFAR) 290812479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 290912479SCurtis.Dunham@arm.com InitReg(MISCREG_HPFAR) 291012479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 291112479SCurtis.Dunham@arm.com InitReg(MISCREG_ICIALLUIS) 291212479SCurtis.Dunham@arm.com .unimplemented() 291312479SCurtis.Dunham@arm.com .warnNotFail() 291412479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 291512479SCurtis.Dunham@arm.com InitReg(MISCREG_BPIALLIS) 291612479SCurtis.Dunham@arm.com .unimplemented() 291712479SCurtis.Dunham@arm.com .warnNotFail() 291812479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 291912479SCurtis.Dunham@arm.com InitReg(MISCREG_PAR) 292012479SCurtis.Dunham@arm.com .banked(); 292112479SCurtis.Dunham@arm.com InitReg(MISCREG_PAR_NS) 292212479SCurtis.Dunham@arm.com .bankedChild() 292312661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 292412479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 292512479SCurtis.Dunham@arm.com InitReg(MISCREG_PAR_S) 292612479SCurtis.Dunham@arm.com .bankedChild() 292712479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 292812479SCurtis.Dunham@arm.com InitReg(MISCREG_ICIALLU) 292912479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 293012479SCurtis.Dunham@arm.com InitReg(MISCREG_ICIMVAU) 293112479SCurtis.Dunham@arm.com .unimplemented() 293212479SCurtis.Dunham@arm.com .warnNotFail() 293312479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 293412479SCurtis.Dunham@arm.com InitReg(MISCREG_CP15ISB) 293512479SCurtis.Dunham@arm.com .writes(1); 293612479SCurtis.Dunham@arm.com InitReg(MISCREG_BPIALL) 293712479SCurtis.Dunham@arm.com .unimplemented() 293812479SCurtis.Dunham@arm.com .warnNotFail() 293912479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 294012479SCurtis.Dunham@arm.com InitReg(MISCREG_BPIMVA) 294112479SCurtis.Dunham@arm.com .unimplemented() 294212479SCurtis.Dunham@arm.com .warnNotFail() 294312479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 294412479SCurtis.Dunham@arm.com InitReg(MISCREG_DCIMVAC) 294512479SCurtis.Dunham@arm.com .unimplemented() 294612479SCurtis.Dunham@arm.com .warnNotFail() 294712479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 294812479SCurtis.Dunham@arm.com InitReg(MISCREG_DCISW) 294912479SCurtis.Dunham@arm.com .unimplemented() 295012479SCurtis.Dunham@arm.com .warnNotFail() 295112479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 295212479SCurtis.Dunham@arm.com InitReg(MISCREG_ATS1CPR) 295312479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 295412479SCurtis.Dunham@arm.com InitReg(MISCREG_ATS1CPW) 295512479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 295612479SCurtis.Dunham@arm.com InitReg(MISCREG_ATS1CUR) 295712479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 295812479SCurtis.Dunham@arm.com InitReg(MISCREG_ATS1CUW) 295912479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 296012479SCurtis.Dunham@arm.com InitReg(MISCREG_ATS12NSOPR) 296112479SCurtis.Dunham@arm.com .privSecureWrite().hypWrite().monSecureWrite().monNonSecureWrite(); 296212479SCurtis.Dunham@arm.com InitReg(MISCREG_ATS12NSOPW) 296312479SCurtis.Dunham@arm.com .privSecureWrite().hypWrite().monSecureWrite().monNonSecureWrite(); 296412479SCurtis.Dunham@arm.com InitReg(MISCREG_ATS12NSOUR) 296512479SCurtis.Dunham@arm.com .privSecureWrite().hypWrite().monSecureWrite().monNonSecureWrite(); 296612479SCurtis.Dunham@arm.com InitReg(MISCREG_ATS12NSOUW) 296712479SCurtis.Dunham@arm.com .privSecureWrite().hypWrite().monSecureWrite().monNonSecureWrite(); 296812479SCurtis.Dunham@arm.com InitReg(MISCREG_DCCMVAC) 296912479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 297012479SCurtis.Dunham@arm.com InitReg(MISCREG_DCCSW) 297112479SCurtis.Dunham@arm.com .unimplemented() 297212479SCurtis.Dunham@arm.com .warnNotFail() 297312479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 297412479SCurtis.Dunham@arm.com InitReg(MISCREG_CP15DSB) 297512479SCurtis.Dunham@arm.com .writes(1); 297612479SCurtis.Dunham@arm.com InitReg(MISCREG_CP15DMB) 297712479SCurtis.Dunham@arm.com .writes(1); 297812479SCurtis.Dunham@arm.com InitReg(MISCREG_DCCMVAU) 297912479SCurtis.Dunham@arm.com .unimplemented() 298012479SCurtis.Dunham@arm.com .warnNotFail() 298112479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 298212479SCurtis.Dunham@arm.com InitReg(MISCREG_DCCIMVAC) 298312479SCurtis.Dunham@arm.com .unimplemented() 298412479SCurtis.Dunham@arm.com .warnNotFail() 298512479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 298612479SCurtis.Dunham@arm.com InitReg(MISCREG_DCCISW) 298712479SCurtis.Dunham@arm.com .unimplemented() 298812479SCurtis.Dunham@arm.com .warnNotFail() 298912479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 299012479SCurtis.Dunham@arm.com InitReg(MISCREG_ATS1HR) 299112479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 299212479SCurtis.Dunham@arm.com InitReg(MISCREG_ATS1HW) 299312479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 299412479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIALLIS) 299512479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 299612479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIMVAIS) 299712479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 299812479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIASIDIS) 299912479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 300012479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIMVAAIS) 300112479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 300212479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIMVALIS) 300312479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 300412479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIMVAALIS) 300512479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 300612479SCurtis.Dunham@arm.com InitReg(MISCREG_ITLBIALL) 300712479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 300812479SCurtis.Dunham@arm.com InitReg(MISCREG_ITLBIMVA) 300912479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 301012479SCurtis.Dunham@arm.com InitReg(MISCREG_ITLBIASID) 301112479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 301212479SCurtis.Dunham@arm.com InitReg(MISCREG_DTLBIALL) 301312479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 301412479SCurtis.Dunham@arm.com InitReg(MISCREG_DTLBIMVA) 301512479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 301612479SCurtis.Dunham@arm.com InitReg(MISCREG_DTLBIASID) 301712479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 301812479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIALL) 301912479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 302012479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIMVA) 302112479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 302212479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIASID) 302312479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 302412479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIMVAA) 302512479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 302612479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIMVAL) 302712479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 302812479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIMVAAL) 302912479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 303012479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIIPAS2IS) 303112479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 303212479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIIPAS2LIS) 303312479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 303412479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIALLHIS) 303512479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 303612479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIMVAHIS) 303712479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 303812479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIALLNSNHIS) 303912479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 304012479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIMVALHIS) 304112479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 304212479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIIPAS2) 304312479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 304412479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIIPAS2L) 304512479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 304612479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIALLH) 304712479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 304812479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIMVAH) 304912479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 305012479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIALLNSNH) 305112479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 305212479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBIMVALH) 305312479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 305412479SCurtis.Dunham@arm.com InitReg(MISCREG_PMCR) 305512479SCurtis.Dunham@arm.com .allPrivileges(); 305612479SCurtis.Dunham@arm.com InitReg(MISCREG_PMCNTENSET) 305712479SCurtis.Dunham@arm.com .allPrivileges(); 305812479SCurtis.Dunham@arm.com InitReg(MISCREG_PMCNTENCLR) 305912479SCurtis.Dunham@arm.com .allPrivileges(); 306012479SCurtis.Dunham@arm.com InitReg(MISCREG_PMOVSR) 306112479SCurtis.Dunham@arm.com .allPrivileges(); 306212479SCurtis.Dunham@arm.com InitReg(MISCREG_PMSWINC) 306312479SCurtis.Dunham@arm.com .allPrivileges(); 306412479SCurtis.Dunham@arm.com InitReg(MISCREG_PMSELR) 306512479SCurtis.Dunham@arm.com .allPrivileges(); 306612479SCurtis.Dunham@arm.com InitReg(MISCREG_PMCEID0) 306712479SCurtis.Dunham@arm.com .allPrivileges(); 306812479SCurtis.Dunham@arm.com InitReg(MISCREG_PMCEID1) 306912479SCurtis.Dunham@arm.com .allPrivileges(); 307012479SCurtis.Dunham@arm.com InitReg(MISCREG_PMCCNTR) 307112479SCurtis.Dunham@arm.com .allPrivileges(); 307212479SCurtis.Dunham@arm.com InitReg(MISCREG_PMXEVTYPER) 307312479SCurtis.Dunham@arm.com .allPrivileges(); 307412479SCurtis.Dunham@arm.com InitReg(MISCREG_PMCCFILTR) 307512479SCurtis.Dunham@arm.com .allPrivileges(); 307612479SCurtis.Dunham@arm.com InitReg(MISCREG_PMXEVCNTR) 307712479SCurtis.Dunham@arm.com .allPrivileges(); 307812479SCurtis.Dunham@arm.com InitReg(MISCREG_PMUSERENR) 307912479SCurtis.Dunham@arm.com .allPrivileges().userNonSecureWrite(0).userSecureWrite(0); 308012479SCurtis.Dunham@arm.com InitReg(MISCREG_PMINTENSET) 308112479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 308212479SCurtis.Dunham@arm.com InitReg(MISCREG_PMINTENCLR) 308312479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 308412479SCurtis.Dunham@arm.com InitReg(MISCREG_PMOVSSET) 308512479SCurtis.Dunham@arm.com .unimplemented() 308612479SCurtis.Dunham@arm.com .allPrivileges(); 308712479SCurtis.Dunham@arm.com InitReg(MISCREG_L2CTLR) 308812479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 308912479SCurtis.Dunham@arm.com InitReg(MISCREG_L2ECTLR) 309012479SCurtis.Dunham@arm.com .unimplemented() 309112479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 309212479SCurtis.Dunham@arm.com InitReg(MISCREG_PRRR) 309312479SCurtis.Dunham@arm.com .banked(); 309412479SCurtis.Dunham@arm.com InitReg(MISCREG_PRRR_NS) 309512479SCurtis.Dunham@arm.com .bankedChild() 309612661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 309712479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 309812479SCurtis.Dunham@arm.com InitReg(MISCREG_PRRR_S) 309912479SCurtis.Dunham@arm.com .bankedChild() 310012479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 310112479SCurtis.Dunham@arm.com InitReg(MISCREG_MAIR0) 310212479SCurtis.Dunham@arm.com .banked(); 310312479SCurtis.Dunham@arm.com InitReg(MISCREG_MAIR0_NS) 310412479SCurtis.Dunham@arm.com .bankedChild() 310512661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 310612479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 310712479SCurtis.Dunham@arm.com InitReg(MISCREG_MAIR0_S) 310812479SCurtis.Dunham@arm.com .bankedChild() 310912479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 311012479SCurtis.Dunham@arm.com InitReg(MISCREG_NMRR) 311112479SCurtis.Dunham@arm.com .banked(); 311212479SCurtis.Dunham@arm.com InitReg(MISCREG_NMRR_NS) 311312479SCurtis.Dunham@arm.com .bankedChild() 311412661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 311512479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 311612479SCurtis.Dunham@arm.com InitReg(MISCREG_NMRR_S) 311712479SCurtis.Dunham@arm.com .bankedChild() 311812479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 311912479SCurtis.Dunham@arm.com InitReg(MISCREG_MAIR1) 312012479SCurtis.Dunham@arm.com .banked(); 312112479SCurtis.Dunham@arm.com InitReg(MISCREG_MAIR1_NS) 312212479SCurtis.Dunham@arm.com .bankedChild() 312312661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 312412479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 312512479SCurtis.Dunham@arm.com InitReg(MISCREG_MAIR1_S) 312612479SCurtis.Dunham@arm.com .bankedChild() 312712479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 312812479SCurtis.Dunham@arm.com InitReg(MISCREG_AMAIR0) 312912479SCurtis.Dunham@arm.com .banked(); 313012479SCurtis.Dunham@arm.com InitReg(MISCREG_AMAIR0_NS) 313112479SCurtis.Dunham@arm.com .bankedChild() 313212661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 313312479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 313412479SCurtis.Dunham@arm.com InitReg(MISCREG_AMAIR0_S) 313512479SCurtis.Dunham@arm.com .bankedChild() 313612479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 313712479SCurtis.Dunham@arm.com InitReg(MISCREG_AMAIR1) 313812479SCurtis.Dunham@arm.com .banked(); 313912479SCurtis.Dunham@arm.com InitReg(MISCREG_AMAIR1_NS) 314012479SCurtis.Dunham@arm.com .bankedChild() 314112661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 314212479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 314312479SCurtis.Dunham@arm.com InitReg(MISCREG_AMAIR1_S) 314412479SCurtis.Dunham@arm.com .bankedChild() 314512479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 314612479SCurtis.Dunham@arm.com InitReg(MISCREG_HMAIR0) 314712479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 314812479SCurtis.Dunham@arm.com InitReg(MISCREG_HMAIR1) 314912479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 315012479SCurtis.Dunham@arm.com InitReg(MISCREG_HAMAIR0) 315112479SCurtis.Dunham@arm.com .unimplemented() 315212479SCurtis.Dunham@arm.com .warnNotFail() 315312479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 315412479SCurtis.Dunham@arm.com InitReg(MISCREG_HAMAIR1) 315512479SCurtis.Dunham@arm.com .unimplemented() 315612479SCurtis.Dunham@arm.com .warnNotFail() 315712479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 315812479SCurtis.Dunham@arm.com InitReg(MISCREG_VBAR) 315912479SCurtis.Dunham@arm.com .banked(); 316012479SCurtis.Dunham@arm.com InitReg(MISCREG_VBAR_NS) 316112479SCurtis.Dunham@arm.com .bankedChild() 316212661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 316312479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 316412479SCurtis.Dunham@arm.com InitReg(MISCREG_VBAR_S) 316512479SCurtis.Dunham@arm.com .bankedChild() 316612479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 316712479SCurtis.Dunham@arm.com InitReg(MISCREG_MVBAR) 316812479SCurtis.Dunham@arm.com .mon().secure().exceptUserMode(); 316912479SCurtis.Dunham@arm.com InitReg(MISCREG_RMR) 317012479SCurtis.Dunham@arm.com .unimplemented() 317112479SCurtis.Dunham@arm.com .mon().secure().exceptUserMode(); 317212479SCurtis.Dunham@arm.com InitReg(MISCREG_ISR) 317312479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 317412479SCurtis.Dunham@arm.com InitReg(MISCREG_HVBAR) 317512479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 317612479SCurtis.Dunham@arm.com InitReg(MISCREG_FCSEIDR) 317712479SCurtis.Dunham@arm.com .unimplemented() 317812479SCurtis.Dunham@arm.com .warnNotFail() 317912479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 318012479SCurtis.Dunham@arm.com InitReg(MISCREG_CONTEXTIDR) 318112479SCurtis.Dunham@arm.com .banked(); 318212479SCurtis.Dunham@arm.com InitReg(MISCREG_CONTEXTIDR_NS) 318312479SCurtis.Dunham@arm.com .bankedChild() 318412661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 318512479SCurtis.Dunham@arm.com .nonSecure().exceptUserMode(); 318612479SCurtis.Dunham@arm.com InitReg(MISCREG_CONTEXTIDR_S) 318712479SCurtis.Dunham@arm.com .bankedChild() 318812479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 318912479SCurtis.Dunham@arm.com InitReg(MISCREG_TPIDRURW) 319012479SCurtis.Dunham@arm.com .banked(); 319112479SCurtis.Dunham@arm.com InitReg(MISCREG_TPIDRURW_NS) 319212479SCurtis.Dunham@arm.com .bankedChild() 319312661Sgiacomo.travaglini@arm.com .allPrivileges() 319412661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 319512661Sgiacomo.travaglini@arm.com .monSecure(0); 319612479SCurtis.Dunham@arm.com InitReg(MISCREG_TPIDRURW_S) 319712479SCurtis.Dunham@arm.com .bankedChild() 319812479SCurtis.Dunham@arm.com .secure(); 319912479SCurtis.Dunham@arm.com InitReg(MISCREG_TPIDRURO) 320012479SCurtis.Dunham@arm.com .banked(); 320112479SCurtis.Dunham@arm.com InitReg(MISCREG_TPIDRURO_NS) 320212479SCurtis.Dunham@arm.com .bankedChild() 320312661Sgiacomo.travaglini@arm.com .allPrivileges() 320412661Sgiacomo.travaglini@arm.com .userNonSecureWrite(0).userSecureRead(1) 320512661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 320612661Sgiacomo.travaglini@arm.com .monSecure(0); 320712479SCurtis.Dunham@arm.com InitReg(MISCREG_TPIDRURO_S) 320812479SCurtis.Dunham@arm.com .bankedChild() 320912479SCurtis.Dunham@arm.com .secure().userSecureWrite(0); 321012479SCurtis.Dunham@arm.com InitReg(MISCREG_TPIDRPRW) 321112479SCurtis.Dunham@arm.com .banked(); 321212479SCurtis.Dunham@arm.com InitReg(MISCREG_TPIDRPRW_NS) 321312479SCurtis.Dunham@arm.com .bankedChild() 321412661Sgiacomo.travaglini@arm.com .nonSecure().exceptUserMode() 321512661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3); 321612479SCurtis.Dunham@arm.com InitReg(MISCREG_TPIDRPRW_S) 321712479SCurtis.Dunham@arm.com .bankedChild() 321812479SCurtis.Dunham@arm.com .secure().exceptUserMode(); 321912479SCurtis.Dunham@arm.com InitReg(MISCREG_HTPIDR) 322012479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 322112479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTFRQ) 322212479SCurtis.Dunham@arm.com .unverifiable() 322312479SCurtis.Dunham@arm.com .reads(1).mon(); 322412479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTKCTL) 322512479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 322612479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTP_TVAL) 322712479SCurtis.Dunham@arm.com .banked(); 322812479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTP_TVAL_NS) 322912479SCurtis.Dunham@arm.com .bankedChild() 323012661Sgiacomo.travaglini@arm.com .allPrivileges() 323112661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 323212661Sgiacomo.travaglini@arm.com .monSecure(0); 323312479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTP_TVAL_S) 323412479SCurtis.Dunham@arm.com .bankedChild() 323512479SCurtis.Dunham@arm.com .secure().user(1); 323612479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTP_CTL) 323712479SCurtis.Dunham@arm.com .banked(); 323812479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTP_CTL_NS) 323912479SCurtis.Dunham@arm.com .bankedChild() 324012661Sgiacomo.travaglini@arm.com .allPrivileges() 324112661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 324212661Sgiacomo.travaglini@arm.com .monSecure(0); 324312479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTP_CTL_S) 324412479SCurtis.Dunham@arm.com .bankedChild() 324512479SCurtis.Dunham@arm.com .secure().user(1); 324612479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTV_TVAL) 324712479SCurtis.Dunham@arm.com .allPrivileges(); 324812479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTV_CTL) 324912479SCurtis.Dunham@arm.com .allPrivileges(); 325012479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTHCTL) 325112479SCurtis.Dunham@arm.com .hypWrite().monNonSecureRead(); 325212479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTHP_TVAL) 325312479SCurtis.Dunham@arm.com .hypWrite().monNonSecureRead(); 325412479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTHP_CTL) 325512479SCurtis.Dunham@arm.com .hypWrite().monNonSecureRead(); 325612479SCurtis.Dunham@arm.com InitReg(MISCREG_IL1DATA0) 325712479SCurtis.Dunham@arm.com .unimplemented() 325812479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 325912479SCurtis.Dunham@arm.com InitReg(MISCREG_IL1DATA1) 326012479SCurtis.Dunham@arm.com .unimplemented() 326112479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 326212479SCurtis.Dunham@arm.com InitReg(MISCREG_IL1DATA2) 326312479SCurtis.Dunham@arm.com .unimplemented() 326412479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 326512479SCurtis.Dunham@arm.com InitReg(MISCREG_IL1DATA3) 326612479SCurtis.Dunham@arm.com .unimplemented() 326712479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 326812479SCurtis.Dunham@arm.com InitReg(MISCREG_DL1DATA0) 326912479SCurtis.Dunham@arm.com .unimplemented() 327012479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 327112479SCurtis.Dunham@arm.com InitReg(MISCREG_DL1DATA1) 327212479SCurtis.Dunham@arm.com .unimplemented() 327312479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 327412479SCurtis.Dunham@arm.com InitReg(MISCREG_DL1DATA2) 327512479SCurtis.Dunham@arm.com .unimplemented() 327612479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 327712479SCurtis.Dunham@arm.com InitReg(MISCREG_DL1DATA3) 327812479SCurtis.Dunham@arm.com .unimplemented() 327912479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 328012479SCurtis.Dunham@arm.com InitReg(MISCREG_DL1DATA4) 328112479SCurtis.Dunham@arm.com .unimplemented() 328212479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 328312479SCurtis.Dunham@arm.com InitReg(MISCREG_RAMINDEX) 328412479SCurtis.Dunham@arm.com .unimplemented() 328512479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 328612479SCurtis.Dunham@arm.com InitReg(MISCREG_L2ACTLR) 328712479SCurtis.Dunham@arm.com .unimplemented() 328812479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 328912479SCurtis.Dunham@arm.com InitReg(MISCREG_CBAR) 329012479SCurtis.Dunham@arm.com .unimplemented() 329112479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 329212479SCurtis.Dunham@arm.com InitReg(MISCREG_HTTBR) 329312479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 329412479SCurtis.Dunham@arm.com InitReg(MISCREG_VTTBR) 329512479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 329612479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTPCT) 329712479SCurtis.Dunham@arm.com .reads(1); 329812479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTVCT) 329912479SCurtis.Dunham@arm.com .unverifiable() 330012479SCurtis.Dunham@arm.com .reads(1); 330112479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTP_CVAL) 330212479SCurtis.Dunham@arm.com .banked(); 330312479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTP_CVAL_NS) 330412479SCurtis.Dunham@arm.com .bankedChild() 330512661Sgiacomo.travaglini@arm.com .allPrivileges() 330612661Sgiacomo.travaglini@arm.com .privSecure(!aarch32EL3) 330712661Sgiacomo.travaglini@arm.com .monSecure(0); 330812479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTP_CVAL_S) 330912479SCurtis.Dunham@arm.com .bankedChild() 331012479SCurtis.Dunham@arm.com .secure().user(1); 331112479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTV_CVAL) 331212479SCurtis.Dunham@arm.com .allPrivileges(); 331312479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTVOFF) 331412479SCurtis.Dunham@arm.com .hyp().monNonSecure(); 331512479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTHP_CVAL) 331612479SCurtis.Dunham@arm.com .hypWrite().monNonSecureRead(); 331712479SCurtis.Dunham@arm.com InitReg(MISCREG_CPUMERRSR) 331812479SCurtis.Dunham@arm.com .unimplemented() 331912479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 332012479SCurtis.Dunham@arm.com InitReg(MISCREG_L2MERRSR) 332112479SCurtis.Dunham@arm.com .unimplemented() 332212479SCurtis.Dunham@arm.com .warnNotFail() 332312479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 332412479SCurtis.Dunham@arm.com 332512479SCurtis.Dunham@arm.com // AArch64 registers (Op0=2); 332612479SCurtis.Dunham@arm.com InitReg(MISCREG_MDCCINT_EL1) 332712479SCurtis.Dunham@arm.com .allPrivileges(); 332812479SCurtis.Dunham@arm.com InitReg(MISCREG_OSDTRRX_EL1) 332912479SCurtis.Dunham@arm.com .allPrivileges() 333012479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGDTRRXext); 333112479SCurtis.Dunham@arm.com InitReg(MISCREG_MDSCR_EL1) 333212479SCurtis.Dunham@arm.com .allPrivileges() 333312479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGDSCRext); 333412479SCurtis.Dunham@arm.com InitReg(MISCREG_OSDTRTX_EL1) 333512479SCurtis.Dunham@arm.com .allPrivileges() 333612479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGDTRTXext); 333712479SCurtis.Dunham@arm.com InitReg(MISCREG_OSECCR_EL1) 333812479SCurtis.Dunham@arm.com .allPrivileges() 333912479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGOSECCR); 334012479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBVR0_EL1) 334112479SCurtis.Dunham@arm.com .allPrivileges() 334212479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGBVR0 /*, MISCREG_DBGBXVR0 */); 334312479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBVR1_EL1) 334412479SCurtis.Dunham@arm.com .allPrivileges() 334512479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGBVR1 /*, MISCREG_DBGBXVR1 */); 334612479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBVR2_EL1) 334712479SCurtis.Dunham@arm.com .allPrivileges() 334812479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGBVR2 /*, MISCREG_DBGBXVR2 */); 334912479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBVR3_EL1) 335012479SCurtis.Dunham@arm.com .allPrivileges() 335112479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGBVR3 /*, MISCREG_DBGBXVR3 */); 335212479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBVR4_EL1) 335312479SCurtis.Dunham@arm.com .allPrivileges() 335412479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGBVR4 /*, MISCREG_DBGBXVR4 */); 335512479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBVR5_EL1) 335612479SCurtis.Dunham@arm.com .allPrivileges() 335712479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGBVR5 /*, MISCREG_DBGBXVR5 */); 335812479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBCR0_EL1) 335912479SCurtis.Dunham@arm.com .allPrivileges() 336012479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGBCR0); 336112479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBCR1_EL1) 336212479SCurtis.Dunham@arm.com .allPrivileges() 336312479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGBCR1); 336412479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBCR2_EL1) 336512479SCurtis.Dunham@arm.com .allPrivileges() 336612479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGBCR2); 336712479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBCR3_EL1) 336812479SCurtis.Dunham@arm.com .allPrivileges() 336912479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGBCR3); 337012479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBCR4_EL1) 337112479SCurtis.Dunham@arm.com .allPrivileges() 337212479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGBCR4); 337312479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGBCR5_EL1) 337412479SCurtis.Dunham@arm.com .allPrivileges() 337512479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGBCR5); 337612479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGWVR0_EL1) 337712479SCurtis.Dunham@arm.com .allPrivileges() 337812479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGWVR0); 337912479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGWVR1_EL1) 338012479SCurtis.Dunham@arm.com .allPrivileges() 338112479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGWVR1); 338212479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGWVR2_EL1) 338312479SCurtis.Dunham@arm.com .allPrivileges() 338412479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGWVR2); 338512479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGWVR3_EL1) 338612479SCurtis.Dunham@arm.com .allPrivileges() 338712479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGWVR3); 338812479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGWCR0_EL1) 338912479SCurtis.Dunham@arm.com .allPrivileges() 339012479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGWCR0); 339112479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGWCR1_EL1) 339212479SCurtis.Dunham@arm.com .allPrivileges() 339312479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGWCR1); 339412479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGWCR2_EL1) 339512479SCurtis.Dunham@arm.com .allPrivileges() 339612479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGWCR2); 339712479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGWCR3_EL1) 339812479SCurtis.Dunham@arm.com .allPrivileges() 339912479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGWCR3); 340012479SCurtis.Dunham@arm.com InitReg(MISCREG_MDCCSR_EL0) 340112479SCurtis.Dunham@arm.com .allPrivileges().monSecureWrite(0).monNonSecureWrite(0) 340212479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGDSCRint); 340312479SCurtis.Dunham@arm.com InitReg(MISCREG_MDDTR_EL0) 340412479SCurtis.Dunham@arm.com .allPrivileges(); 340512479SCurtis.Dunham@arm.com InitReg(MISCREG_MDDTRTX_EL0) 340612479SCurtis.Dunham@arm.com .allPrivileges(); 340712479SCurtis.Dunham@arm.com InitReg(MISCREG_MDDTRRX_EL0) 340812479SCurtis.Dunham@arm.com .allPrivileges(); 340912479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGVCR32_EL2) 341012479SCurtis.Dunham@arm.com .allPrivileges() 341112479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGVCR); 341212479SCurtis.Dunham@arm.com InitReg(MISCREG_MDRAR_EL1) 341312479SCurtis.Dunham@arm.com .allPrivileges().monSecureWrite(0).monNonSecureWrite(0) 341412479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGDRAR); 341512479SCurtis.Dunham@arm.com InitReg(MISCREG_OSLAR_EL1) 341612479SCurtis.Dunham@arm.com .allPrivileges().monSecureRead(0).monNonSecureRead(0) 341712479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGOSLAR); 341812479SCurtis.Dunham@arm.com InitReg(MISCREG_OSLSR_EL1) 341912479SCurtis.Dunham@arm.com .allPrivileges().monSecureWrite(0).monNonSecureWrite(0) 342012479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGOSLSR); 342112479SCurtis.Dunham@arm.com InitReg(MISCREG_OSDLR_EL1) 342212479SCurtis.Dunham@arm.com .allPrivileges() 342312479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGOSDLR); 342412479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGPRCR_EL1) 342512479SCurtis.Dunham@arm.com .allPrivileges() 342612479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGPRCR); 342712479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGCLAIMSET_EL1) 342812479SCurtis.Dunham@arm.com .allPrivileges() 342912479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGCLAIMSET); 343012479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGCLAIMCLR_EL1) 343112479SCurtis.Dunham@arm.com .allPrivileges() 343212479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGCLAIMCLR); 343312479SCurtis.Dunham@arm.com InitReg(MISCREG_DBGAUTHSTATUS_EL1) 343412479SCurtis.Dunham@arm.com .allPrivileges().monSecureWrite(0).monNonSecureWrite(0) 343512479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DBGAUTHSTATUS); 343612479SCurtis.Dunham@arm.com InitReg(MISCREG_TEECR32_EL1); 343712479SCurtis.Dunham@arm.com InitReg(MISCREG_TEEHBR32_EL1); 343812479SCurtis.Dunham@arm.com 343912479SCurtis.Dunham@arm.com // AArch64 registers (Op0=1,3); 344012479SCurtis.Dunham@arm.com InitReg(MISCREG_MIDR_EL1) 344112479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 344212479SCurtis.Dunham@arm.com InitReg(MISCREG_MPIDR_EL1) 344312479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 344412479SCurtis.Dunham@arm.com InitReg(MISCREG_REVIDR_EL1) 344512479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 344612479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_PFR0_EL1) 344712690Sgiacomo.travaglini@arm.com .allPrivileges().exceptUserMode().writes(0) 344812690Sgiacomo.travaglini@arm.com .mapsTo(MISCREG_ID_PFR0); 344912479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_PFR1_EL1) 345012690Sgiacomo.travaglini@arm.com .allPrivileges().exceptUserMode().writes(0) 345112690Sgiacomo.travaglini@arm.com .mapsTo(MISCREG_ID_PFR1); 345212479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_DFR0_EL1) 345312479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0) 345412479SCurtis.Dunham@arm.com .mapsTo(MISCREG_ID_DFR0); 345512479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_AFR0_EL1) 345612690Sgiacomo.travaglini@arm.com .allPrivileges().exceptUserMode().writes(0) 345712690Sgiacomo.travaglini@arm.com .mapsTo(MISCREG_ID_AFR0); 345812479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_MMFR0_EL1) 345912690Sgiacomo.travaglini@arm.com .allPrivileges().exceptUserMode().writes(0) 346012690Sgiacomo.travaglini@arm.com .mapsTo(MISCREG_ID_MMFR0); 346112479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_MMFR1_EL1) 346212690Sgiacomo.travaglini@arm.com .allPrivileges().exceptUserMode().writes(0) 346312690Sgiacomo.travaglini@arm.com .mapsTo(MISCREG_ID_MMFR1); 346412479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_MMFR2_EL1) 346512690Sgiacomo.travaglini@arm.com .allPrivileges().exceptUserMode().writes(0) 346612690Sgiacomo.travaglini@arm.com .mapsTo(MISCREG_ID_MMFR2); 346712479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_MMFR3_EL1) 346812690Sgiacomo.travaglini@arm.com .allPrivileges().exceptUserMode().writes(0) 346912690Sgiacomo.travaglini@arm.com .mapsTo(MISCREG_ID_MMFR3); 347012479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_ISAR0_EL1) 347112690Sgiacomo.travaglini@arm.com .allPrivileges().exceptUserMode().writes(0) 347212690Sgiacomo.travaglini@arm.com .mapsTo(MISCREG_ID_ISAR0); 347312479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_ISAR1_EL1) 347412690Sgiacomo.travaglini@arm.com .allPrivileges().exceptUserMode().writes(0) 347512690Sgiacomo.travaglini@arm.com .mapsTo(MISCREG_ID_ISAR1); 347612479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_ISAR2_EL1) 347712690Sgiacomo.travaglini@arm.com .allPrivileges().exceptUserMode().writes(0) 347812690Sgiacomo.travaglini@arm.com .mapsTo(MISCREG_ID_ISAR2); 347912479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_ISAR3_EL1) 348012690Sgiacomo.travaglini@arm.com .allPrivileges().exceptUserMode().writes(0) 348112690Sgiacomo.travaglini@arm.com .mapsTo(MISCREG_ID_ISAR3); 348212479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_ISAR4_EL1) 348312690Sgiacomo.travaglini@arm.com .allPrivileges().exceptUserMode().writes(0) 348412690Sgiacomo.travaglini@arm.com .mapsTo(MISCREG_ID_ISAR4); 348512479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_ISAR5_EL1) 348612690Sgiacomo.travaglini@arm.com .allPrivileges().exceptUserMode().writes(0) 348712690Sgiacomo.travaglini@arm.com .mapsTo(MISCREG_ID_ISAR5); 348812479SCurtis.Dunham@arm.com InitReg(MISCREG_MVFR0_EL1) 348912479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 349012479SCurtis.Dunham@arm.com InitReg(MISCREG_MVFR1_EL1) 349112479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 349212479SCurtis.Dunham@arm.com InitReg(MISCREG_MVFR2_EL1) 349312479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 349412479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_AA64PFR0_EL1) 349512479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 349612479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_AA64PFR1_EL1) 349712479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 349812479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_AA64DFR0_EL1) 349912479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 350012479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_AA64DFR1_EL1) 350112479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 350212479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_AA64AFR0_EL1) 350312479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 350412479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_AA64AFR1_EL1) 350512479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 350612479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_AA64ISAR0_EL1) 350712479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 350812479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_AA64ISAR1_EL1) 350912479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 351012479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_AA64MMFR0_EL1) 351112479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 351212479SCurtis.Dunham@arm.com InitReg(MISCREG_ID_AA64MMFR1_EL1) 351312479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 351413116Sgiacomo.travaglini@arm.com InitReg(MISCREG_ID_AA64MMFR2_EL1) 351513116Sgiacomo.travaglini@arm.com .allPrivileges().exceptUserMode().writes(0); 351612479SCurtis.Dunham@arm.com InitReg(MISCREG_CCSIDR_EL1) 351712479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 351812479SCurtis.Dunham@arm.com InitReg(MISCREG_CLIDR_EL1) 351912479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 352012479SCurtis.Dunham@arm.com InitReg(MISCREG_AIDR_EL1) 352112479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 352212479SCurtis.Dunham@arm.com InitReg(MISCREG_CSSELR_EL1) 352312479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode() 352412479SCurtis.Dunham@arm.com .mapsTo(MISCREG_CSSELR_NS); 352512479SCurtis.Dunham@arm.com InitReg(MISCREG_CTR_EL0) 352612479SCurtis.Dunham@arm.com .reads(1); 352712479SCurtis.Dunham@arm.com InitReg(MISCREG_DCZID_EL0) 352812479SCurtis.Dunham@arm.com .reads(1); 352912479SCurtis.Dunham@arm.com InitReg(MISCREG_VPIDR_EL2) 353012479SCurtis.Dunham@arm.com .hyp().mon() 353112479SCurtis.Dunham@arm.com .mapsTo(MISCREG_VPIDR); 353212479SCurtis.Dunham@arm.com InitReg(MISCREG_VMPIDR_EL2) 353312479SCurtis.Dunham@arm.com .hyp().mon() 353412479SCurtis.Dunham@arm.com .mapsTo(MISCREG_VMPIDR); 353512479SCurtis.Dunham@arm.com InitReg(MISCREG_SCTLR_EL1) 353612479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode() 353712479SCurtis.Dunham@arm.com .mapsTo(MISCREG_SCTLR_NS); 353812479SCurtis.Dunham@arm.com InitReg(MISCREG_ACTLR_EL1) 353912479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode() 354012479SCurtis.Dunham@arm.com .mapsTo(MISCREG_ACTLR_NS); 354112479SCurtis.Dunham@arm.com InitReg(MISCREG_CPACR_EL1) 354212479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode() 354312479SCurtis.Dunham@arm.com .mapsTo(MISCREG_CPACR); 354412479SCurtis.Dunham@arm.com InitReg(MISCREG_SCTLR_EL2) 354512479SCurtis.Dunham@arm.com .hyp().mon() 354612479SCurtis.Dunham@arm.com .mapsTo(MISCREG_HSCTLR); 354712479SCurtis.Dunham@arm.com InitReg(MISCREG_ACTLR_EL2) 354812479SCurtis.Dunham@arm.com .hyp().mon() 354912479SCurtis.Dunham@arm.com .mapsTo(MISCREG_HACTLR); 355012479SCurtis.Dunham@arm.com InitReg(MISCREG_HCR_EL2) 355112479SCurtis.Dunham@arm.com .hyp().mon() 355212479SCurtis.Dunham@arm.com .mapsTo(MISCREG_HCR /*, MISCREG_HCR2*/); 355312479SCurtis.Dunham@arm.com InitReg(MISCREG_MDCR_EL2) 355412479SCurtis.Dunham@arm.com .hyp().mon() 355512479SCurtis.Dunham@arm.com .mapsTo(MISCREG_HDCR); 355612479SCurtis.Dunham@arm.com InitReg(MISCREG_CPTR_EL2) 355712479SCurtis.Dunham@arm.com .hyp().mon() 355812479SCurtis.Dunham@arm.com .mapsTo(MISCREG_HCPTR); 355912479SCurtis.Dunham@arm.com InitReg(MISCREG_HSTR_EL2) 356012479SCurtis.Dunham@arm.com .hyp().mon() 356112479SCurtis.Dunham@arm.com .mapsTo(MISCREG_HSTR); 356212479SCurtis.Dunham@arm.com InitReg(MISCREG_HACR_EL2) 356312479SCurtis.Dunham@arm.com .hyp().mon() 356412479SCurtis.Dunham@arm.com .mapsTo(MISCREG_HACR); 356512479SCurtis.Dunham@arm.com InitReg(MISCREG_SCTLR_EL3) 356612479SCurtis.Dunham@arm.com .mon(); 356712479SCurtis.Dunham@arm.com InitReg(MISCREG_ACTLR_EL3) 356812479SCurtis.Dunham@arm.com .mon(); 356912479SCurtis.Dunham@arm.com InitReg(MISCREG_SCR_EL3) 357012479SCurtis.Dunham@arm.com .mon() 357112479SCurtis.Dunham@arm.com .mapsTo(MISCREG_SCR); // NAM D7-2005 357212479SCurtis.Dunham@arm.com InitReg(MISCREG_SDER32_EL3) 357312479SCurtis.Dunham@arm.com .mon() 357412479SCurtis.Dunham@arm.com .mapsTo(MISCREG_SDER); 357512479SCurtis.Dunham@arm.com InitReg(MISCREG_CPTR_EL3) 357612479SCurtis.Dunham@arm.com .mon(); 357712479SCurtis.Dunham@arm.com InitReg(MISCREG_MDCR_EL3) 357812479SCurtis.Dunham@arm.com .mon(); 357912479SCurtis.Dunham@arm.com InitReg(MISCREG_TTBR0_EL1) 358012479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode() 358112479SCurtis.Dunham@arm.com .mapsTo(MISCREG_TTBR0_NS); 358212479SCurtis.Dunham@arm.com InitReg(MISCREG_TTBR1_EL1) 358312479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode() 358412479SCurtis.Dunham@arm.com .mapsTo(MISCREG_TTBR1_NS); 358512479SCurtis.Dunham@arm.com InitReg(MISCREG_TCR_EL1) 358612479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode() 358712479SCurtis.Dunham@arm.com .mapsTo(MISCREG_TTBCR_NS); 358812479SCurtis.Dunham@arm.com InitReg(MISCREG_TTBR0_EL2) 358912479SCurtis.Dunham@arm.com .hyp().mon() 359012479SCurtis.Dunham@arm.com .mapsTo(MISCREG_HTTBR); 359112675Sgiacomo.travaglini@arm.com InitReg(MISCREG_TTBR1_EL2) 359212709Sgiacomo.travaglini@arm.com .hyp().mon(); 359312479SCurtis.Dunham@arm.com InitReg(MISCREG_TCR_EL2) 359412479SCurtis.Dunham@arm.com .hyp().mon() 359512479SCurtis.Dunham@arm.com .mapsTo(MISCREG_HTCR); 359612479SCurtis.Dunham@arm.com InitReg(MISCREG_VTTBR_EL2) 359712479SCurtis.Dunham@arm.com .hyp().mon() 359812479SCurtis.Dunham@arm.com .mapsTo(MISCREG_VTTBR); 359912479SCurtis.Dunham@arm.com InitReg(MISCREG_VTCR_EL2) 360012479SCurtis.Dunham@arm.com .hyp().mon() 360112479SCurtis.Dunham@arm.com .mapsTo(MISCREG_VTCR); 360212479SCurtis.Dunham@arm.com InitReg(MISCREG_TTBR0_EL3) 360312479SCurtis.Dunham@arm.com .mon(); 360412479SCurtis.Dunham@arm.com InitReg(MISCREG_TCR_EL3) 360512479SCurtis.Dunham@arm.com .mon(); 360612479SCurtis.Dunham@arm.com InitReg(MISCREG_DACR32_EL2) 360712479SCurtis.Dunham@arm.com .hyp().mon() 360812479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DACR_NS); 360912479SCurtis.Dunham@arm.com InitReg(MISCREG_SPSR_EL1) 361012479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode() 361112479SCurtis.Dunham@arm.com .mapsTo(MISCREG_SPSR_SVC); // NAM C5.2.17 SPSR_EL1 361212479SCurtis.Dunham@arm.com InitReg(MISCREG_ELR_EL1) 361312479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 361412479SCurtis.Dunham@arm.com InitReg(MISCREG_SP_EL0) 361512479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 361612479SCurtis.Dunham@arm.com InitReg(MISCREG_SPSEL) 361712479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 361812479SCurtis.Dunham@arm.com InitReg(MISCREG_CURRENTEL) 361912479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 362012479SCurtis.Dunham@arm.com InitReg(MISCREG_NZCV) 362112479SCurtis.Dunham@arm.com .allPrivileges(); 362212479SCurtis.Dunham@arm.com InitReg(MISCREG_DAIF) 362312479SCurtis.Dunham@arm.com .allPrivileges(); 362412479SCurtis.Dunham@arm.com InitReg(MISCREG_FPCR) 362512479SCurtis.Dunham@arm.com .allPrivileges(); 362612479SCurtis.Dunham@arm.com InitReg(MISCREG_FPSR) 362712479SCurtis.Dunham@arm.com .allPrivileges(); 362812479SCurtis.Dunham@arm.com InitReg(MISCREG_DSPSR_EL0) 362912479SCurtis.Dunham@arm.com .allPrivileges(); 363012479SCurtis.Dunham@arm.com InitReg(MISCREG_DLR_EL0) 363112479SCurtis.Dunham@arm.com .allPrivileges(); 363212479SCurtis.Dunham@arm.com InitReg(MISCREG_SPSR_EL2) 363312479SCurtis.Dunham@arm.com .hyp().mon() 363412479SCurtis.Dunham@arm.com .mapsTo(MISCREG_SPSR_HYP); // NAM C5.2.18 SPSR_EL2 363512479SCurtis.Dunham@arm.com InitReg(MISCREG_ELR_EL2) 363612479SCurtis.Dunham@arm.com .hyp().mon(); 363712479SCurtis.Dunham@arm.com InitReg(MISCREG_SP_EL1) 363812479SCurtis.Dunham@arm.com .hyp().mon(); 363912479SCurtis.Dunham@arm.com InitReg(MISCREG_SPSR_IRQ_AA64) 364012479SCurtis.Dunham@arm.com .hyp().mon(); 364112479SCurtis.Dunham@arm.com InitReg(MISCREG_SPSR_ABT_AA64) 364212479SCurtis.Dunham@arm.com .hyp().mon(); 364312479SCurtis.Dunham@arm.com InitReg(MISCREG_SPSR_UND_AA64) 364412479SCurtis.Dunham@arm.com .hyp().mon(); 364512479SCurtis.Dunham@arm.com InitReg(MISCREG_SPSR_FIQ_AA64) 364612479SCurtis.Dunham@arm.com .hyp().mon(); 364712479SCurtis.Dunham@arm.com InitReg(MISCREG_SPSR_EL3) 364812479SCurtis.Dunham@arm.com .mon() 364912479SCurtis.Dunham@arm.com .mapsTo(MISCREG_SPSR_MON); // NAM C5.2.19 SPSR_EL3 365012479SCurtis.Dunham@arm.com InitReg(MISCREG_ELR_EL3) 365112479SCurtis.Dunham@arm.com .mon(); 365212479SCurtis.Dunham@arm.com InitReg(MISCREG_SP_EL2) 365312479SCurtis.Dunham@arm.com .mon(); 365412479SCurtis.Dunham@arm.com InitReg(MISCREG_AFSR0_EL1) 365512479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode() 365612479SCurtis.Dunham@arm.com .mapsTo(MISCREG_ADFSR_NS); 365712479SCurtis.Dunham@arm.com InitReg(MISCREG_AFSR1_EL1) 365812479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode() 365912479SCurtis.Dunham@arm.com .mapsTo(MISCREG_AIFSR_NS); 366012479SCurtis.Dunham@arm.com InitReg(MISCREG_ESR_EL1) 366112479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 366212479SCurtis.Dunham@arm.com InitReg(MISCREG_IFSR32_EL2) 366312479SCurtis.Dunham@arm.com .hyp().mon() 366412479SCurtis.Dunham@arm.com .mapsTo(MISCREG_IFSR_NS); 366512479SCurtis.Dunham@arm.com InitReg(MISCREG_AFSR0_EL2) 366612479SCurtis.Dunham@arm.com .hyp().mon() 366712479SCurtis.Dunham@arm.com .mapsTo(MISCREG_HADFSR); 366812479SCurtis.Dunham@arm.com InitReg(MISCREG_AFSR1_EL2) 366912479SCurtis.Dunham@arm.com .hyp().mon() 367012479SCurtis.Dunham@arm.com .mapsTo(MISCREG_HAIFSR); 367112479SCurtis.Dunham@arm.com InitReg(MISCREG_ESR_EL2) 367212479SCurtis.Dunham@arm.com .hyp().mon() 367312479SCurtis.Dunham@arm.com .mapsTo(MISCREG_HSR); 367412479SCurtis.Dunham@arm.com InitReg(MISCREG_FPEXC32_EL2) 367512669Schuan.zhu@arm.com .hyp().mon().mapsTo(MISCREG_FPEXC); 367612479SCurtis.Dunham@arm.com InitReg(MISCREG_AFSR0_EL3) 367712479SCurtis.Dunham@arm.com .mon(); 367812479SCurtis.Dunham@arm.com InitReg(MISCREG_AFSR1_EL3) 367912479SCurtis.Dunham@arm.com .mon(); 368012479SCurtis.Dunham@arm.com InitReg(MISCREG_ESR_EL3) 368112479SCurtis.Dunham@arm.com .mon(); 368212479SCurtis.Dunham@arm.com InitReg(MISCREG_FAR_EL1) 368312479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode() 368412479SCurtis.Dunham@arm.com .mapsTo(MISCREG_DFAR_NS, MISCREG_IFAR_NS); 368512479SCurtis.Dunham@arm.com InitReg(MISCREG_FAR_EL2) 368612479SCurtis.Dunham@arm.com .hyp().mon() 368712479SCurtis.Dunham@arm.com .mapsTo(MISCREG_HDFAR, MISCREG_HIFAR); 368812479SCurtis.Dunham@arm.com InitReg(MISCREG_HPFAR_EL2) 368912479SCurtis.Dunham@arm.com .hyp().mon() 369012479SCurtis.Dunham@arm.com .mapsTo(MISCREG_HPFAR); 369112479SCurtis.Dunham@arm.com InitReg(MISCREG_FAR_EL3) 369212479SCurtis.Dunham@arm.com .mon(); 369312479SCurtis.Dunham@arm.com InitReg(MISCREG_IC_IALLUIS) 369412479SCurtis.Dunham@arm.com .warnNotFail() 369512479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 369612479SCurtis.Dunham@arm.com InitReg(MISCREG_PAR_EL1) 369712479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode() 369812479SCurtis.Dunham@arm.com .mapsTo(MISCREG_PAR_NS); 369912479SCurtis.Dunham@arm.com InitReg(MISCREG_IC_IALLU) 370012479SCurtis.Dunham@arm.com .warnNotFail() 370112479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 370212479SCurtis.Dunham@arm.com InitReg(MISCREG_DC_IVAC_Xt) 370312479SCurtis.Dunham@arm.com .warnNotFail() 370412502Snikos.nikoleris@arm.com .writes(1).exceptUserMode(); 370512479SCurtis.Dunham@arm.com InitReg(MISCREG_DC_ISW_Xt) 370612479SCurtis.Dunham@arm.com .warnNotFail() 370712479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 370812479SCurtis.Dunham@arm.com InitReg(MISCREG_AT_S1E1R_Xt) 370912479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 371012479SCurtis.Dunham@arm.com InitReg(MISCREG_AT_S1E1W_Xt) 371112479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 371212479SCurtis.Dunham@arm.com InitReg(MISCREG_AT_S1E0R_Xt) 371312479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 371412479SCurtis.Dunham@arm.com InitReg(MISCREG_AT_S1E0W_Xt) 371512479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 371612479SCurtis.Dunham@arm.com InitReg(MISCREG_DC_CSW_Xt) 371712479SCurtis.Dunham@arm.com .warnNotFail() 371812479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 371912479SCurtis.Dunham@arm.com InitReg(MISCREG_DC_CISW_Xt) 372012479SCurtis.Dunham@arm.com .warnNotFail() 372112479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 372212479SCurtis.Dunham@arm.com InitReg(MISCREG_DC_ZVA_Xt) 372312479SCurtis.Dunham@arm.com .warnNotFail() 372412479SCurtis.Dunham@arm.com .writes(1).userSecureWrite(0); 372512479SCurtis.Dunham@arm.com InitReg(MISCREG_IC_IVAU_Xt) 372612479SCurtis.Dunham@arm.com .writes(1); 372712479SCurtis.Dunham@arm.com InitReg(MISCREG_DC_CVAC_Xt) 372812479SCurtis.Dunham@arm.com .warnNotFail() 372912479SCurtis.Dunham@arm.com .writes(1); 373012479SCurtis.Dunham@arm.com InitReg(MISCREG_DC_CVAU_Xt) 373112479SCurtis.Dunham@arm.com .warnNotFail() 373212479SCurtis.Dunham@arm.com .writes(1); 373312479SCurtis.Dunham@arm.com InitReg(MISCREG_DC_CIVAC_Xt) 373412479SCurtis.Dunham@arm.com .warnNotFail() 373512479SCurtis.Dunham@arm.com .writes(1); 373612479SCurtis.Dunham@arm.com InitReg(MISCREG_AT_S1E2R_Xt) 373712479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 373812479SCurtis.Dunham@arm.com InitReg(MISCREG_AT_S1E2W_Xt) 373912479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 374012479SCurtis.Dunham@arm.com InitReg(MISCREG_AT_S12E1R_Xt) 374112479SCurtis.Dunham@arm.com .hypWrite().monSecureWrite().monNonSecureWrite(); 374212479SCurtis.Dunham@arm.com InitReg(MISCREG_AT_S12E1W_Xt) 374312479SCurtis.Dunham@arm.com .hypWrite().monSecureWrite().monNonSecureWrite(); 374412479SCurtis.Dunham@arm.com InitReg(MISCREG_AT_S12E0R_Xt) 374512479SCurtis.Dunham@arm.com .hypWrite().monSecureWrite().monNonSecureWrite(); 374612479SCurtis.Dunham@arm.com InitReg(MISCREG_AT_S12E0W_Xt) 374712479SCurtis.Dunham@arm.com .hypWrite().monSecureWrite().monNonSecureWrite(); 374812479SCurtis.Dunham@arm.com InitReg(MISCREG_AT_S1E3R_Xt) 374912479SCurtis.Dunham@arm.com .monSecureWrite().monNonSecureWrite(); 375012479SCurtis.Dunham@arm.com InitReg(MISCREG_AT_S1E3W_Xt) 375112479SCurtis.Dunham@arm.com .monSecureWrite().monNonSecureWrite(); 375212479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_VMALLE1IS) 375312479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 375412479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_VAE1IS_Xt) 375512479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 375612479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_ASIDE1IS_Xt) 375712479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 375812479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_VAAE1IS_Xt) 375912479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 376012479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_VALE1IS_Xt) 376112479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 376212479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_VAALE1IS_Xt) 376312479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 376412479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_VMALLE1) 376512479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 376612479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_VAE1_Xt) 376712479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 376812479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_ASIDE1_Xt) 376912479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 377012479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_VAAE1_Xt) 377112479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 377212479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_VALE1_Xt) 377312479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 377412479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_VAALE1_Xt) 377512479SCurtis.Dunham@arm.com .writes(1).exceptUserMode(); 377612479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_IPAS2E1IS_Xt) 377712479SCurtis.Dunham@arm.com .hypWrite().monSecureWrite().monNonSecureWrite(); 377812479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_IPAS2LE1IS_Xt) 377912479SCurtis.Dunham@arm.com .hypWrite().monSecureWrite().monNonSecureWrite(); 378012479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_ALLE2IS) 378112479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 378212479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_VAE2IS_Xt) 378312479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 378412479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_ALLE1IS) 378512479SCurtis.Dunham@arm.com .hypWrite().monSecureWrite().monNonSecureWrite(); 378612479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_VALE2IS_Xt) 378712479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 378812479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_VMALLS12E1IS) 378912479SCurtis.Dunham@arm.com .hypWrite().monSecureWrite().monNonSecureWrite(); 379012479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_IPAS2E1_Xt) 379112479SCurtis.Dunham@arm.com .hypWrite().monSecureWrite().monNonSecureWrite(); 379212479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_IPAS2LE1_Xt) 379312479SCurtis.Dunham@arm.com .hypWrite().monSecureWrite().monNonSecureWrite(); 379412479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_ALLE2) 379512479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 379612479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_VAE2_Xt) 379712479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 379812479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_ALLE1) 379912479SCurtis.Dunham@arm.com .hypWrite().monSecureWrite().monNonSecureWrite(); 380012479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_VALE2_Xt) 380112479SCurtis.Dunham@arm.com .monNonSecureWrite().hypWrite(); 380212479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_VMALLS12E1) 380312479SCurtis.Dunham@arm.com .hypWrite().monSecureWrite().monNonSecureWrite(); 380412479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_ALLE3IS) 380512479SCurtis.Dunham@arm.com .monSecureWrite().monNonSecureWrite(); 380612479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_VAE3IS_Xt) 380712479SCurtis.Dunham@arm.com .monSecureWrite().monNonSecureWrite(); 380812479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_VALE3IS_Xt) 380912479SCurtis.Dunham@arm.com .monSecureWrite().monNonSecureWrite(); 381012479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_ALLE3) 381112479SCurtis.Dunham@arm.com .monSecureWrite().monNonSecureWrite(); 381212479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_VAE3_Xt) 381312479SCurtis.Dunham@arm.com .monSecureWrite().monNonSecureWrite(); 381412479SCurtis.Dunham@arm.com InitReg(MISCREG_TLBI_VALE3_Xt) 381512479SCurtis.Dunham@arm.com .monSecureWrite().monNonSecureWrite(); 381612479SCurtis.Dunham@arm.com InitReg(MISCREG_PMINTENSET_EL1) 381712479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode() 381812479SCurtis.Dunham@arm.com .mapsTo(MISCREG_PMINTENSET); 381912479SCurtis.Dunham@arm.com InitReg(MISCREG_PMINTENCLR_EL1) 382012479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode() 382112479SCurtis.Dunham@arm.com .mapsTo(MISCREG_PMINTENCLR); 382212479SCurtis.Dunham@arm.com InitReg(MISCREG_PMCR_EL0) 382312479SCurtis.Dunham@arm.com .allPrivileges() 382412479SCurtis.Dunham@arm.com .mapsTo(MISCREG_PMCR); 382512479SCurtis.Dunham@arm.com InitReg(MISCREG_PMCNTENSET_EL0) 382612479SCurtis.Dunham@arm.com .allPrivileges() 382712479SCurtis.Dunham@arm.com .mapsTo(MISCREG_PMCNTENSET); 382812479SCurtis.Dunham@arm.com InitReg(MISCREG_PMCNTENCLR_EL0) 382912479SCurtis.Dunham@arm.com .allPrivileges() 383012479SCurtis.Dunham@arm.com .mapsTo(MISCREG_PMCNTENCLR); 383112479SCurtis.Dunham@arm.com InitReg(MISCREG_PMOVSCLR_EL0) 383212479SCurtis.Dunham@arm.com .allPrivileges(); 383312479SCurtis.Dunham@arm.com// .mapsTo(MISCREG_PMOVSCLR); 383412479SCurtis.Dunham@arm.com InitReg(MISCREG_PMSWINC_EL0) 383512479SCurtis.Dunham@arm.com .writes(1).user() 383612479SCurtis.Dunham@arm.com .mapsTo(MISCREG_PMSWINC); 383712479SCurtis.Dunham@arm.com InitReg(MISCREG_PMSELR_EL0) 383812479SCurtis.Dunham@arm.com .allPrivileges() 383912479SCurtis.Dunham@arm.com .mapsTo(MISCREG_PMSELR); 384012479SCurtis.Dunham@arm.com InitReg(MISCREG_PMCEID0_EL0) 384112479SCurtis.Dunham@arm.com .reads(1).user() 384212479SCurtis.Dunham@arm.com .mapsTo(MISCREG_PMCEID0); 384312479SCurtis.Dunham@arm.com InitReg(MISCREG_PMCEID1_EL0) 384412479SCurtis.Dunham@arm.com .reads(1).user() 384512479SCurtis.Dunham@arm.com .mapsTo(MISCREG_PMCEID1); 384612479SCurtis.Dunham@arm.com InitReg(MISCREG_PMCCNTR_EL0) 384712479SCurtis.Dunham@arm.com .allPrivileges() 384812479SCurtis.Dunham@arm.com .mapsTo(MISCREG_PMCCNTR); 384912479SCurtis.Dunham@arm.com InitReg(MISCREG_PMXEVTYPER_EL0) 385012479SCurtis.Dunham@arm.com .allPrivileges() 385112479SCurtis.Dunham@arm.com .mapsTo(MISCREG_PMXEVTYPER); 385212479SCurtis.Dunham@arm.com InitReg(MISCREG_PMCCFILTR_EL0) 385312479SCurtis.Dunham@arm.com .allPrivileges(); 385412479SCurtis.Dunham@arm.com InitReg(MISCREG_PMXEVCNTR_EL0) 385512479SCurtis.Dunham@arm.com .allPrivileges() 385612479SCurtis.Dunham@arm.com .mapsTo(MISCREG_PMXEVCNTR); 385712479SCurtis.Dunham@arm.com InitReg(MISCREG_PMUSERENR_EL0) 385812479SCurtis.Dunham@arm.com .allPrivileges().userNonSecureWrite(0).userSecureWrite(0) 385912479SCurtis.Dunham@arm.com .mapsTo(MISCREG_PMUSERENR); 386012479SCurtis.Dunham@arm.com InitReg(MISCREG_PMOVSSET_EL0) 386112479SCurtis.Dunham@arm.com .allPrivileges() 386212479SCurtis.Dunham@arm.com .mapsTo(MISCREG_PMOVSSET); 386312479SCurtis.Dunham@arm.com InitReg(MISCREG_MAIR_EL1) 386412479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode() 386512479SCurtis.Dunham@arm.com .mapsTo(MISCREG_PRRR_NS, MISCREG_NMRR_NS); 386612479SCurtis.Dunham@arm.com InitReg(MISCREG_AMAIR_EL1) 386712479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode() 386812479SCurtis.Dunham@arm.com .mapsTo(MISCREG_AMAIR0_NS, MISCREG_AMAIR1_NS); 386912479SCurtis.Dunham@arm.com InitReg(MISCREG_MAIR_EL2) 387012479SCurtis.Dunham@arm.com .hyp().mon() 387112479SCurtis.Dunham@arm.com .mapsTo(MISCREG_HMAIR0, MISCREG_HMAIR1); 387212479SCurtis.Dunham@arm.com InitReg(MISCREG_AMAIR_EL2) 387312479SCurtis.Dunham@arm.com .hyp().mon() 387412479SCurtis.Dunham@arm.com .mapsTo(MISCREG_HAMAIR0, MISCREG_HAMAIR1); 387512479SCurtis.Dunham@arm.com InitReg(MISCREG_MAIR_EL3) 387612479SCurtis.Dunham@arm.com .mon(); 387712479SCurtis.Dunham@arm.com InitReg(MISCREG_AMAIR_EL3) 387812479SCurtis.Dunham@arm.com .mon(); 387912479SCurtis.Dunham@arm.com InitReg(MISCREG_L2CTLR_EL1) 388012479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 388112479SCurtis.Dunham@arm.com InitReg(MISCREG_L2ECTLR_EL1) 388212479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 388312479SCurtis.Dunham@arm.com InitReg(MISCREG_VBAR_EL1) 388412479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode() 388512479SCurtis.Dunham@arm.com .mapsTo(MISCREG_VBAR_NS); 388612479SCurtis.Dunham@arm.com InitReg(MISCREG_RVBAR_EL1) 388712479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 388812479SCurtis.Dunham@arm.com InitReg(MISCREG_ISR_EL1) 388912479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 389012479SCurtis.Dunham@arm.com InitReg(MISCREG_VBAR_EL2) 389112479SCurtis.Dunham@arm.com .hyp().mon() 389212479SCurtis.Dunham@arm.com .mapsTo(MISCREG_HVBAR); 389312479SCurtis.Dunham@arm.com InitReg(MISCREG_RVBAR_EL2) 389412479SCurtis.Dunham@arm.com .mon().hyp().writes(0); 389512479SCurtis.Dunham@arm.com InitReg(MISCREG_VBAR_EL3) 389612479SCurtis.Dunham@arm.com .mon(); 389712479SCurtis.Dunham@arm.com InitReg(MISCREG_RVBAR_EL3) 389812479SCurtis.Dunham@arm.com .mon().writes(0); 389912479SCurtis.Dunham@arm.com InitReg(MISCREG_RMR_EL3) 390012479SCurtis.Dunham@arm.com .mon(); 390112479SCurtis.Dunham@arm.com InitReg(MISCREG_CONTEXTIDR_EL1) 390212479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode() 390312479SCurtis.Dunham@arm.com .mapsTo(MISCREG_CONTEXTIDR_NS); 390412479SCurtis.Dunham@arm.com InitReg(MISCREG_TPIDR_EL1) 390512479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode() 390612479SCurtis.Dunham@arm.com .mapsTo(MISCREG_TPIDRPRW_NS); 390712479SCurtis.Dunham@arm.com InitReg(MISCREG_TPIDR_EL0) 390812479SCurtis.Dunham@arm.com .allPrivileges() 390912479SCurtis.Dunham@arm.com .mapsTo(MISCREG_TPIDRURW_NS); 391012479SCurtis.Dunham@arm.com InitReg(MISCREG_TPIDRRO_EL0) 391112479SCurtis.Dunham@arm.com .allPrivileges().userNonSecureWrite(0).userSecureWrite(0) 391212479SCurtis.Dunham@arm.com .mapsTo(MISCREG_TPIDRURO_NS); 391312479SCurtis.Dunham@arm.com InitReg(MISCREG_TPIDR_EL2) 391412479SCurtis.Dunham@arm.com .hyp().mon() 391512479SCurtis.Dunham@arm.com .mapsTo(MISCREG_HTPIDR); 391612479SCurtis.Dunham@arm.com InitReg(MISCREG_TPIDR_EL3) 391712479SCurtis.Dunham@arm.com .mon(); 391812479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTKCTL_EL1) 391912479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode() 392012479SCurtis.Dunham@arm.com .mapsTo(MISCREG_CNTKCTL); 392112479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTFRQ_EL0) 392212479SCurtis.Dunham@arm.com .reads(1).mon() 392312479SCurtis.Dunham@arm.com .mapsTo(MISCREG_CNTFRQ); 392412479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTPCT_EL0) 392512479SCurtis.Dunham@arm.com .reads(1) 392612479SCurtis.Dunham@arm.com .mapsTo(MISCREG_CNTPCT); /* 64b */ 392712479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTVCT_EL0) 392812479SCurtis.Dunham@arm.com .unverifiable() 392912479SCurtis.Dunham@arm.com .reads(1) 393012479SCurtis.Dunham@arm.com .mapsTo(MISCREG_CNTVCT); /* 64b */ 393112479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTP_TVAL_EL0) 393212479SCurtis.Dunham@arm.com .allPrivileges() 393312479SCurtis.Dunham@arm.com .mapsTo(MISCREG_CNTP_TVAL_NS); 393412479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTP_CTL_EL0) 393512479SCurtis.Dunham@arm.com .allPrivileges() 393612479SCurtis.Dunham@arm.com .mapsTo(MISCREG_CNTP_CTL_NS); 393712479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTP_CVAL_EL0) 393812479SCurtis.Dunham@arm.com .allPrivileges() 393912479SCurtis.Dunham@arm.com .mapsTo(MISCREG_CNTP_CVAL_NS); /* 64b */ 394012479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTV_TVAL_EL0) 394112479SCurtis.Dunham@arm.com .allPrivileges() 394212479SCurtis.Dunham@arm.com .mapsTo(MISCREG_CNTV_TVAL); 394312479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTV_CTL_EL0) 394412479SCurtis.Dunham@arm.com .allPrivileges() 394512479SCurtis.Dunham@arm.com .mapsTo(MISCREG_CNTV_CTL); 394612479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTV_CVAL_EL0) 394712479SCurtis.Dunham@arm.com .allPrivileges() 394812479SCurtis.Dunham@arm.com .mapsTo(MISCREG_CNTV_CVAL); /* 64b */ 394912479SCurtis.Dunham@arm.com InitReg(MISCREG_PMEVCNTR0_EL0) 395012479SCurtis.Dunham@arm.com .allPrivileges(); 395112479SCurtis.Dunham@arm.com// .mapsTo(MISCREG_PMEVCNTR0); 395212479SCurtis.Dunham@arm.com InitReg(MISCREG_PMEVCNTR1_EL0) 395312479SCurtis.Dunham@arm.com .allPrivileges(); 395412479SCurtis.Dunham@arm.com// .mapsTo(MISCREG_PMEVCNTR1); 395512479SCurtis.Dunham@arm.com InitReg(MISCREG_PMEVCNTR2_EL0) 395612479SCurtis.Dunham@arm.com .allPrivileges(); 395712479SCurtis.Dunham@arm.com// .mapsTo(MISCREG_PMEVCNTR2); 395812479SCurtis.Dunham@arm.com InitReg(MISCREG_PMEVCNTR3_EL0) 395912479SCurtis.Dunham@arm.com .allPrivileges(); 396012479SCurtis.Dunham@arm.com// .mapsTo(MISCREG_PMEVCNTR3); 396112479SCurtis.Dunham@arm.com InitReg(MISCREG_PMEVCNTR4_EL0) 396212479SCurtis.Dunham@arm.com .allPrivileges(); 396312479SCurtis.Dunham@arm.com// .mapsTo(MISCREG_PMEVCNTR4); 396412479SCurtis.Dunham@arm.com InitReg(MISCREG_PMEVCNTR5_EL0) 396512479SCurtis.Dunham@arm.com .allPrivileges(); 396612479SCurtis.Dunham@arm.com// .mapsTo(MISCREG_PMEVCNTR5); 396712479SCurtis.Dunham@arm.com InitReg(MISCREG_PMEVTYPER0_EL0) 396812479SCurtis.Dunham@arm.com .allPrivileges(); 396912479SCurtis.Dunham@arm.com// .mapsTo(MISCREG_PMEVTYPER0); 397012479SCurtis.Dunham@arm.com InitReg(MISCREG_PMEVTYPER1_EL0) 397112479SCurtis.Dunham@arm.com .allPrivileges(); 397212479SCurtis.Dunham@arm.com// .mapsTo(MISCREG_PMEVTYPER1); 397312479SCurtis.Dunham@arm.com InitReg(MISCREG_PMEVTYPER2_EL0) 397412479SCurtis.Dunham@arm.com .allPrivileges(); 397512479SCurtis.Dunham@arm.com// .mapsTo(MISCREG_PMEVTYPER2); 397612479SCurtis.Dunham@arm.com InitReg(MISCREG_PMEVTYPER3_EL0) 397712479SCurtis.Dunham@arm.com .allPrivileges(); 397812479SCurtis.Dunham@arm.com// .mapsTo(MISCREG_PMEVTYPER3); 397912479SCurtis.Dunham@arm.com InitReg(MISCREG_PMEVTYPER4_EL0) 398012479SCurtis.Dunham@arm.com .allPrivileges(); 398112479SCurtis.Dunham@arm.com// .mapsTo(MISCREG_PMEVTYPER4); 398212479SCurtis.Dunham@arm.com InitReg(MISCREG_PMEVTYPER5_EL0) 398312479SCurtis.Dunham@arm.com .allPrivileges(); 398412479SCurtis.Dunham@arm.com// .mapsTo(MISCREG_PMEVTYPER5); 398512479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTVOFF_EL2) 398612479SCurtis.Dunham@arm.com .hyp().mon() 398712479SCurtis.Dunham@arm.com .mapsTo(MISCREG_CNTVOFF); /* 64b */ 398812479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTHCTL_EL2) 398912733Sandreas.sandberg@arm.com .mon().hyp() 399012479SCurtis.Dunham@arm.com .mapsTo(MISCREG_CNTHCTL); 399112479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTHP_TVAL_EL2) 399212733Sandreas.sandberg@arm.com .mon().hyp() 399312479SCurtis.Dunham@arm.com .mapsTo(MISCREG_CNTHP_TVAL); 399412479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTHP_CTL_EL2) 399512733Sandreas.sandberg@arm.com .mon().hyp() 399612479SCurtis.Dunham@arm.com .mapsTo(MISCREG_CNTHP_CTL); 399712479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTHP_CVAL_EL2) 399812733Sandreas.sandberg@arm.com .mon().hyp() 399912479SCurtis.Dunham@arm.com .mapsTo(MISCREG_CNTHP_CVAL); /* 64b */ 400012479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTPS_TVAL_EL1) 400112733Sandreas.sandberg@arm.com .mon().privSecure(); 400212479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTPS_CTL_EL1) 400312733Sandreas.sandberg@arm.com .mon().privSecure(); 400412479SCurtis.Dunham@arm.com InitReg(MISCREG_CNTPS_CVAL_EL1) 400512733Sandreas.sandberg@arm.com .mon().privSecure(); 400612479SCurtis.Dunham@arm.com InitReg(MISCREG_IL1DATA0_EL1) 400712479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 400812479SCurtis.Dunham@arm.com InitReg(MISCREG_IL1DATA1_EL1) 400912479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 401012479SCurtis.Dunham@arm.com InitReg(MISCREG_IL1DATA2_EL1) 401112479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 401212479SCurtis.Dunham@arm.com InitReg(MISCREG_IL1DATA3_EL1) 401312479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 401412479SCurtis.Dunham@arm.com InitReg(MISCREG_DL1DATA0_EL1) 401512479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 401612479SCurtis.Dunham@arm.com InitReg(MISCREG_DL1DATA1_EL1) 401712479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 401812479SCurtis.Dunham@arm.com InitReg(MISCREG_DL1DATA2_EL1) 401912479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 402012479SCurtis.Dunham@arm.com InitReg(MISCREG_DL1DATA3_EL1) 402112479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 402212479SCurtis.Dunham@arm.com InitReg(MISCREG_DL1DATA4_EL1) 402312479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 402412479SCurtis.Dunham@arm.com InitReg(MISCREG_L2ACTLR_EL1) 402512479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 402612479SCurtis.Dunham@arm.com InitReg(MISCREG_CPUACTLR_EL1) 402712479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 402812479SCurtis.Dunham@arm.com InitReg(MISCREG_CPUECTLR_EL1) 402912479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 403012479SCurtis.Dunham@arm.com InitReg(MISCREG_CPUMERRSR_EL1) 403112479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 403212479SCurtis.Dunham@arm.com InitReg(MISCREG_L2MERRSR_EL1) 403312479SCurtis.Dunham@arm.com .unimplemented() 403412479SCurtis.Dunham@arm.com .warnNotFail() 403512479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode(); 403612479SCurtis.Dunham@arm.com InitReg(MISCREG_CBAR_EL1) 403712479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 403812479SCurtis.Dunham@arm.com InitReg(MISCREG_CONTEXTIDR_EL2) 403912479SCurtis.Dunham@arm.com .mon().hyp(); 404012816Sgiacomo.travaglini@arm.com InitReg(MISCREG_CNTHV_CTL_EL2) 404112816Sgiacomo.travaglini@arm.com .mon().hyp(); 404212816Sgiacomo.travaglini@arm.com InitReg(MISCREG_CNTHV_CVAL_EL2) 404312816Sgiacomo.travaglini@arm.com .mon().hyp(); 404412816Sgiacomo.travaglini@arm.com InitReg(MISCREG_CNTHV_TVAL_EL2) 404512816Sgiacomo.travaglini@arm.com .mon().hyp(); 404612479SCurtis.Dunham@arm.com 404712479SCurtis.Dunham@arm.com // Dummy registers 404812479SCurtis.Dunham@arm.com InitReg(MISCREG_NOP) 404912479SCurtis.Dunham@arm.com .allPrivileges(); 405012479SCurtis.Dunham@arm.com InitReg(MISCREG_RAZ) 405112479SCurtis.Dunham@arm.com .allPrivileges().exceptUserMode().writes(0); 405212479SCurtis.Dunham@arm.com InitReg(MISCREG_CP14_UNIMPL) 405312479SCurtis.Dunham@arm.com .unimplemented() 405412479SCurtis.Dunham@arm.com .warnNotFail(); 405512479SCurtis.Dunham@arm.com InitReg(MISCREG_CP15_UNIMPL) 405612479SCurtis.Dunham@arm.com .unimplemented() 405712479SCurtis.Dunham@arm.com .warnNotFail(); 405812479SCurtis.Dunham@arm.com InitReg(MISCREG_UNKNOWN); 405912714Sgiacomo.travaglini@arm.com InitReg(MISCREG_IMPDEF_UNIMPL) 406012714Sgiacomo.travaglini@arm.com .unimplemented() 406112714Sgiacomo.travaglini@arm.com .warnNotFail(impdefAsNop); 406212479SCurtis.Dunham@arm.com 406312815Sgiacomo.travaglini@arm.com // RAS extension (unimplemented) 406412815Sgiacomo.travaglini@arm.com InitReg(MISCREG_ERRIDR_EL1) 406512815Sgiacomo.travaglini@arm.com .unimplemented() 406612815Sgiacomo.travaglini@arm.com .warnNotFail(); 406712815Sgiacomo.travaglini@arm.com InitReg(MISCREG_ERRSELR_EL1) 406812815Sgiacomo.travaglini@arm.com .unimplemented() 406912815Sgiacomo.travaglini@arm.com .warnNotFail(); 407012815Sgiacomo.travaglini@arm.com InitReg(MISCREG_ERXFR_EL1) 407112815Sgiacomo.travaglini@arm.com .unimplemented() 407212815Sgiacomo.travaglini@arm.com .warnNotFail(); 407312815Sgiacomo.travaglini@arm.com InitReg(MISCREG_ERXCTLR_EL1) 407412815Sgiacomo.travaglini@arm.com .unimplemented() 407512815Sgiacomo.travaglini@arm.com .warnNotFail(); 407612815Sgiacomo.travaglini@arm.com InitReg(MISCREG_ERXSTATUS_EL1) 407712815Sgiacomo.travaglini@arm.com .unimplemented() 407812815Sgiacomo.travaglini@arm.com .warnNotFail(); 407912815Sgiacomo.travaglini@arm.com InitReg(MISCREG_ERXADDR_EL1) 408012815Sgiacomo.travaglini@arm.com .unimplemented() 408112815Sgiacomo.travaglini@arm.com .warnNotFail(); 408212815Sgiacomo.travaglini@arm.com InitReg(MISCREG_ERXMISC0_EL1) 408312815Sgiacomo.travaglini@arm.com .unimplemented() 408412815Sgiacomo.travaglini@arm.com .warnNotFail(); 408512815Sgiacomo.travaglini@arm.com InitReg(MISCREG_ERXMISC1_EL1) 408612815Sgiacomo.travaglini@arm.com .unimplemented() 408712815Sgiacomo.travaglini@arm.com .warnNotFail(); 408812815Sgiacomo.travaglini@arm.com InitReg(MISCREG_DISR_EL1) 408912815Sgiacomo.travaglini@arm.com .unimplemented() 409012815Sgiacomo.travaglini@arm.com .warnNotFail(); 409112815Sgiacomo.travaglini@arm.com InitReg(MISCREG_VSESR_EL2) 409212815Sgiacomo.travaglini@arm.com .unimplemented() 409312815Sgiacomo.travaglini@arm.com .warnNotFail(); 409412815Sgiacomo.travaglini@arm.com InitReg(MISCREG_VDISR_EL2) 409512815Sgiacomo.travaglini@arm.com .unimplemented() 409612815Sgiacomo.travaglini@arm.com .warnNotFail(); 409712815Sgiacomo.travaglini@arm.com 409812479SCurtis.Dunham@arm.com // Register mappings for some unimplemented registers: 409912479SCurtis.Dunham@arm.com // ESR_EL1 -> DFSR 410012479SCurtis.Dunham@arm.com // RMR_EL1 -> RMR 410112479SCurtis.Dunham@arm.com // RMR_EL2 -> HRMR 410212479SCurtis.Dunham@arm.com // DBGDTR_EL0 -> DBGDTR{R or T}Xint 410312479SCurtis.Dunham@arm.com // DBGDTRRX_EL0 -> DBGDTRRXint 410412479SCurtis.Dunham@arm.com // DBGDTRTX_EL0 -> DBGDTRRXint 410512479SCurtis.Dunham@arm.com // MDCR_EL3 -> SDCR, NAM D7-2108 (the latter is unimpl. in gem5) 410612479SCurtis.Dunham@arm.com 410712479SCurtis.Dunham@arm.com completed = true; 410812479SCurtis.Dunham@arm.com} 410912479SCurtis.Dunham@arm.com 411010037SARM gem5 Developers} // namespace ArmISA 4111