aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-04-05 23:18:13 +0000
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-04-05 23:18:13 +0000
commitacd858d91f73fe310627e2b92a8fdd529ec06ade (patch)
treedd90d8a18c0c606134e764fece7a2ebdc9e342dc
parent3529b538ce91df31b7300ce2fbd838a2ca36e1fc (diff)
Handle EBase properly.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@2613 c046a42c-6fe2-441c-8c8c-71466251a162
-rw-r--r--target-mips/helper.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/target-mips/helper.c b/target-mips/helper.c
index 2572050bb3..dc51814677 100644
--- a/target-mips/helper.c
+++ b/target-mips/helper.c
@@ -398,7 +398,7 @@ void do_interrupt (CPUState *env)
if (env->CP0_Status & (1 << CP0St_BEV)) {
env->PC = (int32_t)0xBFC00200;
} else {
- env->PC = (int32_t)0x80000000;
+ env->PC = (int32_t)(env->CP0_EBase & ~0x3ff);
}
env->PC += offset;
env->CP0_Cause = (env->CP0_Cause & ~0x7C) | (cause << 2);