target/riscv: Fix check range for first fault only
Only check the range that has passed the address translation. Signed-off-by: LIU Zhiwei <zhiwei_liu@c-sky.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-id: 20220120122050.41546-19-zhiwei_liu@c-sky.com Signed-off-by: Alistair Francis <alistair.francis@wdc.com>staging
parent
eef11ce325
commit
01d09525da
|
@ -500,12 +500,12 @@ vext_ldff(void *vd, void *v0, target_ulong base,
|
||||||
cpu_mmu_index(env, false));
|
cpu_mmu_index(env, false));
|
||||||
if (host) {
|
if (host) {
|
||||||
#ifdef CONFIG_USER_ONLY
|
#ifdef CONFIG_USER_ONLY
|
||||||
if (page_check_range(addr, nf << esz, PAGE_READ) < 0) {
|
if (page_check_range(addr, offset, PAGE_READ) < 0) {
|
||||||
vl = i;
|
vl = i;
|
||||||
goto ProbeSuccess;
|
goto ProbeSuccess;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
probe_pages(env, addr, nf << esz, ra, MMU_DATA_LOAD);
|
probe_pages(env, addr, offset, ra, MMU_DATA_LOAD);
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
vl = i;
|
vl = i;
|
||||||
|
|
Loading…
Reference in New Issue