diff options
Diffstat (limited to 'target')
| -rw-r--r-- | target/arm/ptw.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/target/arm/ptw.c b/target/arm/ptw.c index 1cafe8f4f7..3df5d4da12 100644 --- a/target/arm/ptw.c +++ b/target/arm/ptw.c @@ -478,10 +478,14 @@ static bool granule_protection_check(CPUARMState *env, uint64_t paddress, break; case 0b1111: /* all access */ return true; - case 0b1000: - case 0b1001: - case 0b1010: - case 0b1011: + case 0b1000: /* secure */ + if (!cpu_isar_feature(aa64_sel2, cpu)) { + goto fault_walk; + } + /* fall through */ + case 0b1001: /* non-secure */ + case 0b1010: /* root */ + case 0b1011: /* realm */ if (pspace == (gpi & 3)) { return true; } |