aboutsummaryrefslogtreecommitdiffstats
path: root/target-mips/op_helper.c
diff options
context:
space:
mode:
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-01-22 20:50:42 +0000
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-01-22 20:50:42 +0000
commit3b1c8be4f4f1b5d4114320aaf41ec4872ab4598c (patch)
tree688f8bb16adc69fe1549605db772d44eb7c0ebeb /target-mips/op_helper.c
parentc281868e2675efc737fd99961ab083456bcdab35 (diff)
Fix PageMask handling, second part.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2345 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-mips/op_helper.c')
-rw-r--r--target-mips/op_helper.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/target-mips/op_helper.c b/target-mips/op_helper.c
index 849482478..4326b6621 100644
--- a/target-mips/op_helper.c
+++ b/target-mips/op_helper.c
@@ -392,6 +392,7 @@ static void fill_tlb (int idx)
tlb = &env->tlb[idx];
tlb->VPN = env->CP0_EntryHi & (int32_t)0xFFFFE000;
tlb->ASID = env->CP0_EntryHi & 0xFF;
+ tlb->PageMask = env->CP0_PageMask;
tlb->G = env->CP0_EntryLo0 & env->CP0_EntryLo1 & 1;
tlb->V0 = (env->CP0_EntryLo0 & 2) != 0;
tlb->D0 = (env->CP0_EntryLo0 & 4) != 0;
@@ -473,6 +474,7 @@ void do_tlbr (void)
mips_tlb_flush_extra(env, MIPS_TLB_NB);
env->CP0_EntryHi = tlb->VPN | tlb->ASID;
+ env->CP0_PageMask = tlb->PageMask;
env->CP0_EntryLo0 = tlb->G | (tlb->V0 << 1) | (tlb->D0 << 2) |
(tlb->C0 << 3) | (tlb->PFN[0] >> 6);
env->CP0_EntryLo1 = tlb->G | (tlb->V1 << 1) | (tlb->D1 << 2) |