Skip to content

Commit

Permalink
cpu: Change cpu_single_step() argument to CPUState
Browse files Browse the repository at this point in the history
Use CPUState::env_ptr for now.

Needed for GdbState::c_cpu.

Signed-off-by: Andreas Färber <[email protected]>
  • Loading branch information
afaerber committed Jul 23, 2013
1 parent 5ca666c commit 3825b28
Show file tree
Hide file tree
Showing 4 changed files with 20 additions and 12 deletions.
4 changes: 2 additions & 2 deletions exec.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
9 changes: 5 additions & 4 deletions gdbstub.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down Expand Up @@ -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':
Expand Down Expand Up @@ -2570,7 +2570,7 @@ static void gdb_vm_state_change(void *opaque, int running, RunState state)
put_packet(s, buf);

/* disable single step if it was enabled */
cpu_single_step(env, 0);
cpu_single_step(cpu, 0);
}
#endif

Expand Down Expand Up @@ -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;
Expand All @@ -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) {
Expand Down
6 changes: 0 additions & 6 deletions include/exec/cpu-all.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
13 changes: 13 additions & 0 deletions include/qom/cpu.h
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down

0 comments on commit 3825b28

Please sign in to comment.