From e6672d1f291e415c6d7e0453dabe8c8b7eb5ddc1 Mon Sep 17 00:00:00 2001 From: Wade Walker Date: Fri, 15 Jul 2011 11:53:34 -0500 Subject: ARM: Add two unimplemented miscellaneous registers. Adds MISCREG_ID_MMFR2 and removes break on access to MISCREG_CLIDR. Both registers now return values that are consistent with current ARM implementations. --- src/arch/arm/isa.cc | 11 ++++++++--- src/arch/arm/miscregs.hh | 6 +++--- 2 files changed, 11 insertions(+), 6 deletions(-) (limited to 'src/arch/arm') diff --git a/src/arch/arm/isa.cc b/src/arch/arm/isa.cc index 27218bca8..b8a047f65 100644 --- a/src/arch/arm/isa.cc +++ b/src/arch/arm/isa.cc @@ -186,12 +186,19 @@ ISA::readMiscReg(int misc_reg, ThreadContext *tc) case MISCREG_MPIDR: return tc->cpuId(); break; + case MISCREG_ID_MMFR0: + return 0x03; // VMSAv7 support + case MISCREG_ID_MMFR2: + return 0x01230000; // no HW access | WFI stalling | ISB and DSB + // | all TLB maintenance | no Harvard case MISCREG_ID_MMFR3: return 0xF0102211; // SuperSec | Coherent TLB | Bcast Maint | // BP Maint | Cache Maint Set/way | Cache Maint MVA case MISCREG_CLIDR: warn_once("The clidr register always reports 0 caches.\n"); - break; + warn_once("clidr LoUIS field of 0b001 to match current " + "ARM implementations.\n"); + return 0x00200000; case MISCREG_CCSIDR: warn_once("The ccsidr register isn't implemented and " "always reads as 0.\n"); @@ -203,8 +210,6 @@ ISA::readMiscReg(int misc_reg, ThreadContext *tc) case MISCREG_ID_PFR1: warn("reading unimplmented register ID_PFR1"); return 0; - case MISCREG_ID_MMFR0: - return 0x03; //VMSAz7 case MISCREG_CTR: return 0x86468006; // V7, 64 byte cache line, load/exclusive is exact case MISCREG_ACTLR: diff --git a/src/arch/arm/miscregs.hh b/src/arch/arm/miscregs.hh index 5fe762ebe..97ac58e02 100644 --- a/src/arch/arm/miscregs.hh +++ b/src/arch/arm/miscregs.hh @@ -150,6 +150,7 @@ namespace ArmISA MISCREG_V2POWUR, MISCREG_V2POWUW, MISCREG_ID_MMFR0, + MISCREG_ID_MMFR2, MISCREG_ID_MMFR3, MISCREG_ACTLR, MISCREG_PMCR, @@ -181,7 +182,6 @@ namespace ArmISA MISCREG_ID_DFR0, MISCREG_ID_AFR0, MISCREG_ID_MMFR1, - MISCREG_ID_MMFR2, MISCREG_AIDR, MISCREG_ADFSR, MISCREG_AIFSR, @@ -231,7 +231,7 @@ namespace ArmISA "scr", "sder", "par", "v2pcwpr", "v2pcwpw", "v2pcwur", "v2pcwuw", "v2powpr", "v2powpw", "v2powur", "v2powuw", - "id_mmfr0", "id_mmfr3", "actlr", "pmcr", "pmccntr", + "id_mmfr0", "id_mmfr2", "id_mmfr3", "actlr", "pmcr", "pmccntr", "pmcntenset", "pmcntenclr", "pmovsr", "pmswinc", "pmselr", "pmceid0", "pmceid1", "pmc_other", "pmxevcntr", @@ -241,7 +241,7 @@ namespace ArmISA // Unimplemented below "tcmtr", "id_dfr0", "id_afr0", - "id_mmfr1", "id_mmfr2", + "id_mmfr1", "aidr", "adfsr", "aifsr", "dcimvac", "dcisw", "mccsw", "dccmvau", -- cgit v1.2.3