mirror of
https://github.com/qemu/qemu.git
synced 2025-08-15 13:47:03 +00:00
target-cris: Factor out CPUClass::gdb_read_register() hook for v10
Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
parent
5b50e790f9
commit
90431220be
@ -81,6 +81,7 @@ void cris_cpu_dump_state(CPUState *cs, FILE *f, fprintf_function cpu_fprintf,
|
|||||||
|
|
||||||
hwaddr cris_cpu_get_phys_page_debug(CPUState *cpu, vaddr addr);
|
hwaddr cris_cpu_get_phys_page_debug(CPUState *cpu, vaddr addr);
|
||||||
|
|
||||||
|
int crisv10_cpu_gdb_read_register(CPUState *cpu, uint8_t *buf, int reg);
|
||||||
int cris_cpu_gdb_read_register(CPUState *cpu, uint8_t *buf, int reg);
|
int cris_cpu_gdb_read_register(CPUState *cpu, uint8_t *buf, int reg);
|
||||||
int cris_cpu_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg);
|
int cris_cpu_gdb_write_register(CPUState *cpu, uint8_t *buf, int reg);
|
||||||
|
|
||||||
|
@ -175,6 +175,7 @@ static void crisv8_cpu_class_init(ObjectClass *oc, void *data)
|
|||||||
|
|
||||||
ccc->vr = 8;
|
ccc->vr = 8;
|
||||||
cc->do_interrupt = crisv10_cpu_do_interrupt;
|
cc->do_interrupt = crisv10_cpu_do_interrupt;
|
||||||
|
cc->gdb_read_register = crisv10_cpu_gdb_read_register;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void crisv9_cpu_class_init(ObjectClass *oc, void *data)
|
static void crisv9_cpu_class_init(ObjectClass *oc, void *data)
|
||||||
@ -184,6 +185,7 @@ static void crisv9_cpu_class_init(ObjectClass *oc, void *data)
|
|||||||
|
|
||||||
ccc->vr = 9;
|
ccc->vr = 9;
|
||||||
cc->do_interrupt = crisv10_cpu_do_interrupt;
|
cc->do_interrupt = crisv10_cpu_do_interrupt;
|
||||||
|
cc->gdb_read_register = crisv10_cpu_gdb_read_register;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void crisv10_cpu_class_init(ObjectClass *oc, void *data)
|
static void crisv10_cpu_class_init(ObjectClass *oc, void *data)
|
||||||
@ -193,6 +195,7 @@ static void crisv10_cpu_class_init(ObjectClass *oc, void *data)
|
|||||||
|
|
||||||
ccc->vr = 10;
|
ccc->vr = 10;
|
||||||
cc->do_interrupt = crisv10_cpu_do_interrupt;
|
cc->do_interrupt = crisv10_cpu_do_interrupt;
|
||||||
|
cc->gdb_read_register = crisv10_cpu_gdb_read_register;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void crisv11_cpu_class_init(ObjectClass *oc, void *data)
|
static void crisv11_cpu_class_init(ObjectClass *oc, void *data)
|
||||||
@ -202,6 +205,7 @@ static void crisv11_cpu_class_init(ObjectClass *oc, void *data)
|
|||||||
|
|
||||||
ccc->vr = 11;
|
ccc->vr = 11;
|
||||||
cc->do_interrupt = crisv10_cpu_do_interrupt;
|
cc->do_interrupt = crisv10_cpu_do_interrupt;
|
||||||
|
cc->gdb_read_register = crisv10_cpu_gdb_read_register;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void crisv32_cpu_class_init(ObjectClass *oc, void *data)
|
static void crisv32_cpu_class_init(ObjectClass *oc, void *data)
|
||||||
|
@ -21,9 +21,11 @@
|
|||||||
#include "qemu-common.h"
|
#include "qemu-common.h"
|
||||||
#include "exec/gdbstub.h"
|
#include "exec/gdbstub.h"
|
||||||
|
|
||||||
static int
|
int crisv10_cpu_gdb_read_register(CPUState *cs, uint8_t *mem_buf, int n)
|
||||||
read_register_crisv10(CPUCRISState *env, uint8_t *mem_buf, int n)
|
|
||||||
{
|
{
|
||||||
|
CRISCPU *cpu = CRIS_CPU(cs);
|
||||||
|
CPUCRISState *env = &cpu->env;
|
||||||
|
|
||||||
if (n < 15) {
|
if (n < 15) {
|
||||||
return gdb_get_reg32(mem_buf, env->regs[n]);
|
return gdb_get_reg32(mem_buf, env->regs[n]);
|
||||||
}
|
}
|
||||||
@ -57,10 +59,6 @@ int cris_cpu_gdb_read_register(CPUState *cs, uint8_t *mem_buf, int n)
|
|||||||
CPUCRISState *env = &cpu->env;
|
CPUCRISState *env = &cpu->env;
|
||||||
uint8_t srs;
|
uint8_t srs;
|
||||||
|
|
||||||
if (env->pregs[PR_VR] < 32) {
|
|
||||||
return read_register_crisv10(env, mem_buf, n);
|
|
||||||
}
|
|
||||||
|
|
||||||
srs = env->pregs[PR_SRS];
|
srs = env->pregs[PR_SRS];
|
||||||
if (n < 16) {
|
if (n < 16) {
|
||||||
return gdb_get_reg32(mem_buf, env->regs[n]);
|
return gdb_get_reg32(mem_buf, env->regs[n]);
|
||||||
|
Loading…
Reference in New Issue
Block a user