aboutsummaryrefslogtreecommitdiff
path: root/target
diff options
context:
space:
mode:
authorHelge Deller <deller@gmx.de>2023-08-07 11:52:39 +0200
committerHelge Deller <deller@gmx.de>2023-08-25 15:57:50 +0200
commit3d066afc68d469b2c7cbabf62d32421eef478a66 (patch)
tree9b9fac884f61fa1ca71361defd3bb21816feb3ff /target
parent88b7ad10dd7cecfb5977f99175fe62ac2c511290 (diff)
target/hppa: Use privilege helper in hppa_get_physical_address()
Convert hppa_get_physical_address() to use the privilege helper macro. Signed-off-by: Helge Deller <deller@gmx.de> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Diffstat (limited to 'target')
-rw-r--r--target/hppa/mem_helper.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/target/hppa/mem_helper.c b/target/hppa/mem_helper.c
index 6f04c101dd..46c3dcaf15 100644
--- a/target/hppa/mem_helper.c
+++ b/target/hppa/mem_helper.c
@@ -73,7 +73,7 @@ int hppa_get_physical_address(CPUHPPAState *env, vaddr addr, int mmu_idx,
int type, hwaddr *pphys, int *pprot)
{
hwaddr phys;
- int prot, r_prot, w_prot, x_prot;
+ int prot, r_prot, w_prot, x_prot, priv;
hppa_tlb_entry *ent;
int ret = -1;
@@ -97,9 +97,10 @@ int hppa_get_physical_address(CPUHPPAState *env, vaddr addr, int mmu_idx,
phys = ent->pa + (addr & ~TARGET_PAGE_MASK);
/* Map TLB access_rights field to QEMU protection. */
- r_prot = (mmu_idx <= ent->ar_pl1) * PAGE_READ;
- w_prot = (mmu_idx <= ent->ar_pl2) * PAGE_WRITE;
- x_prot = (ent->ar_pl2 <= mmu_idx && mmu_idx <= ent->ar_pl1) * PAGE_EXEC;
+ priv = MMU_IDX_TO_PRIV(mmu_idx);
+ r_prot = (priv <= ent->ar_pl1) * PAGE_READ;
+ w_prot = (priv <= ent->ar_pl2) * PAGE_WRITE;
+ x_prot = (ent->ar_pl2 <= priv && priv <= ent->ar_pl1) * PAGE_EXEC;
switch (ent->ar_type) {
case 0: /* read-only: data page */
prot = r_prot;