]> git.proxmox.com Git - qemu.git/commitdiff
target-cris: Factor out CPUClass::gdb_read_register() hook for v10
authorAndreas Färber <afaerber@suse.de>
Sun, 7 Jul 2013 12:39:41 +0000 (14:39 +0200)
committerAndreas Färber <afaerber@suse.de>
Fri, 26 Jul 2013 22:04:17 +0000 (00:04 +0200)
Signed-off-by: Andreas Färber <afaerber@suse.de>
target-cris/cpu-qom.h
target-cris/cpu.c
target-cris/gdbstub.c

index 3e92ea011d7dc814cf0c718cd6ece0b309338110..75593667d629aa75bfe58ee9e3b6efe6436e5d72 100644 (file)
@@ -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);
 
+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_write_register(CPUState *cpu, uint8_t *buf, int reg);
 
index 8fcc95d99478e77ed59dbe96524e4e5071794af5..45f2d6bacf7c73cedf0b841cfd24dddb7c426aba 100644 (file)
@@ -175,6 +175,7 @@ static void crisv8_cpu_class_init(ObjectClass *oc, void *data)
 
     ccc->vr = 8;
     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)
@@ -184,6 +185,7 @@ static void crisv9_cpu_class_init(ObjectClass *oc, void *data)
 
     ccc->vr = 9;
     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)
@@ -193,6 +195,7 @@ static void crisv10_cpu_class_init(ObjectClass *oc, void *data)
 
     ccc->vr = 10;
     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)
@@ -202,6 +205,7 @@ static void crisv11_cpu_class_init(ObjectClass *oc, void *data)
 
     ccc->vr = 11;
     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)
index 958a370e06c582f14e43e424a04c54b5828ffd32..5db3683ab699590186734096418d630362058f11 100644 (file)
 #include "qemu-common.h"
 #include "exec/gdbstub.h"
 
-static int
-read_register_crisv10(CPUCRISState *env, uint8_t *mem_buf, int n)
+int crisv10_cpu_gdb_read_register(CPUState *cs, uint8_t *mem_buf, int n)
 {
+    CRISCPU *cpu = CRIS_CPU(cs);
+    CPUCRISState *env = &cpu->env;
+
     if (n < 15) {
         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;
     uint8_t srs;
 
-    if (env->pregs[PR_VR] < 32) {
-        return read_register_crisv10(env, mem_buf, n);
-    }
-
     srs = env->pregs[PR_SRS];
     if (n < 16) {
         return gdb_get_reg32(mem_buf, env->regs[n]);