aboutsummaryrefslogtreecommitdiff
path: root/target-mips/helper.c
diff options
context:
space:
mode:
authorbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2005-07-02 15:34:05 +0000
committerbellard <bellard@c046a42c-6fe2-441c-8c8c-71466251a162>2005-07-02 15:34:05 +0000
commit8549850891b3e0714cdb01aecf3e08a746c1b361 (patch)
tree6a4d0ba58c29e1b1beaca3f608e54eefe261ad91 /target-mips/helper.c
parent7a962d3087d24fa0ea377cbde39ab97f81457ff6 (diff)
fixed c0_context in tlb exception (Ralf Baechle)
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@1480 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-mips/helper.c')
-rw-r--r--target-mips/helper.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/target-mips/helper.c b/target-mips/helper.c
index 2381496142..aa97e8229f 100644
--- a/target-mips/helper.c
+++ b/target-mips/helper.c
@@ -263,10 +263,10 @@ int cpu_mips_handle_mmu_fault (CPUState *env, target_ulong address, int rw,
}
/* Raise exception */
env->CP0_BadVAddr = address;
- env->CP0_Context =
- (env->CP0_Context & 0x00000FFF) | (address & 0xFFFFF000);
+ env->CP0_Context = (env->CP0_Context & 0xff800000) |
+ ((address >> 8) & 0x007ffff0);
env->CP0_EntryHi =
- (env->CP0_EntryHi & 0x00000FFF) | (address & 0xFFFFF000);
+ (env->CP0_EntryHi & 0x000000FF) | (address & 0xFFFFF000);
env->exception_index = exception;
env->error_code = error_code;
ret = 1;