mirror of https://gitee.com/openkylin/qemu.git
arm: Do not define TLBTR in PMSA systems
If doing a PMSA (MPU) system do not define the VMSA specific TLBTR CP. The def is done separately from VMSA registers group as it is affected by both the OMAP/STRONGARM RW errata and the MIDR backgrounding. Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> Message-id: b03fea3840207edf633f5c9189400c3dd6a28d14.1434066412.git.peter.crosthwaite@xilinx.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
62b44f059a
commit
8085ce63c5
|
@ -3448,11 +3448,14 @@ void register_cp_regs_for_features(ARMCPU *cpu)
|
||||||
{ .name = "TCMTR",
|
{ .name = "TCMTR",
|
||||||
.cp = 15, .crn = 0, .crm = 0, .opc1 = 0, .opc2 = 2,
|
.cp = 15, .crn = 0, .crm = 0, .opc1 = 0, .opc2 = 2,
|
||||||
.access = PL1_R, .type = ARM_CP_CONST, .resetvalue = 0 },
|
.access = PL1_R, .type = ARM_CP_CONST, .resetvalue = 0 },
|
||||||
{ .name = "TLBTR",
|
|
||||||
.cp = 15, .crn = 0, .crm = 0, .opc1 = 0, .opc2 = 3,
|
|
||||||
.access = PL1_R, .type = ARM_CP_CONST, .resetvalue = 0 },
|
|
||||||
REGINFO_SENTINEL
|
REGINFO_SENTINEL
|
||||||
};
|
};
|
||||||
|
/* TLBTR is specific to VMSA */
|
||||||
|
ARMCPRegInfo id_tlbtr_reginfo = {
|
||||||
|
.name = "TLBTR",
|
||||||
|
.cp = 15, .crn = 0, .crm = 0, .opc1 = 0, .opc2 = 3,
|
||||||
|
.access = PL1_R, .type = ARM_CP_CONST, .resetvalue = 0,
|
||||||
|
};
|
||||||
ARMCPRegInfo crn0_wi_reginfo = {
|
ARMCPRegInfo crn0_wi_reginfo = {
|
||||||
.name = "CRN0_WI", .cp = 15, .crn = 0, .crm = CP_ANY,
|
.name = "CRN0_WI", .cp = 15, .crn = 0, .crm = CP_ANY,
|
||||||
.opc1 = CP_ANY, .opc2 = CP_ANY, .access = PL1_W,
|
.opc1 = CP_ANY, .opc2 = CP_ANY, .access = PL1_W,
|
||||||
|
@ -3474,6 +3477,7 @@ void register_cp_regs_for_features(ARMCPU *cpu)
|
||||||
for (r = id_cp_reginfo; r->type != ARM_CP_SENTINEL; r++) {
|
for (r = id_cp_reginfo; r->type != ARM_CP_SENTINEL; r++) {
|
||||||
r->access = PL1_RW;
|
r->access = PL1_RW;
|
||||||
}
|
}
|
||||||
|
id_tlbtr_reginfo.access = PL1_RW;
|
||||||
}
|
}
|
||||||
if (arm_feature(env, ARM_FEATURE_V8)) {
|
if (arm_feature(env, ARM_FEATURE_V8)) {
|
||||||
define_arm_cp_regs(cpu, id_v8_midr_cp_reginfo);
|
define_arm_cp_regs(cpu, id_v8_midr_cp_reginfo);
|
||||||
|
@ -3481,6 +3485,9 @@ void register_cp_regs_for_features(ARMCPU *cpu)
|
||||||
define_arm_cp_regs(cpu, id_pre_v8_midr_cp_reginfo);
|
define_arm_cp_regs(cpu, id_pre_v8_midr_cp_reginfo);
|
||||||
}
|
}
|
||||||
define_arm_cp_regs(cpu, id_cp_reginfo);
|
define_arm_cp_regs(cpu, id_cp_reginfo);
|
||||||
|
if (!arm_feature(env, ARM_FEATURE_MPU)) {
|
||||||
|
define_one_arm_cp_reg(cpu, &id_tlbtr_reginfo);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (arm_feature(env, ARM_FEATURE_MPIDR)) {
|
if (arm_feature(env, ARM_FEATURE_MPIDR)) {
|
||||||
|
|
Loading…
Reference in New Issue