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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user