arch-arm: Correct masking of cp10 and cp11 in CPACR
This patch fixes the masking of cp10 and cp11 in CPACR according to NSACR.cp10 / NSACR.cp11 by adding the condition "in Non-secure state, if EL3 is implemented and is using AArch32...", which is specified in ARM ARM. Change-Id: Id00e7bf04d6a985e27dbf1028677da0746b79924 Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com> Reviewed-on: https://gem5-review.googlesource.com/10044 Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
This commit is contained in:
committed by
Giacomo Travaglini
parent
8a690593f4
commit
fcec1bf88c
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2010-2017 ARM Limited
|
||||
* Copyright (c) 2010-2018 ARM Limited
|
||||
* All rights reserved
|
||||
*
|
||||
* The license below extends only to copyright in the software and shall
|
||||
@@ -400,7 +400,7 @@ ISA::readMiscReg(int misc_reg, ThreadContext *tc)
|
||||
if (haveSecurity) {
|
||||
scr = readMiscRegNoEffect(MISCREG_SCR);
|
||||
cpsr = readMiscRegNoEffect(MISCREG_CPSR);
|
||||
if (scr.ns && (cpsr.mode != MODE_MON)) {
|
||||
if (scr.ns && (cpsr.mode != MODE_MON) && ELIs32(tc, EL3)) {
|
||||
NSACR nsacr = readMiscRegNoEffect(MISCREG_NSACR);
|
||||
// NB: Skipping the full loop, here
|
||||
if (!nsacr.cp10) cpacrMask.cp10 = 0;
|
||||
@@ -745,7 +745,7 @@ ISA::setMiscReg(int misc_reg, const MiscReg &val, ThreadContext *tc)
|
||||
if (haveSecurity) {
|
||||
scr = readMiscRegNoEffect(MISCREG_SCR);
|
||||
CPSR cpsr = readMiscRegNoEffect(MISCREG_CPSR);
|
||||
if (scr.ns && (cpsr.mode != MODE_MON)) {
|
||||
if (scr.ns && (cpsr.mode != MODE_MON) && ELIs32(tc, EL3)) {
|
||||
NSACR nsacr = readMiscRegNoEffect(MISCREG_NSACR);
|
||||
// NB: Skipping the full loop, here
|
||||
if (!nsacr.cp10) cpacrMask.cp10 = 0;
|
||||
|
||||
Reference in New Issue
Block a user