All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Andreas Färber" <afaerber@suse.de>
To: qemu-devel@nongnu.org
Cc: "Max Filippov" <jcmvbkbc@gmail.com>, "Andreas Färber" <afaerber@suse.de>
Subject: [Qemu-devel] [PATCH qom-cpu v2 38/42] target-xtensa: Move cpu_gdb_{read, write}_register()
Date: Sun,  7 Jul 2013 20:26:27 +0200	[thread overview]
Message-ID: <1373221591-17091-39-git-send-email-afaerber@suse.de> (raw)
In-Reply-To: <1373221591-17091-1-git-send-email-afaerber@suse.de>

Signed-off-by: Andreas Färber <afaerber@suse.de>
---
 gdbstub.c               |  80 +-------------------------------------
 target-xtensa/gdbstub.c | 100 ++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 101 insertions(+), 79 deletions(-)
 create mode 100644 target-xtensa/gdbstub.c

diff --git a/gdbstub.c b/gdbstub.c
index 853f09d..9e12762 100644
--- a/gdbstub.c
+++ b/gdbstub.c
@@ -582,86 +582,8 @@ static int put_packet(GDBState *s, const char *buf)
 
 #elif defined(TARGET_XTENSA)
 
-static int cpu_gdb_read_register(CPUXtensaState *env, uint8_t *mem_buf, int n)
-{
-    const XtensaGdbReg *reg = env->config->gdb_regmap.reg + n;
-
-    if (n < 0 || n >= env->config->gdb_regmap.num_regs) {
-        return 0;
-    }
-
-    switch (reg->type) {
-    case 9: /*pc*/
-        GET_REG32(env->pc);
-
-    case 1: /*ar*/
-        xtensa_sync_phys_from_window(env);
-        GET_REG32(env->phys_regs[(reg->targno & 0xff) % env->config->nareg]);
-
-    case 2: /*SR*/
-        GET_REG32(env->sregs[reg->targno & 0xff]);
-
-    case 3: /*UR*/
-        GET_REG32(env->uregs[reg->targno & 0xff]);
-
-    case 4: /*f*/
-        GET_REG32(float32_val(env->fregs[reg->targno & 0x0f]));
-
-    case 8: /*a*/
-        GET_REG32(env->regs[reg->targno & 0x0f]);
-
-    default:
-        qemu_log("%s from reg %d of unsupported type %d\n",
-                 __func__, n, reg->type);
-        return 0;
-    }
-}
-
-static int cpu_gdb_write_register(CPUXtensaState *env, uint8_t *mem_buf, int n)
-{
-    uint32_t tmp;
-    const XtensaGdbReg *reg = env->config->gdb_regmap.reg + n;
-
-    if (n < 0 || n >= env->config->gdb_regmap.num_regs) {
-        return 0;
-    }
-
-    tmp = ldl_p(mem_buf);
-
-    switch (reg->type) {
-    case 9: /*pc*/
-        env->pc = tmp;
-        break;
-
-    case 1: /*ar*/
-        env->phys_regs[(reg->targno & 0xff) % env->config->nareg] = tmp;
-        xtensa_sync_window_from_phys(env);
-        break;
-
-    case 2: /*SR*/
-        env->sregs[reg->targno & 0xff] = tmp;
-        break;
-
-    case 3: /*UR*/
-        env->uregs[reg->targno & 0xff] = tmp;
-        break;
+#include "target-xtensa/gdbstub.c"
 
-    case 4: /*f*/
-        env->fregs[reg->targno & 0x0f] = make_float32(tmp);
-        break;
-
-    case 8: /*a*/
-        env->regs[reg->targno & 0x0f] = tmp;
-        break;
-
-    default:
-        qemu_log("%s to reg %d of unsupported type %d\n",
-                 __func__, n, reg->type);
-        return 0;
-    }
-
-    return 4;
-}
 #else
 
 static int cpu_gdb_read_register(CPUArchState *env, uint8_t *mem_buf, int n)
