It no longer depends on CPUArchState, so move it to qom/cpu.c.
Prepares for changing GDBState::c_cpu to CPUState.
Signed-off-by: Andreas Färber <afaerber@suse.de>
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;
}
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);
}
}
#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;
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
}
CPUX86State *env = cpu_single_env;
if (env && level) {
- cpu_exit(env);
+ cpu_exit(CPU(x86_env_get_cpu(env)));
}
}
CPUMIPSState *env = cpu_single_env;
if (env && level) {
- cpu_exit(env);
+ cpu_exit(CPU(mips_env_get_cpu(env)));
}
}
CPUMIPSState *env = cpu_single_env;
if (env && level) {
- cpu_exit(env);
+ cpu_exit(CPU(mips_env_get_cpu(env)));
}
}
CPUMIPSState *env = cpu_single_env;
if (env && level) {
- cpu_exit(env);
+ cpu_exit(CPU(mips_env_get_cpu(env)));
}
}
CPUPPCState *env = cpu_single_env;
if (env && level) {
- cpu_exit(env);
+ cpu_exit(CPU(ppc_env_get_cpu(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
*/
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.
other_cpu = ENV_GET_CPU(other);
if (other_cpu->running) {
pending_cpus++;
- cpu_exit(other);
+ cpu_exit(other_cpu);
}
}
if (pending_cpus > 1) {
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));
}
}
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)
{