target/hppa: Handle alignment faults in hppa_get_physical_address

In Chapter 5, Interruptions, the group 3 exceptions lists
"Unaligned data reference trap" has higher priority than
"Data memory break trap".

Reviewed-by: Helge Deller <deller@gmx.de>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
Richard Henderson 2024-10-05 05:32:49 -07:00
parent d73d4a5d78
commit 5d29587b45
1 changed files with 6 additions and 1 deletions

View File

@ -221,7 +221,7 @@ int hppa_get_physical_address(CPUHPPAState *env, vaddr addr, int mmu_idx,
g_assert_not_reached();
}
prot = PAGE_READ | PAGE_WRITE | PAGE_EXEC;
goto egress;
goto egress_align;
}
/* Find a valid tlb entry that matches the virtual address. */
@ -323,6 +323,11 @@ int hppa_get_physical_address(CPUHPPAState *env, vaddr addr, int mmu_idx,
}
}
egress_align:
if (addr & ((1u << memop_alignment_bits(mop)) - 1)) {
ret = EXCP_UNALIGN;
}
egress:
*pphys = phys;
*pprot = prot;