mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-03 07:43:54 -06:00
target/arm: Add PMSAv8r registers
Signed-off-by: Tobias Röhmel <tobias.roehmel@rwth-aachen.de> Message-id: 20221206102504.165775-6-tobias.roehmel@rwth-aachen.de Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
452c67a427
commit
761c46425e
4 changed files with 360 additions and 4 deletions
|
@ -491,6 +491,14 @@ static void arm_cpu_reset_hold(Object *obj)
|
|||
sizeof(*env->pmsav7.dracr) * cpu->pmsav7_dregion);
|
||||
}
|
||||
}
|
||||
|
||||
if (cpu->pmsav8r_hdregion > 0) {
|
||||
memset(env->pmsav8.hprbar, 0,
|
||||
sizeof(*env->pmsav8.hprbar) * cpu->pmsav8r_hdregion);
|
||||
memset(env->pmsav8.hprlar, 0,
|
||||
sizeof(*env->pmsav8.hprlar) * cpu->pmsav8r_hdregion);
|
||||
}
|
||||
|
||||
env->pmsav7.rnr[M_REG_NS] = 0;
|
||||
env->pmsav7.rnr[M_REG_S] = 0;
|
||||
env->pmsav8.mair0[M_REG_NS] = 0;
|
||||
|
@ -2002,11 +2010,10 @@ static void arm_cpu_realizefn(DeviceState *dev, Error **errp)
|
|||
/* MPU can be configured out of a PMSA CPU either by setting has-mpu
|
||||
* to false or by setting pmsav7-dregion to 0.
|
||||
*/
|
||||
if (!cpu->has_mpu) {
|
||||
cpu->pmsav7_dregion = 0;
|
||||
}
|
||||
if (cpu->pmsav7_dregion == 0) {
|
||||
if (!cpu->has_mpu || cpu->pmsav7_dregion == 0) {
|
||||
cpu->has_mpu = false;
|
||||
cpu->pmsav7_dregion = 0;
|
||||
cpu->pmsav8r_hdregion = 0;
|
||||
}
|
||||
|
||||
if (arm_feature(env, ARM_FEATURE_PMSA) &&
|
||||
|
@ -2033,6 +2040,19 @@ static void arm_cpu_realizefn(DeviceState *dev, Error **errp)
|
|||
env->pmsav7.dracr = g_new0(uint32_t, nr);
|
||||
}
|
||||
}
|
||||
|
||||
if (cpu->pmsav8r_hdregion > 0xff) {
|
||||
error_setg(errp, "PMSAv8 MPU EL2 #regions invalid %" PRIu32,
|
||||
cpu->pmsav8r_hdregion);
|
||||
return;
|
||||
}
|
||||
|
||||
if (cpu->pmsav8r_hdregion) {
|
||||
env->pmsav8.hprbar = g_new0(uint32_t,
|
||||
cpu->pmsav8r_hdregion);
|
||||
env->pmsav8.hprlar = g_new0(uint32_t,
|
||||
cpu->pmsav8r_hdregion);
|
||||
}
|
||||
}
|
||||
|
||||
if (arm_feature(env, ARM_FEATURE_M_SECURITY)) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue