summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--target-sh4/helper.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/target-sh4/helper.c b/target-sh4/helper.c
index 785e9e54e7..d2038bd842 100644
--- a/target-sh4/helper.c
+++ b/target-sh4/helper.c
@@ -453,6 +453,10 @@ int cpu_sh4_handle_mmu_fault(CPUState * env, target_ulong address, int rw,
if (ret != MMU_OK) {
env->tea = address;
+ if (ret != MMU_DTLB_MULTIPLE && ret != MMU_ITLB_MULTIPLE) {
+ env->pteh = (env->pteh & PTEH_ASID_MASK) |
+ (address & PTEH_VPN_MASK);
+ }
switch (ret) {
case MMU_ITLB_MISS:
case MMU_DTLB_MISS_READ: