mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-01 23:03:54 -06:00
cpu: Introduce CPUClass::set_pc() for gdb_set_cpu_pc()
This moves setting the Program Counter from gdbstub into target code. Use vaddr type as upper-bound replacement for target_ulong. Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
parent
2be8d45098
commit
f45748f10e
15 changed files with 119 additions and 33 deletions
39
gdbstub.c
39
gdbstub.c
|
@ -2042,40 +2042,13 @@ static void gdb_breakpoint_remove_all(void)
|
|||
|
||||
static void gdb_set_cpu_pc(GDBState *s, target_ulong pc)
|
||||
{
|
||||
cpu_synchronize_state(ENV_GET_CPU(s->c_cpu));
|
||||
#if defined(TARGET_I386)
|
||||
s->c_cpu->eip = pc;
|
||||
#elif defined (TARGET_PPC)
|
||||
s->c_cpu->nip = pc;
|
||||
#elif defined (TARGET_SPARC)
|
||||
s->c_cpu->pc = pc;
|
||||
s->c_cpu->npc = pc + 4;
|
||||
#elif defined (TARGET_ARM)
|
||||
s->c_cpu->regs[15] = pc;
|
||||
#elif defined (TARGET_SH4)
|
||||
s->c_cpu->pc = pc;
|
||||
#elif defined (TARGET_MIPS)
|
||||
s->c_cpu->active_tc.PC = pc & ~(target_ulong)1;
|
||||
if (pc & 1) {
|
||||
s->c_cpu->hflags |= MIPS_HFLAG_M16;
|
||||
} else {
|
||||
s->c_cpu->hflags &= ~(MIPS_HFLAG_M16);
|
||||
CPUState *cpu = ENV_GET_CPU(s->c_cpu);
|
||||
CPUClass *cc = CPU_GET_CLASS(cpu);
|
||||
|
||||
cpu_synchronize_state(cpu);
|
||||
if (cc->set_pc) {
|
||||
cc->set_pc(cpu, pc);
|
||||
}
|
||||
#elif defined (TARGET_MICROBLAZE)
|
||||
s->c_cpu->sregs[SR_PC] = pc;
|
||||
#elif defined(TARGET_OPENRISC)
|
||||
s->c_cpu->pc = pc;
|
||||
#elif defined (TARGET_CRIS)
|
||||
s->c_cpu->pc = pc;
|
||||
#elif defined (TARGET_ALPHA)
|
||||
s->c_cpu->pc = pc;
|
||||
#elif defined (TARGET_S390X)
|
||||
s->c_cpu->psw.addr = pc;
|
||||
#elif defined (TARGET_LM32)
|
||||
s->c_cpu->pc = pc;
|
||||
#elif defined(TARGET_XTENSA)
|
||||
s->c_cpu->pc = pc;
|
||||
#endif
|
||||
}
|
||||
|
||||
static CPUArchState *find_cpu(uint32_t thread_id)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue