diff mbox

[qom-cpu,v2,04/29] cpu: Change cpu_exit() argument to CPUState

Message ID 1371398269-6213-5-git-send-email-afaerber@suse.de
State New
Headers show

Commit Message

Andreas Färber June 16, 2013, 3:57 p.m. UTC
It no longer depends on CPUArchState, so move it to qom/cpu.c.

Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 cpus.c                  | 4 ++--
 exec.c                  | 8 --------
 gdbstub.c               | 2 +-
 hw/i386/pc.c            | 2 +-
 hw/mips/mips_fulong2e.c | 2 +-
 hw/mips/mips_jazz.c     | 2 +-
 hw/mips/mips_malta.c    | 2 +-
 hw/ppc/prep.c           | 2 +-
 include/exec/cpu-all.h  | 2 --
 include/qom/cpu.h       | 8 ++++++++
 linux-user/main.c       | 2 +-
 linux-user/signal.c     | 2 +-
 qom/cpu.c               | 6 ++++++
 13 files changed, 24 insertions(+), 20 deletions(-)

Comments

Richard Henderson June 17, 2013, 7:59 p.m. UTC | #1
On 06/16/2013 08:57 AM, Andreas Färber wrote:
> @@ -1110,7 +1110,7 @@ static void cpu_request_exit(void *opaque, int irq, int level)
>      CPUX86State *env = cpu_single_env;
>  
>      if (env && level) {
> -        cpu_exit(env);
> +        cpu_exit(CPU(x86_env_get_cpu(env)));
...
> @@ -253,7 +253,7 @@ static void cpu_request_exit(void *opaque, int irq, int level)
>      CPUMIPSState *env = cpu_single_env;
>  
>      if (env && level) {
> -        cpu_exit(env);
> +        cpu_exit(CPU(mips_env_get_cpu(env)));
...
> @@ -102,7 +102,7 @@ static void cpu_request_exit(void *opaque, int irq, int level)
>      CPUMIPSState *env = cpu_single_env;
>  
>      if (env && level) {
> -        cpu_exit(env);
> +        cpu_exit(CPU(mips_env_get_cpu(env)));
...
> @@ -773,7 +773,7 @@ static void cpu_request_exit(void *opaque, int irq, int level)
>      CPUMIPSState *env = cpu_single_env;
>  
>      if (env && level) {
> -        cpu_exit(env);
> +        cpu_exit(CPU(mips_env_get_cpu(env)));
...
> @@ -420,7 +420,7 @@ static void cpu_request_exit(void *opaque, int irq, int level)
>      CPUPPCState *env = cpu_single_env;
>  
>      if (env && level) {
> -        cpu_exit(env);
> +        cpu_exit(CPU(ppc_env_get_cpu(env)));

ENV_GET_CPU, 5 instances.


r~
Andreas Färber June 17, 2013, 9 p.m. UTC | #2
Am 17.06.2013 21:59, schrieb Richard Henderson:
> On 06/16/2013 08:57 AM, Andreas Färber wrote:
[...]
>> @@ -420,7 +420,7 @@ static void cpu_request_exit(void *opaque, int irq, int level)
>>      CPUPPCState *env = cpu_single_env;
>>  
>>      if (env && level) {
>> -        cpu_exit(env);
>> +        cpu_exit(CPU(ppc_env_get_cpu(env)));
> 
> ENV_GET_CPU, 5 instances.

Explained in 02/29. :)

Andreas
diff mbox

Patch

diff --git a/cpus.c b/cpus.c
index 3260f09..ab0eb4f 100644
--- a/cpus.c
+++ b/cpus.c
@@ -473,7 +473,7 @@  static void cpu_handle_guest_debug(CPUArchState *env)
 static void cpu_signal(int sig)
 {
     if (cpu_single_env) {
-        cpu_exit(cpu_single_env);
+        cpu_exit(ENV_GET_CPU(cpu_single_env));
     }
     exit_request = 1;
 }
@@ -1088,7 +1088,7 @@  void cpu_stop_current(void)
         CPUState *cpu_single_cpu = ENV_GET_CPU(cpu_single_env);
         cpu_single_cpu->stop = false;
         cpu_single_cpu->stopped = true;
-        cpu_exit(cpu_single_env);
+        cpu_exit(cpu_single_cpu);
         qemu_cond_signal(&qemu_pause_cond);
     }
 }
diff --git a/exec.c b/exec.c
index 5b8b40d..c0fa5a3 100644
--- a/exec.c
+++ b/exec.c
@@ -515,14 +515,6 @@  void cpu_single_step(CPUArchState *env, int enabled)
 #endif
 }
 
-void cpu_exit(CPUArchState *env)
-{
-    CPUState *cpu = ENV_GET_CPU(env);
-
-    cpu->exit_request = 1;
-    cpu->tcg_exit_req = 1;
-}
-
 void cpu_abort(CPUArchState *env, const char *fmt, ...)
 {
     va_list ap;
diff --git a/gdbstub.c b/gdbstub.c
index 663549c..0f15c7c 100644
--- a/gdbstub.c
+++ b/gdbstub.c
@@ -2655,7 +2655,7 @@  void gdb_do_syscall(gdb_syscall_complete_cb cb, const char *fmt, ...)
        is still in the running state, which can cause packets to be dropped
        and state transition 'T' packets to be sent while the syscall is still
        being processed.  */
-    cpu_exit(s->c_cpu);
+    cpu_exit(ENV_GET_CPU(s->c_cpu));
 #endif
 }
 
diff --git a/hw/i386/pc.c b/hw/i386/pc.c
index e0fbb86..d7e8507 100644
--- a/hw/i386/pc.c
+++ b/hw/i386/pc.c
@@ -1110,7 +1110,7 @@  static void cpu_request_exit(void *opaque, int irq, int level)
     CPUX86State *env = cpu_single_env;
 
     if (env && level) {
-        cpu_exit(env);
+        cpu_exit(CPU(x86_env_get_cpu(env)));
     }
 }
 
diff --git a/hw/mips/mips_fulong2e.c b/hw/mips/mips_fulong2e.c
index 1aac93a..00c9071 100644
--- a/hw/mips/mips_fulong2e.c
+++ b/hw/mips/mips_fulong2e.c
@@ -253,7 +253,7 @@  static void cpu_request_exit(void *opaque, int irq, int level)
     CPUMIPSState *env = cpu_single_env;
 
     if (env && level) {
-        cpu_exit(env);
+        cpu_exit(CPU(mips_env_get_cpu(env)));
     }
 }
 
