From: "Alex Bennée" <alex.bennee@linaro.org>
To: qemu-devel@nongnu.org
Cc: damien.hedde@greensocs.com, luis.machado@linaro.org,
"Eduardo Habkost" <ehabkost@redhat.com>,
richard.henderson@linaro.org, alan.hayward@arm.com,
"Paolo Bonzini" <pbonzini@redhat.com>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Richard Henderson" <rth@twiddle.net>
Subject: [PATCH v6 08/22] target/i386: use gdb_get_reg helpers
Date: Wed, 5 Feb 2020 17:10:17 +0000 [thread overview]
Message-ID: <20200205171031.22582-9-alex.bennee@linaro.org> (raw)
In-Reply-To: <20200205171031.22582-1-alex.bennee@linaro.org>
This is cleaner than poking memory directly and will make later
clean-ups easier.
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
---
target/i386/gdbstub.c | 22 ++++++++--------------
1 file changed, 8 insertions(+), 14 deletions(-)
diff --git a/target/i386/gdbstub.c b/target/i386/gdbstub.c
index 572ead641ca..208b3de70da 100644
--- a/target/i386/gdbstub.c
+++ b/target/i386/gdbstub.c
@@ -95,29 +95,26 @@ int x86_cpu_gdb_read_register(CPUState *cs, uint8_t *mem_buf, int n)
if (env->hflags & HF_CS64_MASK) {
return gdb_get_reg64(mem_buf, env->regs[gpr_map[n]]);
} else if (n < CPU_NB_REGS32) {
+
return gdb_get_reg64(mem_buf,
env->regs[gpr_map[n]] & 0xffffffffUL);
} else {
- memset(mem_buf, 0, sizeof(target_ulong));
- return sizeof(target_ulong);
+ return gdb_get_regl(mem_buf, 0);
}
} else {
return gdb_get_reg32(mem_buf, env->regs[gpr_map32[n]]);
}
} else if (n >= IDX_FP_REGS && n < IDX_FP_REGS + 8) {
-#ifdef USE_X86LDOUBLE
- /* FIXME: byteswap float values - after fixing fpregs layout. */
- memcpy(mem_buf, &env->fpregs[n - IDX_FP_REGS], 10);
-#else
- memset(mem_buf, 0, 10);
-#endif
+ guint8 *data = (guint8 *) &env->fpregs[n - IDX_FP_REGS];
+ memcpy(mem_buf, data, 10);
+ /* byte swap? this is at least correct of x86-on-x86 */
return 10;
} else if (n >= IDX_XMM_REGS && n < IDX_XMM_REGS + CPU_NB_REGS) {
n -= IDX_XMM_REGS;
if (n < CPU_NB_REGS32 || TARGET_LONG_BITS == 64) {
- stq_p(mem_buf, env->xmm_regs[n].ZMM_Q(0));
- stq_p(mem_buf + 8, env->xmm_regs[n].ZMM_Q(1));
- return 16;
+ return gdb_get_reg128(mem_buf,
+ env->xmm_regs[n].ZMM_Q(0),
+ env->xmm_regs[n].ZMM_Q(1));
}
} else {
switch (n) {
@@ -290,10 +287,7 @@ int x86_cpu_gdb_write_register(CPUState *cs, uint8_t *mem_buf, int n)
return 4;
}
} else if (n >= IDX_FP_REGS && n < IDX_FP_REGS + 8) {
-#ifdef USE_X86LDOUBLE
- /* FIXME: byteswap float values - after fixing fpregs layout. */
memcpy(&env->fpregs[n - IDX_FP_REGS], mem_buf, 10);
-#endif
return 10;
} else if (n >= IDX_XMM_REGS && n < IDX_XMM_REGS + CPU_NB_REGS) {
n -= IDX_XMM_REGS;
--
2.20.1
next prev parent reply other threads:[~2020-02-05 17:13 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-05 17:10 [PATCH v6 00/22] gdbstub refactor and SVE support Alex Bennée
2020-02-05 17:10 ` [PATCH v6 01/22] gdbstub: make GDBState static and have common init function Alex Bennée
2020-02-05 17:10 ` [PATCH v6 02/22] gdbstub: stop passing GDBState * around and use global Alex Bennée
2020-02-05 17:10 ` [PATCH v6 03/22] gdbstub: move str_buf to GDBState and use GString Alex Bennée
2020-02-05 17:10 ` [PATCH v6 04/22] gdbstub: move mem_buf to GDBState and use GByteArray Alex Bennée
2020-02-05 17:10 ` [PATCH v6 05/22] gdbstub: add helper for 128 bit registers Alex Bennée
2020-02-05 17:10 ` [PATCH v6 06/22] target/arm: use gdb_get_reg helpers Alex Bennée
2020-02-05 17:10 ` [PATCH v6 07/22] target/m68k: " Alex Bennée
2020-02-05 17:10 ` Alex Bennée [this message]
2020-02-06 11:14 ` [PATCH v6 08/22] target/i386: " Richard Henderson
2020-02-05 17:10 ` [PATCH v6 09/22] gdbstub: extend GByteArray to read register helpers Alex Bennée
2020-02-05 17:10 ` [PATCH v6 10/22] target/arm: prepare for multiple dynamic XMLs Alex Bennée
2020-02-05 17:10 ` [PATCH v6 11/22] target/arm: explicitly encode regnum in our XML Alex Bennée
2020-02-05 17:10 ` [PATCH v6 12/22] target/arm: default SVE length to 64 bytes for linux-user Alex Bennée
2020-02-06 11:19 ` Richard Henderson
2020-02-05 17:10 ` [PATCH v6 13/22] target/arm: generate xml description of our SVE registers Alex Bennée
2020-02-06 11:20 ` Richard Henderson
2020-02-06 11:20 ` Richard Henderson
2020-02-05 17:10 ` [PATCH v6 14/22] target/arm: don't bother with id_aa64pfr0_read for USER_ONLY Alex Bennée
2020-02-05 17:10 ` [PATCH v6 15/22] tests/tcg/aarch64: userspace system register test Alex Bennée
2020-02-05 17:10 ` [PATCH v6 16/22] configure: allow user to specify what gdb to use Alex Bennée
2020-02-05 17:10 ` [PATCH v6 17/22] tests/guest-debug: add a simple test runner Alex Bennée
2020-02-05 17:10 ` [PATCH v6 18/22] tests/tcg/aarch64: add a gdbstub testcase for SVE registers Alex Bennée
2020-02-05 17:10 ` [PATCH v6 19/22] tests/tcg/aarch64: add SVE iotcl test Alex Bennée
2020-02-05 17:10 ` [PATCH v6 20/22] tests/tcg/aarch64: add test-sve-ioctl guest-debug test Alex Bennée
2020-02-05 17:10 ` [PATCH v6 21/22] gdbstub: change GDBState.last_packet to GByteArray Alex Bennée
2020-02-05 17:10 ` [PATCH v6 22/22] gdbstub: do not split gdb_monitor_write payload Alex Bennée
2020-02-05 18:00 ` [PATCH v6 00/22] gdbstub refactor and SVE support no-reply
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=20200205171031.22582-9-alex.bennee@linaro.org \
--to=alex.bennee@linaro.org \
--cc=alan.hayward@arm.com \
--cc=damien.hedde@greensocs.com \
--cc=ehabkost@redhat.com \
--cc=luis.machado@linaro.org \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
--cc=rth@twiddle.net \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).