diff options
| author | Richard Henderson <richard.henderson@linaro.org> | 2020-02-08 12:58:09 +0000 |
|---|---|---|
| committer | Peter Maydell <peter.maydell@linaro.org> | 2020-02-13 14:14:54 +0000 |
| commit | 81636b70c226dc27d7ebc8dedbcec26166d23085 (patch) | |
| tree | 0b9db365f47f5046a46cf495725da6e8af81fff8 /target/arm/helper.c | |
| parent | 66412260cc1bee60a22d96e4ad8569b85745fea4 (diff) | |
| download | focaccia-qemu-81636b70c226dc27d7ebc8dedbcec26166d23085.tar.gz focaccia-qemu-81636b70c226dc27d7ebc8dedbcec26166d23085.zip | |
target/arm: Enforce PAN semantics in get_S1prot
If we have a PAN-enforcing mmu_idx, set prot == 0 if user_rw != 0. Reviewed-by: Alex Bennée <alex.bennee@linaro.org> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20200208125816.14954-14-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'target/arm/helper.c')
| -rw-r--r-- | target/arm/helper.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/target/arm/helper.c b/target/arm/helper.c index f6a600aa00..178757d271 100644 --- a/target/arm/helper.c +++ b/target/arm/helper.c @@ -9569,6 +9569,9 @@ static int get_S1prot(CPUARMState *env, ARMMMUIdx mmu_idx, bool is_aa64, if (is_user) { prot_rw = user_rw; } else { + if (user_rw && regime_is_pan(env, mmu_idx)) { + return 0; + } prot_rw = simple_ap_to_rw_prot_is_user(ap, false); } |