diff --git a/target-xtensa/gdbstub.c b/target-xtensa/gdbstub.c
new file mode 100644
index 0000000..0880b7c
--- /dev/null
+++ b/target-xtensa/gdbstub.c
@@ -0,0 +1,100 @@
+/*
+ * Xtensa gdb server stub
+ *
+ * Copyright (c) 2003-2005 Fabrice Bellard
+ * Copyright (c) 2013 SUSE LINUX Products GmbH
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+static int cpu_gdb_read_register(CPUXtensaState *env, uint8_t *mem_buf, int n)
+{
+    const XtensaGdbReg *reg = env->config->gdb_regmap.reg + n;
+
+    if (n < 0 || n >= env->config->gdb_regmap.num_regs) {
+        return 0;
+    }
+
+    switch (reg->type) {
+    case 9: /*pc*/
+        GET_REG32(env->pc);
+
+    case 1: /*ar*/
+        xtensa_sync_phys_from_window(env);
+        GET_REG32(env->phys_regs[(reg->targno & 0xff) % env->config->nareg]);
+
+    case 2: /*SR*/
+        GET_REG32(env->sregs[reg->targno & 0xff]);
+
+    case 3: /*UR*/
+        GET_REG32(env->uregs[reg->targno & 0xff]);
+
+    case 4: /*f*/
+        GET_REG32(float32_val(env->fregs[reg->targno & 0x0f]));
+
+    case 8: /*a*/
+        GET_REG32(env->regs[reg->targno & 0x0f]);
+
+    default:
+        qemu_log("%s from reg %d of unsupported type %d\n",
+                 __func__, n, reg->type);
+        return 0;
+    }
+}
+
+static int cpu_gdb_write_register(CPUXtensaState *env, uint8_t *mem_buf, int n)
+{
+    uint32_t tmp;
+    const XtensaGdbReg *reg = env->config->gdb_regmap.reg + n;
+
+    if (n < 0 || n >= env->config->gdb_regmap.num_regs) {
+        return 0;
+    }
+
+    tmp = ldl_p(mem_buf);
+
+    switch (reg->type) {
+    case 9: /*pc*/
+        env->pc = tmp;
+        break;
+
+    case 1: /*ar*/
+        env->phys_regs[(reg->targno & 0xff) % env->config->nareg] = tmp;
+        xtensa_sync_window_from_phys(env);
+        break;
+
+    case 2: /*SR*/
+        env->sregs[reg->targno & 0xff] = tmp;
+        break;
+
+    case 3: /*UR*/
+        env->uregs[reg->targno & 0xff] = tmp;
+        break;
+
+    case 4: /*f*/
+        env->fregs[reg->targno & 0x0f] = make_float32(tmp);
+        break;
+
+    case 8: /*a*/
+        env->regs[reg->targno & 0x0f] = tmp;
+        break;
+
+    default:
+        qemu_log("%s to reg %d of unsupported type %d\n",
+                 __func__, n, reg->type);
+        return 0;
+    }
+
+    return 4;
+}
-- 
1.8.1.4

  parent reply	other threads:[~2013-07-07 18:29 UTC|newest]

