aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Färber <afaerber@suse.de>2013-01-17 09:16:15 +0100
committerAndreas Färber <afaerber@suse.de>2013-02-16 14:51:00 +0100
commit907a5e32f293a0af8875973d4cce12b96bea5bae (patch)
tree6604018fe4f084226445d334095bcc2bae7569ce
parentd77953b94ff20868b21796ee22ca57baa1cfc941 (diff)
cputlb: Pass CPUState to cpu_unlink_tb()
CPUArchState is no longer needed. Signed-off-by: Andreas Färber <afaerber@suse.de>
-rw-r--r--exec.c2
-rw-r--r--translate-all.c9
-rw-r--r--translate-all.h2
3 files changed, 7 insertions, 6 deletions
diff --git a/exec.c b/exec.c
index dbb893a08e..a41bcb8694 100644
--- a/exec.c
+++ b/exec.c
@@ -495,7 +495,7 @@ void cpu_exit(CPUArchState *env)
CPUState *cpu = ENV_GET_CPU(env);
cpu->exit_request = 1;
- cpu_unlink_tb(env);
+ cpu_unlink_tb(cpu);
}
void cpu_abort(CPUArchState *env, const char *fmt, ...)
diff --git a/translate-all.c b/translate-all.c
index 52128aa0c4..b50fb89528 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -1416,13 +1416,12 @@ void tb_invalidate_phys_addr(hwaddr addr)
}
#endif /* TARGET_HAS_ICE && !defined(CONFIG_USER_ONLY) */
-void cpu_unlink_tb(CPUArchState *env)
+void cpu_unlink_tb(CPUState *cpu)
{
/* FIXME: TB unchaining isn't SMP safe. For now just ignore the
problem and hope the cpu will stop of its own accord. For userspace
emulation this often isn't actually as bad as it sounds. Often
signals are used primarily to interrupt blocking syscalls. */
- CPUState *cpu = ENV_GET_CPU(env);
TranslationBlock *tb;
static spinlock_t interrupt_lock = SPIN_LOCK_UNLOCKED;
@@ -1476,7 +1475,7 @@ static void tcg_handle_interrupt(CPUArchState *env, int mask)
cpu_abort(env, "Raised interrupt while not in I/O function");
}
} else {
- cpu_unlink_tb(env);
+ cpu_unlink_tb(cpu);
}
}
@@ -1624,8 +1623,10 @@ void dump_exec_info(FILE *f, fprintf_function cpu_fprintf)
void cpu_interrupt(CPUArchState *env, int mask)
{
+ CPUState *cpu = ENV_GET_CPU(env);
+
env->interrupt_request |= mask;
- cpu_unlink_tb(env);
+ cpu_unlink_tb(cpu);
}
/*
diff --git a/translate-all.h b/translate-all.h
index b181fb48ad..5c38819eb8 100644
--- a/translate-all.h
+++ b/translate-all.h
@@ -28,7 +28,7 @@
/* translate-all.c */
void tb_invalidate_phys_page_fast(tb_page_addr_t start, int len);
-void cpu_unlink_tb(CPUArchState *env);
+void cpu_unlink_tb(CPUState *cpu);
void tb_check_watchpoint(CPUArchState *env);
#endif /* TRANSLATE_ALL_H */