]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
target-xtensa: update EXCVADDR in case of page table lookup
authorMax Filippov <jcmvbkbc@gmail.com>
Sun, 27 May 2012 14:34:50 +0000 (18:34 +0400)
committerMichael Roth <mdroth@linux.vnet.ibm.com>
Mon, 25 Jun 2012 13:48:06 +0000 (08:48 -0500)
According to ISA, 4.4.2.6, EXCVADDR may be changed by any TLB miss, even
if the miss is handled entirely by processor hardware.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
(cherry picked from commit 39e7d37f0f25823c00d1105e8eb9b61182fd349c)

Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.com>
target-xtensa/helper.c

index 209422784331ecb4dc7c40968a3fc06d809bab8a..43a6611e6237251152e99065c1514f92a690b459 100644 (file)
@@ -516,6 +516,7 @@ static int autorefill_mmu(CPUXtensaState *env, uint32_t vaddr, bool dtlb,
         *wi = (++env->autorefill_idx) & 0x3;
         split_tlb_entry_spec_way(env, vaddr, dtlb, &vpn, *wi, ei);
         xtensa_tlb_set_entry(env, dtlb, *wi, *ei, vpn, pte);
+        env->sregs[EXCVADDR] = vaddr;
         qemu_log("%s: autorefill(%08x): %08x -> %08x\n",
                 __func__, vaddr, vpn, pte);
     }