From 3825b28ff128e2bd3cb0a338c21923c926b1f38b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20F=C3=A4rber?= Date: Mon, 24 Jun 2013 18:41:06 +0200 Subject: [PATCH] cpu: Change cpu_single_step() argument to CPUState MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Use CPUState::env_ptr for now. Needed for GdbState::c_cpu. Signed-off-by: Andreas Färber --- exec.c | 4 ++-- gdbstub.c | 9 +++++---- include/exec/cpu-all.h | 6 ------ include/qom/cpu.h | 13 +++++++++++++ 4 files changed, 20 insertions(+), 12 deletions(-) diff --git a/exec.c b/exec.c index 30b676d7e5..9cd936c5df 100644 --- a/exec.c +++ b/exec.c @@ -585,10 +585,10 @@ void cpu_breakpoint_remove_all(CPUArchState *env, int mask) /* enable or disable single step mode. EXCP_DEBUG is returned by the CPU loop after each instruction */ -void cpu_single_step(CPUArchState *env, int enabled) +void cpu_single_step(CPUState *cpu, int enabled) { #if defined(TARGET_HAS_ICE) - CPUState *cpu = ENV_GET_CPU(env); + CPUArchState *env = cpu->env_ptr; if (cpu->singlestep_enabled != enabled) { cpu->singlestep_enabled = enabled; diff --git a/gdbstub.c b/gdbstub.c index 6ddff91f14..8e23509d3f 100644 --- a/gdbstub.c +++ b/gdbstub.c @@ -2154,7 +2154,7 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf) s->c_cpu = env; } if (res == 's') { - cpu_single_step(s->c_cpu, sstep_flags); + cpu_single_step(ENV_GET_CPU(s->c_cpu), sstep_flags); } s->signal = res_signal; gdb_continue(s); @@ -2182,7 +2182,7 @@ static int gdb_handle_packet(GDBState *s, const char *line_buf) addr = strtoull(p, (char **)&p, 16); gdb_set_cpu_pc(s, addr); } - cpu_single_step(s->c_cpu, sstep_flags); + cpu_single_step(ENV_GET_CPU(s->c_cpu), sstep_flags); gdb_continue(s); return RS_IDLE; case 'F': @@ -2570,7 +2570,7 @@ send_packet: put_packet(s, buf); /* disable single step if it was enabled */ - cpu_single_step(env, 0); + cpu_single_step(cpu, 0); } #endif @@ -2763,6 +2763,7 @@ gdb_queuesig (void) int gdb_handlesig(CPUArchState *env, int sig) { + CPUState *cpu = ENV_GET_CPU(env); GDBState *s; char buf[256]; int n; @@ -2773,7 +2774,7 @@ gdb_handlesig(CPUArchState *env, int sig) } /* disable single step if it was enabled */ - cpu_single_step(env, 0); + cpu_single_step(cpu, 0); tb_flush(env); if (sig != 0) { diff --git a/include/exec/cpu-all.h b/include/exec/cpu-all.h index 5084202217..b48db0317b 100644 --- a/include/exec/cpu-all.h +++ b/include/exec/cpu-all.h @@ -428,12 +428,6 @@ int cpu_watchpoint_remove(CPUArchState *env, target_ulong addr, void cpu_watchpoint_remove_by_ref(CPUArchState *env, CPUWatchpoint *watchpoint); void cpu_watchpoint_remove_all(CPUArchState *env, int mask); -#define SSTEP_ENABLE 0x1 /* Enable simulated HW single stepping */ -#define SSTEP_NOIRQ 0x2 /* Do not use IRQ while single stepping */ -#define SSTEP_NOTIMER 0x4 /* Do not Timers while single stepping */ - -void cpu_single_step(CPUArchState *env, int enabled); - #if !defined(CONFIG_USER_ONLY) /* Return the physical page corresponding to a virtual one. Use it diff --git a/include/qom/cpu.h b/include/qom/cpu.h index 94302a415e..43a52e459f 100644 --- a/include/qom/cpu.h +++ b/include/qom/cpu.h @@ -510,6 +510,19 @@ void cpu_resume(CPUState *cpu); */ void qemu_init_vcpu(CPUState *cpu); +#define SSTEP_ENABLE 0x1 /* Enable simulated HW single stepping */ +#define SSTEP_NOIRQ 0x2 /* Do not use IRQ while single stepping */ +#define SSTEP_NOTIMER 0x4 /* Do not Timers while single stepping */ + +/** + * cpu_single_step: + * @cpu: CPU to the flags for. + * @enabled: Flags to enable. + * + * Enables or disables single-stepping for @cpu. + */ +void cpu_single_step(CPUState *cpu, int enabled); + #ifdef CONFIG_SOFTMMU extern const struct VMStateDescription vmstate_cpu_common; #else