Thread overview: 49+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-07 18:25 [Qemu-devel] [PATCH qom-cpu v2 00/42] QOM CPUState, part 11: GDB stub Andreas Färber
2013-07-07 18:25 ` [Qemu-devel] [PATCH qom-cpu v2 01/42] cpu: Introduce vaddr type Andreas Färber
2013-07-15 14:46   ` Peter Maydell
2013-07-22 14:48     ` Andreas Färber
2013-07-07 18:25 ` [Qemu-devel] [PATCH qom-cpu v2 02/42] cpu: Introduce CPUClass::set_pc() for gdb_set_cpu_pc() Andreas Färber
2013-07-07 18:25 ` [Qemu-devel] [PATCH qom-cpu v2 03/42] target-m68k: Implement CPUClass::set_pc() Andreas Färber
2013-07-07 18:25 ` [Qemu-devel] [PATCH qom-cpu v2 04/42] target-moxie: " Andreas Färber
2013-07-07 18:25 ` [Qemu-devel] [PATCH qom-cpu v2 05/42] target-unicore32: " Andreas Färber
2013-07-07 18:25 ` [Qemu-devel] [PATCH qom-cpu v2 06/42] cpu: Introduce CPUClass::synchronize_from_tb() for cpu_pc_from_tb() Andreas Färber
2013-07-07 18:25 ` [PATCH qom-cpu v2 07/42] cpu: Move singlestep_enabled field from CPU_COMMON to CPUState Andreas Färber
2013-07-07 18:25   ` [Qemu-devel] " Andreas Färber
2013-07-07 18:25 ` [Qemu-devel] [PATCH qom-cpu v2 08/42] gdbstub: Update gdb_handlesig() and gdb_signalled() Coding Style Andreas Färber
2013-07-07 18:25 ` [Qemu-devel] [PATCH qom-cpu v2 09/42] cpu: Change cpu_single_step() argument to CPUState Andreas Färber
2013-07-07 18:25 ` [PATCH qom-cpu v2 10/42] kvm: Change kvm_{insert,remove}_breakpoint() " Andreas Färber
2013-07-07 18:25   ` [Qemu-devel] [PATCH qom-cpu v2 10/42] kvm: Change kvm_{insert, remove}_breakpoint() " Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 11/42] gdbstub: Change syscall callback " Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 12/42] gdbstub: Change gdb_handlesig() " Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 13/42] gdbstub: Change GDBState::c_cpu " Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 14/42] gdbstub: Change gdb_{read, write}_register() argument " Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 15/42] cpu: Turn cpu_get_phys_page_debug() into a CPUClass hook Andreas Färber
2013-07-07 18:26 ` [PATCH qom-cpu v2 16/42] exec: Change cpu_memory_rw_debug() argument to CPUState Andreas Färber
2013-07-07 18:26   ` [Qemu-devel] " Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 17/42] cpu: Introduce CPUClass::memory_rw_debug() for target_memory_rw_debug() Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 18/42] gdbstub: Change GDBState::g_cpu to CPUState Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 19/42] cpu: Move gdb_regs field from CPU_COMMON " Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 20/42] gdbstub: Change gdb_register_coprocessor() argument " Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 21/42] target-xtensa: Introduce XtensaCPU subclasses Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 22/42] gdbstub: Fix cpu_gdb_{read, write}_register() Coding Style Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 23/42] gdbstub: Drop dead code in cpu_gdb_{read, write}_register() Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 24/42] cpu: Introduce CPUState::gdb_num_regs and CPUClass::gdb_num_core_regs Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 25/42] target-i386: Move cpu_gdb_{read, write}_register() Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 26/42] target-ppc: " Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 27/42] target-sparc: " Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 28/42] target-arm: " Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 29/42] target-m68k: " Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 30/42] target-mips: " Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 31/42] target-openrisc: " Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 32/42] target-sh4: " Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 33/42] target-microblaze: " Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 34/42] target-cris: " Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 35/42] target-alpha: " Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 36/42] target-s390x: " Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 37/42] target-lm32: " Andreas Färber
2013-07-07 18:26 ` Andreas Färber [this message]
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 39/42] gdbstub: Replace GET_REG*() macros with gdb_get_reg*() functions Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 40/42] cpu: Introduce CPUClass::gdb_{read, write}_register() Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 41/42] target-cris: Factor out CPUClass::gdb_read_register() hook for v10 Andreas Färber
2013-07-07 18:26 ` [Qemu-devel] [PATCH qom-cpu v2 42/42] cpu: Introduce CPUClass::gdb_core_xml_file for GDB_CORE_XML Andreas Färber
2013-07-09 21:03 ` [Qemu-devel] [PATCH qom-cpu v2 00/42] QOM CPUState, part 11: GDB stub Andreas Färber

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1373221591-17091-39-git-send-email-afaerber@suse.de \
    --to=afaerber@suse.de \
    --cc=jcmvbkbc@gmail.com \
    --cc=qemu-devel@nongnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.