[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v1 03/15] translate-all: Move tcg_handle_interrupt()
From: |
Peter Crosthwaite |
Subject: |
[Qemu-devel] [PATCH v1 03/15] translate-all: Move tcg_handle_interrupt() to -common |
Date: |
Thu, 10 Sep 2015 22:39:33 -0700 |
Move this function to common code. It has no arch specific
dependencies. Prepares support for multi-arch where the translate-all
interface needs to be virtualised. One less thing to virtualise.
Reviewed-by: Richard Henderson <address@hidden>
Signed-off-by: Peter Crosthwaite <address@hidden>
---
translate-all.c | 32 --------------------------------
translate-common.c | 34 ++++++++++++++++++++++++++++++++++
2 files changed, 34 insertions(+), 32 deletions(-)
diff --git a/translate-all.c b/translate-all.c
index 1228f9c..950e991 100644
--- a/translate-all.c
+++ b/translate-all.c
@@ -1457,38 +1457,6 @@ void tb_check_watchpoint(CPUState *cpu)
}
#ifndef CONFIG_USER_ONLY
-/* mask must never be zero, except for A20 change call */
-static void tcg_handle_interrupt(CPUState *cpu, int mask)
-{
- int old_mask;
-
- old_mask = cpu->interrupt_request;
- cpu->interrupt_request |= mask;
-
- /*
- * If called from iothread context, wake the target cpu in
- * case its halted.
- */
- if (!qemu_cpu_is_self(cpu)) {
- qemu_cpu_kick(cpu);
- return;
- }
-
- if (use_icount) {
- cpu->icount_decr.u16.high = 0xffff;
- if (!cpu->can_do_io
- && (mask & ~old_mask) != 0) {
- cpu_abort(cpu, "Raised interrupt while not in I/O function");
- }
- } else {
- cpu->tcg_exit_req = 1;
- }
-}
-
-CPUInterruptHandler cpu_interrupt_handler = tcg_handle_interrupt;
-
-/* in deterministic execution mode, instructions doing device I/Os
- must be at the end of the TB */
void cpu_io_recompile(CPUState *cpu, uintptr_t retaddr)
{
#if defined(TARGET_MIPS) || defined(TARGET_SH4)
diff --git a/translate-common.c b/translate-common.c
index 563ae5a..368a117 100644
--- a/translate-common.c
+++ b/translate-common.c
@@ -1,6 +1,7 @@
/*
* Host code generation common components
*
+ * Copyright (c) 2003 Fabrice Bellard
* Copyright (c) 2015 Peter Crosthwaite <address@hidden>
*
* This library is free software; you can redistribute it and/or
@@ -18,6 +19,39 @@
*/
#include "qemu-common.h"
+#include "qom/cpu.h"
+
+#ifndef CONFIG_USER_ONLY
+/* mask must never be zero, except for A20 change call */
+static void tcg_handle_interrupt(CPUState *cpu, int mask)
+{
+ int old_mask;
+
+ old_mask = cpu->interrupt_request;
+ cpu->interrupt_request |= mask;
+
+ /*
+ * If called from iothread context, wake the target cpu in
+ * case its halted.
+ */
+ if (!qemu_cpu_is_self(cpu)) {
+ qemu_cpu_kick(cpu);
+ return;
+ }
+
+ if (use_icount) {
+ cpu->icount_decr.u16.high = 0xffff;
+ if (!cpu->can_do_io
+ && (mask & ~old_mask) != 0) {
+ cpu_abort(cpu, "Raised interrupt while not in I/O function");
+ }
+ } else {
+ cpu->tcg_exit_req = 1;
+ }
+}
+
+CPUInterruptHandler cpu_interrupt_handler = tcg_handle_interrupt;
+#endif
typedef struct TCGExecInitFn {
void (*do_tcg_exec_init)(unsigned long tb_size);
--
1.9.1
- [Qemu-devel] [PATCH v1 00/15] Multi-Arch Phase 1, Peter Crosthwaite, 2015/09/11
- [Qemu-devel] [PATCH v1 01/15] cpu-exec: Migrate some generic fns to cpu-exec-common, Peter Crosthwaite, 2015/09/11
- [Qemu-devel] [PATCH v1 02/15] translate: Listify tcg_exec_init(), Peter Crosthwaite, 2015/09/11
- [Qemu-devel] [PATCH v1 03/15] translate-all: Move tcg_handle_interrupt() to -common,
Peter Crosthwaite <=
- [Qemu-devel] [PATCH v1 04/15] tcg: split tcg_op_defs to -common, Peter Crosthwaite, 2015/09/11
- [Qemu-devel] [PATCH v1 06/15] translate: move real_host_page setting to -common, Peter Crosthwaite, 2015/09/11
- [Qemu-devel] [PATCH v1 05/15] tcg: Move tcg_tb_ptr to -common, Peter Crosthwaite, 2015/09/11
- [Qemu-devel] [PATCH v1 07/15] cpus: Listify cpu_list() function, Peter Crosthwaite, 2015/09/11
- [Qemu-devel] [PATCH v1 08/15] translate-common: Listify tcg_enabled(), Peter Crosthwaite, 2015/09/11
- [Qemu-devel] [PATCH v1 10/15] exec-all: Move cpu_can_do_io() to qom/cpu.h, Peter Crosthwaite, 2015/09/11
- [Qemu-devel] [PATCH v1 11/15] cputlb: move CPU_LOOP() for tlb_reset() to exec.c, Peter Crosthwaite, 2015/09/11
- [Qemu-devel] [PATCH v1 12/15] cputlb: Change tlb_set_dirty() arg to cpu, Peter Crosthwaite, 2015/09/11