diff --git a/hw/mips/mips_jazz.c b/hw/mips/mips_jazz.c
index 94d9570..2ad0c0b 100644
--- a/hw/mips/mips_jazz.c
+++ b/hw/mips/mips_jazz.c
@@ -102,7 +102,7 @@  static void cpu_request_exit(void *opaque, int irq, int level)
     CPUMIPSState *env = cpu_single_env;
 
     if (env && level) {
-        cpu_exit(env);
+        cpu_exit(CPU(mips_env_get_cpu(env)));
     }
 }
 
diff --git a/hw/mips/mips_malta.c b/hw/mips/mips_malta.c
index 5033d51..8a4459d 100644
--- a/hw/mips/mips_malta.c
+++ b/hw/mips/mips_malta.c
@@ -773,7 +773,7 @@  static void cpu_request_exit(void *opaque, int irq, int level)
     CPUMIPSState *env = cpu_single_env;
 
     if (env && level) {
-        cpu_exit(env);
+        cpu_exit(CPU(mips_env_get_cpu(env)));
     }
 }
 
diff --git a/hw/ppc/prep.c b/hw/ppc/prep.c
index 4fdc164..90828f2 100644
--- a/hw/ppc/prep.c
+++ b/hw/ppc/prep.c
@@ -420,7 +420,7 @@  static void cpu_request_exit(void *opaque, int irq, int level)
     CPUPPCState *env = cpu_single_env;
 
     if (env && level) {
-        cpu_exit(env);
+        cpu_exit(CPU(ppc_env_get_cpu(env)));
     }
 }
 
diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h
index e9c3717..e1cc62e 100644
--- a/include/exec/cpu-all.h
+++ b/include/exec/cpu-all.h
@@ -421,8 +421,6 @@  DECLARE_TLS(CPUArchState *,cpu_single_env);
      | CPU_INTERRUPT_TGT_EXT_3   \
      | CPU_INTERRUPT_TGT_EXT_4)
 
-void cpu_exit(CPUArchState *s);
-
 /* Breakpoint/watchpoint flags */
 #define BP_MEM_READ           0x01
 #define BP_MEM_WRITE          0x02
diff --git a/include/qom/cpu.h b/include/qom/cpu.h
index a5bb515..f633686 100644
--- a/include/qom/cpu.h
+++ b/include/qom/cpu.h
@@ -350,6 +350,14 @@  void cpu_interrupt(CPUState *cpu, int mask);
 void cpu_reset_interrupt(CPUState *cpu, int mask);
 
 /**
+ * cpu_exit:
+ * @cpu: The CPU to exit.
+ *
+ * Requests the CPU @cpu to exit execution.
+ */
+void cpu_exit(CPUState *cpu);
+
+/**
  * cpu_resume:
  * @cpu: The CPU to resume.
  *
diff --git a/linux-user/main.c b/linux-user/main.c
index b97b8cf..30e7953 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -160,7 +160,7 @@  static inline void start_exclusive(void)
         other_cpu = ENV_GET_CPU(other);
         if (other_cpu->running) {
             pending_cpus++;
-            cpu_exit(other);
+            cpu_exit(other_cpu);
         }
     }
     if (pending_cpus > 1) {
diff --git a/linux-user/signal.c b/linux-user/signal.c
index 5da8452..c4e20dc 100644
--- a/linux-user/signal.c
+++ b/linux-user/signal.c
@@ -524,7 +524,7 @@  static void host_signal_handler(int host_signum, siginfo_t *info,
     host_to_target_siginfo_noswap(&tinfo, info);
     if (queue_signal(thread_env, sig, &tinfo) == 1) {
         /* interrupt the virtual CPU as soon as possible */
-        cpu_exit(thread_env);
+        cpu_exit(ENV_GET_CPU(thread_env));
     }
 }
 
diff --git a/qom/cpu.c b/qom/cpu.c
index dba4a11..8a122b0 100644
--- a/qom/cpu.c
+++ b/qom/cpu.c
@@ -91,6 +91,12 @@  void cpu_reset_interrupt(CPUState *cpu, int mask)
     cpu->interrupt_request &= ~mask;
 }
 
+void cpu_exit(CPUState *cpu)
+{
+    cpu->exit_request = 1;
+    cpu->tcg_exit_req = 1;
+}
+
 int cpu_write_elf32_qemunote(WriteCoreDumpFunction f, CPUState *cpu,
                              void *opaque)
 {