| /* |
| * Copyright 2020 Google, Inc. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions are |
| * met: redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer; |
| * redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution; |
| * neither the name of the copyright holders nor the names of its |
| * contributors may be used to endorse or promote products derived from |
| * this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| #include "arch/arm/fastmodel/CortexR52/thread_context.hh" |
| |
| #include "arch/arm/fastmodel/iris/memory_spaces.hh" |
| #include "arch/arm/utility.hh" |
| #include "iris/detail/IrisCppAdapter.h" |
| #include "iris/detail/IrisObjects.h" |
| |
| namespace gem5 |
| { |
| |
| GEM5_DEPRECATED_NAMESPACE(FastModel, fastmodel); |
| namespace fastmodel |
| { |
| |
| CortexR52TC::CortexR52TC( |
| gem5::BaseCPU *cpu, int id, System *system, gem5::BaseMMU *mmu, |
| gem5::BaseISA *isa, iris::IrisConnectionInterface *iris_if, |
| const std::string &iris_path) : |
| ThreadContext(cpu, id, system, mmu, isa, iris_if, iris_path) |
| {} |
| |
| bool |
| CortexR52TC::translateAddress(Addr &paddr, Addr vaddr) |
| { |
| // No MMU here. |
| paddr = vaddr; |
| return true; |
| } |
| |
| void |
| CortexR52TC::initFromIrisInstance(const ResourceMap &resources) |
| { |
| ThreadContext::initFromIrisInstance(resources); |
| |
| pcRscId = extractResourceId(resources, "R15"); |
| |
| extractResourceMap(miscRegIds, resources, miscRegIdxNameMap); |
| |
| extractResourceMap(intReg32Ids, resources, intReg32IdxNameMap); |
| extractResourceMap(ccRegIds, resources, ccRegIdxNameMap); |
| } |
| |
| void |
| CortexR52TC::sendFunctional(PacketPtr pkt) |
| { |
| auto msn = Iris::PhysicalMemoryMsn; |
| auto id = getMemorySpaceId(msn); |
| |
| auto addr = pkt->getAddr(); |
| auto size = pkt->getSize(); |
| auto data = pkt->getPtr<uint8_t>(); |
| |
| pkt->makeResponse(); |
| if (pkt->isRead()) |
| readMem(id, addr, data, size); |
| else |
| writeMem(id, addr, data, size); |
| } |
| |
| RegVal |
| CortexR52TC::readIntReg(RegIndex reg_idx) const |
| { |
| iris::ResourceReadResult result; |
| call().resource_read(_instId, result, intReg32Ids.at(reg_idx)); |
| return result.data.at(0); |
| } |
| |
| void |
| CortexR52TC::setIntReg(RegIndex reg_idx, RegVal val) |
| { |
| iris::ResourceWriteResult result; |
| call().resource_write(_instId, result, intReg32Ids.at(reg_idx), val); |
| } |
| |
| RegVal |
| CortexR52TC::readCCRegFlat(RegIndex idx) const |
| { |
| RegVal result = Iris::ThreadContext::readCCRegFlat(idx); |
| switch (idx) { |
| case ArmISA::cc_reg::Nz: |
| result = ((ArmISA::CPSR)result).nz; |
| break; |
| case ArmISA::cc_reg::Fp: |
| result = bits(result, 31, 28); |
| break; |
| default: |
| break; |
| } |
| return result; |
| } |
| |
| void |
| CortexR52TC::setCCRegFlat(RegIndex idx, RegVal val) |
| { |
| switch (idx) { |
| case ArmISA::cc_reg::Nz: |
| { |
| ArmISA::CPSR cpsr = readMiscRegNoEffect(ArmISA::MISCREG_CPSR); |
| cpsr.nz = val; |
| val = cpsr; |
| } |
| break; |
| case ArmISA::cc_reg::Fp: |
| { |
| ArmISA::FPSCR fpscr = readMiscRegNoEffect(ArmISA::MISCREG_FPSCR); |
| val = insertBits(fpscr, 31, 28, val); |
| } |
| break; |
| default: |
| break; |
| } |
| Iris::ThreadContext::setCCRegFlat(idx, val); |
| } |
| |
| const std::vector<iris::MemorySpaceId> & |
| CortexR52TC::getBpSpaceIds() const |
| { |
| if (bpSpaceIds.empty()) { |
| std::vector<Iris::CanonicalMsn> msns{Iris::GuestMsn, Iris::NsHypMsn}; |
| for (auto &msn : msns) { |
| auto id = getMemorySpaceId(msn); |
| if (id != iris::IRIS_UINT64_MAX) |
| bpSpaceIds.push_back(id); |
| } |
| panic_if(bpSpaceIds.empty(), |
| "Unable to find address space(s) for breakpoints."); |
| } |
| return bpSpaceIds; |
| } |
| |
| Iris::ThreadContext::IdxNameMap CortexR52TC::miscRegIdxNameMap({ |
| { ArmISA::MISCREG_CPSR, "CPSR" }, |
| { ArmISA::MISCREG_SPSR, "SPSR" }, |
| // ArmISA::MISCREG_SPSR_FIQ? |
| // ArmISA::MISCREG_SPSR_IRQ? |
| // ArmISA::MISCREG_SPSR_SVC? |
| // ArmISA::MISCREG_SPSR_MON? |
| // ArmISA::MISCREG_SPSR_ABT? |
| // ArmISA::MISCREG_SPSR_HYP? |
| // ArmISA::MISCREG_SPSR_UND? |
| // ArmISA::MISCREG_ELR_HYP? |
| // ArmISA::MISCREG_FPSID? |
| // ArmISA::MISCREG_FPSCR? |
| // ArmISA::MISCREG_MVFR1? |
| // ArmISA::MISCREG_MVFR0? |
| // ArmISA::MISCREG_FPEXC? |
| |
| // Helper registers |
| // ArmISA::MISCREG_CPSR_MODE? |
| // ArmISA::MISCREG_CPSR_Q? |
| // ArmISA::MISCREG_FPSCR_EXC? |
| // ArmISA::MISCREG_FPSCR_QC? |
| // ArmISA::MISCREG_LOCKADDR? |
| // ArmISA::MISCREG_LOCKFLAG? |
| // ArmISA::MISCREG_PRRR_MAIR0? |
| // ArmISA::MISCREG_PRRR_MAIR0_NS? |
| // ArmISA::MISCREG_PRRR_MAIR0_S? |
| // ArmISA::MISCREG_NMRR_MAIR1? |
| // ArmISA::MISCREG_NMRR_MAIR1_NS? |
| // ArmISA::MISCREG_NMRR_MAIR1_S? |
| // ArmISA::MISCREG_PMXEVTYPER_PMCCFILTR? |
| // ArmISA::MISCREG_SCTLR_RST? |
| // ArmISA::MISCREG_SEV_MAILBOX? |
| |
| // AArch32 CP14 registers (debug/trace/ThumbEE/Jazelle control) |
| // ArmISA::MISCREG_DBGDIDR? |
| // ArmISA::MISCREG_DBGDSCRint? |
| // ArmISA::MISCREG_DBGDCCINT? |
| // ArmISA::MISCREG_DBGDTRTXint? |
| // ArmISA::MISCREG_DBGDTRRXint? |
| // ArmISA::MISCREG_DBGWFAR? |
| // ArmISA::MISCREG_DBGVCR? |
| // ArmISA::MISCREG_DBGDTRRXext? |
| // ArmISA::MISCREG_DBGDSCRext? |
| // ArmISA::MISCREG_DBGDTRTXext? |
| // ArmISA::MISCREG_DBGOSECCR? |
| // ArmISA::MISCREG_DBGBVR0? |
| // ArmISA::MISCREG_DBGBVR1? |
| // ArmISA::MISCREG_DBGBVR2? |
| // ArmISA::MISCREG_DBGBVR3? |
| // ArmISA::MISCREG_DBGBVR4? |
| // ArmISA::MISCREG_DBGBVR5? |
| // ArmISA::MISCREG_DBGBCR0? |
| // ArmISA::MISCREG_DBGBCR1? |
| // ArmISA::MISCREG_DBGBCR2? |
| // ArmISA::MISCREG_DBGBCR3? |
| // ArmISA::MISCREG_DBGBCR4? |
| // ArmISA::MISCREG_DBGBCR5? |
| // ArmISA::MISCREG_DBGWVR0? |
| // ArmISA::MISCREG_DBGWVR1? |
| // ArmISA::MISCREG_DBGWVR2? |
| // ArmISA::MISCREG_DBGWVR3? |
| // ArmISA::MISCREG_DBGWCR0? |
| // ArmISA::MISCREG_DBGWCR1? |
| // ArmISA::MISCREG_DBGWCR2? |
| // ArmISA::MISCREG_DBGWCR3? |
| // ArmISA::MISCREG_DBGDRAR? |
| // ArmISA::MISCREG_DBGBXVR4? |
| // ArmISA::MISCREG_DBGBXVR5? |
| // ArmISA::MISCREG_DBGOSLAR? |
| // ArmISA::MISCREG_DBGOSLSR? |
| // ArmISA::MISCREG_DBGOSDLR? |
| // ArmISA::MISCREG_DBGPRCR? |
| // ArmISA::MISCREG_DBGDSAR? |
| // ArmISA::MISCREG_DBGCLAIMSET? |
| // ArmISA::MISCREG_DBGCLAIMCLR? |
| // ArmISA::MISCREG_DBGAUTHSTATUS? |
| // ArmISA::MISCREG_DBGDEVID2? |
| // ArmISA::MISCREG_DBGDEVID1? |
| // ArmISA::MISCREG_DBGDEVID0? |
| // ArmISA::MISCREG_TEECR? not in ARM DDI 0487A.b+ |
| // ArmISA::MISCREG_JIDR? |
| // ArmISA::MISCREG_TEEHBR? not in ARM DDI 0487A.b+ |
| // ArmISA::MISCREG_JOSCR? |
| // ArmISA::MISCREG_JMCR? |
| |
| // AArch32 CP15 registers (system control) |
| // ArmISA::MISCREG_MIDR? |
| // ArmISA::MISCREG_CTR? |
| // ArmISA::MISCREG_TCMTR? |
| // ArmISA::MISCREG_TLBTR? |
| // ArmISA::MISCREG_MPIDR? |
| // ArmISA::MISCREG_REVIDR? |
| // ArmISA::MISCREG_ID_PFR0? |
| // ArmISA::MISCREG_ID_PFR1? |
| // ArmISA::MISCREG_ID_DFR0? |
| // ArmISA::MISCREG_ID_AFR0? |
| // ArmISA::MISCREG_ID_MMFR0? |
| // ArmISA::MISCREG_ID_MMFR1? |
| // ArmISA::MISCREG_ID_MMFR2? |
| // ArmISA::MISCREG_ID_MMFR3? |
| // ArmISA::MISCREG_ID_MMFR4? |
| // ArmISA::MISCREG_ID_ISAR0? |
| // ArmISA::MISCREG_ID_ISAR1? |
| // ArmISA::MISCREG_ID_ISAR2? |
| // ArmISA::MISCREG_ID_ISAR3? |
| // ArmISA::MISCREG_ID_ISAR4? |
| // ArmISA::MISCREG_ID_ISAR5? |
| // ArmISA::MISCREG_ID_ISAR6? |
| // ArmISA::MISCREG_CCSIDR? |
| // ArmISA::MISCREG_CLIDR? |
| // ArmISA::MISCREG_AIDR? |
| // ArmISA::MISCREG_CSSELR? |
| // ArmISA::MISCREG_CSSELR_NS? |
| // ArmISA::MISCREG_CSSELR_S? |
| // ArmISA::MISCREG_VPIDR? |
| // ArmISA::MISCREG_VMPIDR? |
| // ArmISA::MISCREG_SCTLR? |
| // ArmISA::MISCREG_SCTLR_NS? |
| // ArmISA::MISCREG_SCTLR_S? |
| // ArmISA::MISCREG_ACTLR? |
| // ArmISA::MISCREG_ACTLR_NS? |
| // ArmISA::MISCREG_ACTLR_S? |
| // ArmISA::MISCREG_CPACR? |
| // ArmISA::MISCREG_SCR? |
| // ArmISA::MISCREG_SDER? |
| // ArmISA::MISCREG_NSACR? |
| // ArmISA::MISCREG_HSCTLR? |
| // ArmISA::MISCREG_HACTLR? |
| // ArmISA::MISCREG_HCR? |
| // ArmISA::MISCREG_HDCR? |
| // ArmISA::MISCREG_HCPTR? |
| // ArmISA::MISCREG_HSTR? |
| // ArmISA::MISCREG_HACR? |
| // ArmISA::MISCREG_TTBR0? |
| // ArmISA::MISCREG_TTBR0_NS? |
| // ArmISA::MISCREG_TTBR0_S? |
| // ArmISA::MISCREG_TTBR1? |
| // ArmISA::MISCREG_TTBR1_NS? |
| // ArmISA::MISCREG_TTBR1_S? |
| // ArmISA::MISCREG_TTBCR? |
| // ArmISA::MISCREG_TTBCR_NS? |
| // ArmISA::MISCREG_TTBCR_S? |
| // ArmISA::MISCREG_HTCR? |
| // ArmISA::MISCREG_VTCR? |
| // ArmISA::MISCREG_DACR? |
| // ArmISA::MISCREG_DACR_NS? |
| // ArmISA::MISCREG_DACR_S? |
| // ArmISA::MISCREG_DFSR? |
| // ArmISA::MISCREG_DFSR_NS? |
| // ArmISA::MISCREG_DFSR_S? |
| // ArmISA::MISCREG_IFSR? |
| // ArmISA::MISCREG_IFSR_NS? |
| // ArmISA::MISCREG_IFSR_S? |
| // ArmISA::MISCREG_ADFSR? |
| // ArmISA::MISCREG_ADFSR_NS? |
| // ArmISA::MISCREG_ADFSR_S? |
| // ArmISA::MISCREG_AIFSR? |
| // ArmISA::MISCREG_AIFSR_NS? |
| // ArmISA::MISCREG_AIFSR_S? |
| // ArmISA::MISCREG_HADFSR? |
| // ArmISA::MISCREG_HAIFSR? |
| // ArmISA::MISCREG_HSR? |
| // ArmISA::MISCREG_DFAR? |
| // ArmISA::MISCREG_DFAR_NS? |
| // ArmISA::MISCREG_DFAR_S? |
| // ArmISA::MISCREG_IFAR? |
| // ArmISA::MISCREG_IFAR_NS? |
| // ArmISA::MISCREG_IFAR_S? |
| // ArmISA::MISCREG_HDFAR? |
| // ArmISA::MISCREG_HIFAR? |
| // ArmISA::MISCREG_HPFAR? |
| // ArmISA::MISCREG_ICIALLUIS? |
| // ArmISA::MISCREG_BPIALLIS? |
| // ArmISA::MISCREG_PAR? |
| // ArmISA::MISCREG_PAR_NS? |
| // ArmISA::MISCREG_PAR_S? |
| // ArmISA::MISCREG_ICIALLU? |
| // ArmISA::MISCREG_ICIMVAU? |
| // ArmISA::MISCREG_CP15ISB? |
| // ArmISA::MISCREG_BPIALL? |
| // ArmISA::MISCREG_BPIMVA? |
| // ArmISA::MISCREG_DCIMVAC? |
| // ArmISA::MISCREG_DCISW? |
| // ArmISA::MISCREG_ATS1CPR? |
| // ArmISA::MISCREG_ATS1CPW? |
| // ArmISA::MISCREG_ATS1CUR? |
| // ArmISA::MISCREG_ATS1CUW? |
| // ArmISA::MISCREG_ATS12NSOPR? |
| // ArmISA::MISCREG_ATS12NSOPW? |
| // ArmISA::MISCREG_ATS12NSOUR? |
| // ArmISA::MISCREG_ATS12NSOUW? |
| // ArmISA::MISCREG_DCCMVAC? |
| // ArmISA::MISCREG_DCCSW? |
| // ArmISA::MISCREG_CP15DSB? |
| // ArmISA::MISCREG_CP15DMB? |
| // ArmISA::MISCREG_DCCMVAU? |
| // ArmISA::MISCREG_DCCIMVAC? |
| // ArmISA::MISCREG_DCCISW? |
| // ArmISA::MISCREG_ATS1HR? |
| // ArmISA::MISCREG_ATS1HW? |
| // ArmISA::MISCREG_TLBIALLIS? |
| // ArmISA::MISCREG_TLBIMVAIS? |
| // ArmISA::MISCREG_TLBIASIDIS? |
| // ArmISA::MISCREG_TLBIMVAAIS? |
| // ArmISA::MISCREG_TLBIMVALIS? |
| // ArmISA::MISCREG_TLBIMVAALIS? |
| // ArmISA::MISCREG_ITLBIALL? |
| // ArmISA::MISCREG_ITLBIMVA? |
| // ArmISA::MISCREG_ITLBIASID? |
| // ArmISA::MISCREG_DTLBIALL? |
| // ArmISA::MISCREG_DTLBIMVA? |
| // ArmISA::MISCREG_DTLBIASID? |
| // ArmISA::MISCREG_TLBIALL? |
| // ArmISA::MISCREG_TLBIMVA? |
| // ArmISA::MISCREG_TLBIASID? |
| // ArmISA::MISCREG_TLBIMVAA? |
| // ArmISA::MISCREG_TLBIMVAL? |
| // ArmISA::MISCREG_TLBIMVAAL? |
| // ArmISA::MISCREG_TLBIIPAS2IS? |
| // ArmISA::MISCREG_TLBIIPAS2LIS? |
| // ArmISA::MISCREG_TLBIALLHIS? |
| // ArmISA::MISCREG_TLBIMVAHIS? |
| // ArmISA::MISCREG_TLBIALLNSNHIS? |
| // ArmISA::MISCREG_TLBIMVALHIS? |
| // ArmISA::MISCREG_TLBIIPAS2? |
| // ArmISA::MISCREG_TLBIIPAS2L? |
| // ArmISA::MISCREG_TLBIALLH? |
| // ArmISA::MISCREG_TLBIMVAH? |
| // ArmISA::MISCREG_TLBIALLNSNH? |
| // ArmISA::MISCREG_TLBIMVALH? |
| // ArmISA::MISCREG_PMCR? |
| // ArmISA::MISCREG_PMCNTENSET? |
| // ArmISA::MISCREG_PMCNTENCLR? |
| // ArmISA::MISCREG_PMOVSR? |
| // ArmISA::MISCREG_PMSWINC? |
| // ArmISA::MISCREG_PMSELR? |
| // ArmISA::MISCREG_PMCEID0? |
| // ArmISA::MISCREG_PMCEID1? |
| // ArmISA::MISCREG_PMCCNTR? |
| // ArmISA::MISCREG_PMXEVTYPER? |
| // ArmISA::MISCREG_PMCCFILTR? |
| // ArmISA::MISCREG_PMXEVCNTR? |
| // ArmISA::MISCREG_PMUSERENR? |
| // ArmISA::MISCREG_PMINTENSET? |
| // ArmISA::MISCREG_PMINTENCLR? |
| // ArmISA::MISCREG_PMOVSSET? |
| // ArmISA::MISCREG_L2CTLR? |
| // ArmISA::MISCREG_L2ECTLR? |
| // ArmISA::MISCREG_PRRR? |
| // ArmISA::MISCREG_PRRR_NS? |
| // ArmISA::MISCREG_PRRR_S? |
| // ArmISA::MISCREG_MAIR0? |
| // ArmISA::MISCREG_MAIR0_NS? |
| // ArmISA::MISCREG_MAIR0_S? |
| // ArmISA::MISCREG_NMRR? |
| // ArmISA::MISCREG_NMRR_NS? |
| // ArmISA::MISCREG_NMRR_S? |
| // ArmISA::MISCREG_MAIR1? |
| // ArmISA::MISCREG_MAIR1_NS? |
| // ArmISA::MISCREG_MAIR1_S? |
| // ArmISA::MISCREG_AMAIR0? |
| // ArmISA::MISCREG_AMAIR0_NS? |
| // ArmISA::MISCREG_AMAIR0_S? |
| // ArmISA::MISCREG_AMAIR1? |
| // ArmISA::MISCREG_AMAIR1_NS? |
| // ArmISA::MISCREG_AMAIR1_S? |
| // ArmISA::MISCREG_HMAIR0? |
| // ArmISA::MISCREG_HMAIR1? |
| // ArmISA::MISCREG_HAMAIR0? |
| // ArmISA::MISCREG_HAMAIR1? |
| // ArmISA::MISCREG_VBAR? |
| // ArmISA::MISCREG_VBAR_NS? |
| // ArmISA::MISCREG_VBAR_S? |
| // ArmISA::MISCREG_MVBAR? |
| // ArmISA::MISCREG_RMR? |
| // ArmISA::MISCREG_ISR? |
| // ArmISA::MISCREG_HVBAR? |
| // ArmISA::MISCREG_FCSEIDR? |
| // ArmISA::MISCREG_CONTEXTIDR? |
| // ArmISA::MISCREG_CONTEXTIDR_NS? |
| // ArmISA::MISCREG_CONTEXTIDR_S? |
| // ArmISA::MISCREG_TPIDRURW? |
| // ArmISA::MISCREG_TPIDRURW_NS? |
| // ArmISA::MISCREG_TPIDRURW_S? |
| // ArmISA::MISCREG_TPIDRURO? |
| // ArmISA::MISCREG_TPIDRURO_NS? |
| // ArmISA::MISCREG_TPIDRURO_S? |
| // ArmISA::MISCREG_TPIDRPRW? |
| // ArmISA::MISCREG_TPIDRPRW_NS? |
| /// ArmISA::MISCREG_TPIDRPRW_S? |
| // ArmISA::MISCREG_HTPIDR? |
| // ArmISA::MISCREG_CNTFRQ? |
| // ArmISA::MISCREG_CNTKCTL? |
| // ArmISA::MISCREG_CNTP_TVAL? |
| // ArmISA::MISCREG_CNTP_TVAL_NS? |
| // ArmISA::MISCREG_CNTP_TVAL_S? |
| // ArmISA::MISCREG_CNTP_CTL? |
| // ArmISA::MISCREG_CNTP_CTL_NS? |
| // ArmISA::MISCREG_CNTP_CTL_S? |
| // ArmISA::MISCREG_CNTV_TVAL? |
| // ArmISA::MISCREG_CNTV_CTL? |
| // ArmISA::MISCREG_CNTHCTL? |
| // ArmISA::MISCREG_CNTHP_TVAL? |
| // ArmISA::MISCREG_CNTHP_CTL? |
| // ArmISA::MISCREG_IL1DATA0? |
| // ArmISA::MISCREG_IL1DATA1? |
| // ArmISA::MISCREG_IL1DATA2? |
| // ArmISA::MISCREG_IL1DATA3? |
| // ArmISA::MISCREG_DL1DATA0? |
| // ArmISA::MISCREG_DL1DATA1? |
| // ArmISA::MISCREG_DL1DATA2? |
| // ArmISA::MISCREG_DL1DATA3? |
| // ArmISA::MISCREG_DL1DATA4? |
| // ArmISA::MISCREG_RAMINDEX? |
| // ArmISA::MISCREG_L2ACTLR? |
| // ArmISA::MISCREG_CBAR? |
| // ArmISA::MISCREG_HTTBR? |
| // ArmISA::MISCREG_VTTBR? |
| // ArmISA::MISCREG_CNTPCT? |
| // ArmISA::MISCREG_CNTVCT? |
| // ArmISA::MISCREG_CNTP_CVAL? |
| // ArmISA::MISCREG_CNTP_CVAL_NS? |
| // ArmISA::MISCREG_CNTP_CVAL_S? |
| // ArmISA::MISCREG_CNTV_CVAL? |
| // ArmISA::MISCREG_CNTVOFF? |
| // ArmISA::MISCREG_CNTHP_CVAL? |
| // ArmISA::MISCREG_CPUMERRSR? |
| // ArmISA::MISCREG_L2MERRSR? |
| |
| // AArch64 registers (Op0=2) |
| // ArmISA::MISCREG_MDCCINT_EL1? |
| // ArmISA::MISCREG_OSDTRRX_EL1? |
| // ArmISA::MISCREG_MDSCR_EL1? |
| // ArmISA::MISCREG_OSDTRTX_EL1? |
| // ArmISA::MISCREG_OSECCR_EL1? |
| // ArmISA::MISCREG_DBGBVR0_EL1? |
| // ArmISA::MISCREG_DBGBVR1_EL1? |
| // ArmISA::MISCREG_DBGBVR2_EL1? |
| // ArmISA::MISCREG_DBGBVR3_EL1? |
| // ArmISA::MISCREG_DBGBVR4_EL1? |
| // ArmISA::MISCREG_DBGBVR5_EL1? |
| // ArmISA::MISCREG_DBGBCR0_EL1? |
| // ArmISA::MISCREG_DBGBCR1_EL1? |
| // ArmISA::MISCREG_DBGBCR2_EL1? |
| // ArmISA::MISCREG_DBGBCR3_EL1? |
| // ArmISA::MISCREG_DBGBCR4_EL1? |
| // ArmISA::MISCREG_DBGBCR5_EL1? |
| // ArmISA::MISCREG_DBGWVR0_EL1? |
| // ArmISA::MISCREG_DBGWVR1_EL1? |
| // ArmISA::MISCREG_DBGWVR2_EL1? |
| // ArmISA::MISCREG_DBGWVR3_EL1? |
| // ArmISA::MISCREG_DBGWCR0_EL1? |
| // ArmISA::MISCREG_DBGWCR1_EL1? |
| // ArmISA::MISCREG_DBGWCR2_EL1? |
| // ArmISA::MISCREG_DBGWCR3_EL1? |
| // ArmISA::MISCREG_MDCCSR_EL0? |
| // ArmISA::MISCREG_MDDTR_EL0? |
| // ArmISA::MISCREG_MDDTRTX_EL0? |
| // ArmISA::MISCREG_MDDTRRX_EL0? |
| // ArmISA::MISCREG_DBGVCR32_EL2? |
| // ArmISA::MISCREG_MDRAR_EL1? |
| // ArmISA::MISCREG_OSLAR_EL1? |
| // ArmISA::MISCREG_OSLSR_EL1? |
| // ArmISA::MISCREG_OSDLR_EL1? |
| // ArmISA::MISCREG_DBGPRCR_EL1? |
| // ArmISA::MISCREG_DBGCLAIMSET_EL1? |
| // ArmISA::MISCREG_DBGCLAIMCLR_EL1? |
| // ArmISA::MISCREG_DBGAUTHSTATUS_EL1? |
| // ArmISA::MISCREG_TEECR32_EL1? not in ARM DDI 0487A.b+ |
| // ArmISA::MISCREG_TEEHBR32_EL1? not in ARM DDI 0487A.b+ |
| |
| // AArch64 registers (Op0=1) |
| // ArmISA::MISCREG_MIDR_EL1? |
| // ArmISA::MISCREG_MPIDR_EL1? |
| // ArmISA::MISCREG_REVIDR_EL1? |
| // ArmISA::MISCREG_ID_PFR0_EL1? |
| // ArmISA::MISCREG_ID_PFR1_EL1? |
| // ArmISA::MISCREG_ID_DFR0_EL1? |
| // ArmISA::MISCREG_ID_AFR0_EL1? |
| // ArmISA::MISCREG_ID_MMFR0_EL1? |
| // ArmISA::MISCREG_ID_MMFR1_EL1? |
| // ArmISA::MISCREG_ID_MMFR2_EL1? |
| // ArmISA::MISCREG_ID_MMFR3_EL1? |
| // ArmISA::MISCREG_ID_MMFR4_EL1? |
| // ArmISA::MISCREG_ID_ISAR0_EL1? |
| // ArmISA::MISCREG_ID_ISAR1_EL1? |
| // ArmISA::MISCREG_ID_ISAR2_EL1? |
| // ArmISA::MISCREG_ID_ISAR3_EL1? |
| // ArmISA::MISCREG_ID_ISAR4_EL1? |
| // ArmISA::MISCREG_ID_ISAR5_EL1? |
| // ArmISA::MISCREG_ID_ISAR6_EL1? |
| // ArmISA::MISCREG_MVFR0_EL1? |
| // ArmISA::MISCREG_MVFR1_EL1? |
| // ArmISA::MISCREG_MVFR2_EL1? |
| // ArmISA::MISCREG_ID_AA64PFR0_EL1? |
| // ArmISA::MISCREG_ID_AA64PFR1_EL1? |
| // ArmISA::MISCREG_ID_AA64DFR0_EL1? |
| // ArmISA::MISCREG_ID_AA64DFR1_EL1? |
| // ArmISA::MISCREG_ID_AA64AFR0_EL1? |
| // ArmISA::MISCREG_ID_AA64AFR1_EL1? |
| // ArmISA::MISCREG_ID_AA64ISAR0_EL1? |
| // ArmISA::MISCREG_ID_AA64ISAR1_EL1? |
| // ArmISA::MISCREG_ID_AA64MMFR0_EL1? |
| // ArmISA::MISCREG_ID_AA64MMFR1_EL1? |
| // ArmISA::MISCREG_CCSIDR_EL1? |
| // ArmISA::MISCREG_CLIDR_EL1? |
| // ArmISA::MISCREG_AIDR_EL1? |
| // ArmISA::MISCREG_CSSELR_EL1? |
| // ArmISA::MISCREG_CTR_EL0? |
| // ArmISA::MISCREG_DCZID_EL0? |
| // ArmISA::MISCREG_VPIDR_EL2? |
| // ArmISA::MISCREG_VMPIDR_EL2? |
| // ArmISA::MISCREG_SCTLR_EL1? |
| // ArmISA::MISCREG_ACTLR_EL1? |
| // ArmISA::MISCREG_CPACR_EL1? |
| // ArmISA::MISCREG_SCTLR_EL2? |
| // ArmISA::MISCREG_ACTLR_EL2? |
| // ArmISA::MISCREG_HCR_EL2? |
| // ArmISA::MISCREG_MDCR_EL2? |
| // ArmISA::MISCREG_CPTR_EL2? |
| // ArmISA::MISCREG_HSTR_EL2? |
| // ArmISA::MISCREG_HACR_EL2? |
| // ArmISA::MISCREG_SCTLR_EL3? |
| // ArmISA::MISCREG_ACTLR_EL3? |
| // ArmISA::MISCREG_SCR_EL3? |
| // ArmISA::MISCREG_SDER32_EL3? |
| // ArmISA::MISCREG_CPTR_EL3? |
| // ArmISA::MISCREG_MDCR_EL3? |
| // ArmISA::MISCREG_TTBR0_EL1? |
| // ArmISA::MISCREG_TTBR1_EL1? |
| // ArmISA::MISCREG_TCR_EL1? |
| // ArmISA::MISCREG_TTBR0_EL2? |
| // ArmISA::MISCREG_TCR_EL2? |
| // ArmISA::MISCREG_VTTBR_EL2? |
| // ArmISA::MISCREG_VTCR_EL2? |
| // ArmISA::MISCREG_TTBR0_EL3? |
| // ArmISA::MISCREG_TCR_EL3? |
| // ArmISA::MISCREG_DACR32_EL2? |
| // ArmISA::MISCREG_SPSR_EL1? |
| // ArmISA::MISCREG_ELR_EL1? |
| // ArmISA::MISCREG_SP_EL0? |
| // ArmISA::MISCREG_SPSEL? |
| // ArmISA::MISCREG_CURRENTEL? |
| // ArmISA::MISCREG_NZCV? |
| // ArmISA::MISCREG_DAIF? |
| // ArmISA::MISCREG_FPCR? |
| { ArmISA::MISCREG_FPSCR, "FPSCR" }, |
| // ArmISA::MISCREG_DSPSR_EL0? |
| // ArmISA::MISCREG_DLR_EL0? |
| // ArmISA::MISCREG_SPSR_EL2? |
| // ArmISA::MISCREG_ELR_EL2? |
| // ArmISA::MISCREG_SP_EL1? |
| // ArmISA::MISCREG_SPSR_IRQ_AA64? |
| // ArmISA::MISCREG_SPSR_ABT_AA64? |
| // ArmISA::MISCREG_SPSR_UND_AA64? |
| // ArmISA::MISCREG_SPSR_FIQ_AA64? |
| // ArmISA::MISCREG_SPSR_EL3? |
| // ArmISA::MISCREG_ELR_EL3? |
| // ArmISA::MISCREG_SP_EL2? |
| // ArmISA::MISCREG_AFSR0_EL1? |
| // ArmISA::MISCREG_AFSR1_EL1? |
| // ArmISA::MISCREG_ESR_EL1? |
| // ArmISA::MISCREG_IFSR32_EL2? |
| // ArmISA::MISCREG_AFSR0_EL2? |
| // ArmISA::MISCREG_AFSR1_EL2? |
| // ArmISA::MISCREG_ESR_EL2? |
| // ArmISA::MISCREG_FPEXC32_EL2? |
| // ArmISA::MISCREG_AFSR0_EL3? |
| // ArmISA::MISCREG_AFSR1_EL3? |
| // ArmISA::MISCREG_ESR_EL3? |
| // ArmISA::MISCREG_FAR_EL1? |
| // ArmISA::MISCREG_FAR_EL2? |
| // ArmISA::MISCREG_HPFAR_EL2? |
| // ArmISA::MISCREG_FAR_EL3? |
| // ArmISA::MISCREG_IC_IALLUIS? |
| // ArmISA::MISCREG_PAR_EL1? |
| // ArmISA::MISCREG_IC_IALLU? |
| // ArmISA::MISCREG_DC_IVAC_Xt? |
| // ArmISA::MISCREG_DC_ISW_Xt? |
| // ArmISA::MISCREG_AT_S1E1R_Xt? |
| // ArmISA::MISCREG_AT_S1E1W_Xt? |
| // ArmISA::MISCREG_AT_S1E0R_Xt? |
| // ArmISA::MISCREG_AT_S1E0W_Xt? |
| // ArmISA::MISCREG_DC_CSW_Xt? |
| // ArmISA::MISCREG_DC_CISW_Xt? |
| // ArmISA::MISCREG_DC_ZVA_Xt? |
| // ArmISA::MISCREG_IC_IVAU_Xt? |
| // ArmISA::MISCREG_DC_CVAC_Xt? |
| // ArmISA::MISCREG_DC_CVAU_Xt? |
| // ArmISA::MISCREG_DC_CIVAC_Xt? |
| // ArmISA::MISCREG_AT_S1E2R_Xt? |
| // ArmISA::MISCREG_AT_S1E2W_Xt? |
| // ArmISA::MISCREG_AT_S12E1R_Xt? |
| // ArmISA::MISCREG_AT_S12E1W_Xt? |
| // ArmISA::MISCREG_AT_S12E0R_Xt? |
| // ArmISA::MISCREG_AT_S12E0W_Xt? |
| // ArmISA::MISCREG_AT_S1E3R_Xt? |
| // ArmISA::MISCREG_AT_S1E3W_Xt? |
| // ArmISA::MISCREG_TLBI_VMALLE1IS? |
| // ArmISA::MISCREG_TLBI_VAE1IS_Xt? |
| // ArmISA::MISCREG_TLBI_ASIDE1IS_Xt? |
| // ArmISA::MISCREG_TLBI_VAAE1IS_Xt? |
| // ArmISA::MISCREG_TLBI_VALE1IS_Xt? |
| // ArmISA::MISCREG_TLBI_VAALE1IS_Xt? |
| // ArmISA::MISCREG_TLBI_VMALLE1? |
| // ArmISA::MISCREG_TLBI_VAE1_Xt? |
| // ArmISA::MISCREG_TLBI_ASIDE1_Xt? |
| // ArmISA::MISCREG_TLBI_VAAE1_Xt? |
| // ArmISA::MISCREG_TLBI_VALE1_Xt? |
| // ArmISA::MISCREG_TLBI_VAALE1_Xt? |
| // ArmISA::MISCREG_TLBI_IPAS2E1IS_Xt? |
| // ArmISA::MISCREG_TLBI_IPAS2LE1IS_Xt? |
| // ArmISA::MISCREG_TLBI_ALLE2IS? |
| // ArmISA::MISCREG_TLBI_VAE2IS_Xt? |
| // ArmISA::MISCREG_TLBI_ALLE1IS? |
| // ArmISA::MISCREG_TLBI_VALE2IS_Xt? |
| // ArmISA::MISCREG_TLBI_VMALLS12E1IS? |
| // ArmISA::MISCREG_TLBI_IPAS2E1_Xt? |
| // ArmISA::MISCREG_TLBI_IPAS2LE1_Xt? |
| // ArmISA::MISCREG_TLBI_ALLE2? |
| // ArmISA::MISCREG_TLBI_VAE2_Xt? |
| // ArmISA::MISCREG_TLBI_ALLE1? |
| // ArmISA::MISCREG_TLBI_VALE2_Xt? |
| // ArmISA::MISCREG_TLBI_VMALLS12E1? |
| // ArmISA::MISCREG_TLBI_ALLE3IS? |
| // ArmISA::MISCREG_TLBI_VAE3IS_Xt? |
| // ArmISA::MISCREG_TLBI_VALE3IS_Xt? |
| // ArmISA::MISCREG_TLBI_ALLE3? |
| // ArmISA::MISCREG_TLBI_VAE3_Xt? |
| // ArmISA::MISCREG_TLBI_VALE3_Xt? |
| // ArmISA::MISCREG_PMINTENSET_EL1? |
| // ArmISA::MISCREG_PMINTENCLR_EL1? |
| // ArmISA::MISCREG_PMCR_EL0? |
| // ArmISA::MISCREG_PMCNTENSET_EL0? |
| // ArmISA::MISCREG_PMCNTENCLR_EL0? |
| // ArmISA::MISCREG_PMOVSCLR_EL0? |
| // ArmISA::MISCREG_PMSWINC_EL0? |
| // ArmISA::MISCREG_PMSELR_EL0? |
| // ArmISA::MISCREG_PMCEID0_EL0? |
| // ArmISA::MISCREG_PMCEID1_EL0? |
| // ArmISA::MISCREG_PMCCNTR_EL0? |
| // ArmISA::MISCREG_PMXEVTYPER_EL0? |
| // ArmISA::MISCREG_PMCCFILTR_EL0? |
| // ArmISA::MISCREG_PMXEVCNTR_EL0? |
| // ArmISA::MISCREG_PMUSERENR_EL0? |
| // ArmISA::MISCREG_PMOVSSET_EL0? |
| // ArmISA::MISCREG_MAIR_EL1? |
| // ArmISA::MISCREG_AMAIR_EL1? |
| // ArmISA::MISCREG_MAIR_EL2? |
| // ArmISA::MISCREG_AMAIR_EL2? |
| // ArmISA::MISCREG_MAIR_EL3? |
| // ArmISA::MISCREG_AMAIR_EL3? |
| // ArmISA::MISCREG_L2CTLR_EL1? |
| // ArmISA::MISCREG_L2ECTLR_EL1? |
| // ArmISA::MISCREG_VBAR_EL1? |
| // ArmISA::MISCREG_RVBAR_EL1? |
| // ArmISA::MISCREG_ISR_EL1? |
| // ArmISA::MISCREG_VBAR_EL2? |
| // ArmISA::MISCREG_RVBAR_EL2? |
| // ArmISA::MISCREG_VBAR_EL3? |
| // ArmISA::MISCREG_RVBAR_EL3? |
| // ArmISA::MISCREG_RMR_EL3? |
| // ArmISA::MISCREG_CONTEXTIDR_EL1? |
| // ArmISA::MISCREG_TPIDR_EL1? |
| // ArmISA::MISCREG_TPIDR_EL0? |
| // ArmISA::MISCREG_TPIDRRO_EL0? |
| // ArmISA::MISCREG_TPIDR_EL2? |
| // ArmISA::MISCREG_TPIDR_EL3? |
| // ArmISA::MISCREG_CNTKCTL_EL1? |
| // ArmISA::MISCREG_CNTFRQ_EL0? |
| // ArmISA::MISCREG_CNTPCT_EL0? |
| // ArmISA::MISCREG_CNTVCT_EL0? |
| // ArmISA::MISCREG_CNTP_TVAL_EL0? |
| // ArmISA::MISCREG_CNTP_CTL_EL0? |
| // ArmISA::MISCREG_CNTP_CVAL_EL0? |
| // ArmISA::MISCREG_CNTV_TVAL_EL0? |
| // ArmISA::MISCREG_CNTV_CTL_EL0? |
| // ArmISA::MISCREG_CNTV_CVAL_EL0? |
| // ArmISA::MISCREG_PMEVCNTR0_EL0? |
| // ArmISA::MISCREG_PMEVCNTR1_EL0? |
| // ArmISA::MISCREG_PMEVCNTR2_EL0? |
| // ArmISA::MISCREG_PMEVCNTR3_EL0? |
| // ArmISA::MISCREG_PMEVCNTR4_EL0? |
| // ArmISA::MISCREG_PMEVCNTR5_EL0? |
| // ArmISA::MISCREG_PMEVTYPER0_EL0? |
| // ArmISA::MISCREG_PMEVTYPER1_EL0? |
| // ArmISA::MISCREG_PMEVTYPER2_EL0? |
| // ArmISA::MISCREG_PMEVTYPER3_EL0? |
| // ArmISA::MISCREG_PMEVTYPER4_EL0? |
| // ArmISA::MISCREG_PMEVTYPER5_EL0? |
| // ArmISA::MISCREG_CNTVOFF_EL2? |
| // ArmISA::MISCREG_CNTHCTL_EL2? |
| // ArmISA::MISCREG_CNTHP_TVAL_EL2? |
| // ArmISA::MISCREG_CNTHP_CTL_EL2? |
| // ArmISA::MISCREG_CNTHP_CVAL_EL2? |
| // ArmISA::MISCREG_CNTPS_TVAL_EL1? |
| // ArmISA::MISCREG_CNTPS_CTL_EL1? |
| // ArmISA::MISCREG_CNTPS_CVAL_EL1? |
| // ArmISA::MISCREG_IL1DATA0_EL1? |
| // ArmISA::MISCREG_IL1DATA1_EL1? |
| // ArmISA::MISCREG_IL1DATA2_EL1? |
| // ArmISA::MISCREG_IL1DATA3_EL1? |
| // ArmISA::MISCREG_DL1DATA0_EL1? |
| // ArmISA::MISCREG_DL1DATA1_EL1? |
| // ArmISA::MISCREG_DL1DATA2_EL1? |
| // ArmISA::MISCREG_DL1DATA3_EL1? |
| // ArmISA::MISCREG_DL1DATA4_EL1? |
| // ArmISA::MISCREG_L2ACTLR_EL1? |
| // ArmISA::MISCREG_CPUACTLR_EL1? |
| // ArmISA::MISCREG_CPUECTLR_EL1? |
| // ArmISA::MISCREG_CPUMERRSR_EL1? |
| // ArmISA::MISCREG_L2MERRSR_EL1? |
| // ArmISA::MISCREG_CBAR_EL1? |
| // ArmISA::MISCREG_CONTEXTIDR_EL2? |
| |
| // Introduced in ARMv8.1 |
| // ArmISA::MISCREG_TTBR1_EL2? |
| // ArmISA::MISCREG_CNTHV_CTL_EL2? |
| // ArmISA::MISCREG_CNTHV_CVAL_EL2? |
| // ArmISA::MISCREG_CNTHV_TVAL_EL2? |
| |
| // RAS extension (unimplemented) |
| // ArmISA::MISCREG_ERRIDR_EL1? |
| // ArmISA::MISCREG_ERRSELR_EL1? |
| // ArmISA::MISCREG_ERXFR_EL1? |
| // ArmISA::MISCREG_ERXCTLR_EL1? |
| // ArmISA::MISCREG_ERXSTATUS_EL1? |
| // ArmISA::MISCREG_ERXADDR_EL1? |
| // ArmISA::MISCREG_ERXMISC0_EL1? |
| // ArmISA::MISCREG_ERXMISC1_EL1? |
| // ArmISA::MISCREG_DISR_EL1? |
| // ArmISA::MISCREG_VSESR_EL2? |
| // ArmISA::MISCREG_VDISR_EL2? |
| }); |
| |
| Iris::ThreadContext::IdxNameMap CortexR52TC::intReg32IdxNameMap({ |
| { ArmISA::int_reg::R0, "R0" }, |
| { ArmISA::int_reg::R1, "R1" }, |
| { ArmISA::int_reg::R2, "R2" }, |
| { ArmISA::int_reg::R3, "R3" }, |
| { ArmISA::int_reg::R4, "R4" }, |
| { ArmISA::int_reg::R5, "R5" }, |
| { ArmISA::int_reg::R6, "R6" }, |
| { ArmISA::int_reg::R7, "R7" }, |
| { ArmISA::int_reg::R8, "R8" }, |
| { ArmISA::int_reg::R9, "R9" }, |
| { ArmISA::int_reg::R10, "R10" }, |
| { ArmISA::int_reg::R11, "R11" }, |
| { ArmISA::int_reg::R12, "R12" }, |
| { ArmISA::int_reg::R13, "R13" }, |
| { ArmISA::int_reg::R14, "R14" }, |
| { ArmISA::int_reg::R15, "R15" } |
| }); |
| |
| Iris::ThreadContext::IdxNameMap CortexR52TC::ccRegIdxNameMap({ |
| { ArmISA::cc_reg::Nz, "CPSR" }, |
| { ArmISA::cc_reg::C, "CPSR.C" }, |
| { ArmISA::cc_reg::V, "CPSR.V" }, |
| { ArmISA::cc_reg::Ge, "CPSR.GE" }, |
| { ArmISA::cc_reg::Fp, "FPSCR" }, |
| }); |
| |
| std::vector<iris::MemorySpaceId> CortexR52TC::bpSpaceIds; |
| |
| } // namespace fastmodel |
| } // namespace gem5 |