aboutsummaryrefslogtreecommitdiff
path: root/target-mips
diff options
context:
space:
mode:
authorths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-10-20 19:45:44 +0000
committerths <ths@c046a42c-6fe2-441c-8c8c-71466251a162>2007-10-20 19:45:44 +0000
commit647de6ca243aab87a1fa480f3ffe4e64c922bcf2 (patch)
tree8a66e510a78020ae43697ab80fdcf1e59d71e48f /target-mips
parent932a79df5d285d4fe48e7fce3b3c4f251d86af3f (diff)
Handle IBE on MIPS properly.
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@3416 c046a42c-6fe2-441c-8c8c-71466251a162
Diffstat (limited to 'target-mips')
-rw-r--r--target-mips/cpu.h3
-rw-r--r--target-mips/op_helper.c8
2 files changed, 11 insertions, 0 deletions
diff --git a/target-mips/cpu.h b/target-mips/cpu.h
index 35bf2fbf6f..363fcd866c 100644
--- a/target-mips/cpu.h
+++ b/target-mips/cpu.h
@@ -479,6 +479,9 @@ int mips_find_by_name (const unsigned char *name, mips_def_t **def);
void mips_cpu_list (FILE *f, int (*cpu_fprintf)(FILE *f, const char *fmt, ...));
int cpu_mips_register (CPUMIPSState *env, mips_def_t *def);
+void do_unassigned_access(target_phys_addr_t addr, int is_write, int is_exec,
+ int unused);
+
#define CPUState CPUMIPSState
#define cpu_init cpu_mips_init
#define cpu_exec cpu_mips_exec
diff --git a/target-mips/op_helper.c b/target-mips/op_helper.c
index 6d7f750d0f..f3e01202e6 100644
--- a/target-mips/op_helper.c
+++ b/target-mips/op_helper.c
@@ -591,6 +591,14 @@ void tlb_fill (target_ulong addr, int is_write, int mmu_idx, void *retaddr)
env = saved_env;
}
+void do_unassigned_access(target_phys_addr_t addr, int is_write, int is_exec,
+ int unused)
+{
+ if (is_exec)
+ do_raise_exception(EXCP_IBE);
+ else
+ do_raise_exception(EXCP_DBE);
+}
#endif
/* Complex FPU operations which may need stack space. */