diff options
Diffstat (limited to 'target-mips/op_helper.c')
-rw-r--r-- | target-mips/op_helper.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/target-mips/op_helper.c b/target-mips/op_helper.c index ce01225..bca1d70 100644 --- a/target-mips/op_helper.c +++ b/target-mips/op_helper.c @@ -101,11 +101,10 @@ void helper_raise_exception (uint32_t exception) } #if !defined(CONFIG_USER_ONLY) -static void do_restore_state (void *pc_ptr) +static void do_restore_state(uintptr_t pc) { TranslationBlock *tb; - unsigned long pc = (unsigned long) pc_ptr; - + tb = tb_find_pc (pc); if (tb) { cpu_restore_state(tb, env, pc); @@ -2293,7 +2292,7 @@ void helper_wait (void) #if !defined(CONFIG_USER_ONLY) static void QEMU_NORETURN do_unaligned_access(target_ulong addr, int is_write, - int is_user, void *retaddr); + int is_user, uintptr_t retaddr); #define MMUSUFFIX _mmu #define ALIGNED_ONLY @@ -2310,7 +2309,8 @@ static void QEMU_NORETURN do_unaligned_access(target_ulong addr, int is_write, #define SHIFT 3 #include "softmmu_template.h" -static void do_unaligned_access (target_ulong addr, int is_write, int is_user, void *retaddr) +static void do_unaligned_access(target_ulong addr, int is_write, + int is_user, uintptr_t retaddr) { env->CP0_BadVAddr = addr; do_restore_state (retaddr); @@ -2318,11 +2318,10 @@ static void do_unaligned_access (target_ulong addr, int is_write, int is_user, v } void tlb_fill(CPUMIPSState *env1, target_ulong addr, int is_write, int mmu_idx, - void *retaddr) + uintptr_t retaddr) { TranslationBlock *tb; CPUMIPSState *saved_env; - unsigned long pc; int ret; saved_env = env; @@ -2331,12 +2330,11 @@ void tlb_fill(CPUMIPSState *env1, target_ulong addr, int is_write, int mmu_idx, if (ret) { if (retaddr) { /* now we have a real cpu fault */ - pc = (unsigned long)retaddr; - tb = tb_find_pc(pc); + tb = tb_find_pc(retaddr); if (tb) { /* the PC is inside the translated code. It means that we have a virtual CPU fault */ - cpu_restore_state(tb, env, pc); + cpu_restore_state(tb, env, retaddr); } } helper_raise_exception_err(env->exception_index, env->error_code); |