All of lore.kernel.org
 help / color / mirror / Atom feed
From: Warner Losh <imp@bsdimp.com>
To: qemu-devel@nongnu.org
Cc: Kyle Evans <kevans@freebsd.org>,
	qemu-arm@nongnu.org, Warner Losh <imp@bsdimp.com>,
	Peter Maydell <peter.maydell@linaro.org>,
	Stacey Son <sson@FreeBSD.org>, Ajeet Singh <itachis@FreeBSD.org>,
	Kyle Evans <kevans@FreeBSD.org>,
	Richard Henderson <richard.henderson@linaro.org>
Subject: [PATCH 05/14] bsd-user:Add get_mcontext function for ARM AArch64
Date: Mon, 22 Jul 2024 15:43:04 -0600	[thread overview]
Message-ID: <20240722214313.89503-6-imp@bsdimp.com> (raw)
In-Reply-To: <20240722214313.89503-1-imp@bsdimp.com>

From: Stacey Son <sson@FreeBSD.org>

function to retrieve machine context,it populates the provided
target_mcontext_t structure with information from the CPUARMState
registers.

Signed-off-by: Stacey Son <sson@FreeBSD.org>
Signed-off-by: Ajeet Singh <itachis@FreeBSD.org>
Co-authored-by: Kyle Evans <kevans@FreeBSD.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20240707191128.10509-6-itachis@FreeBSD.org>
Signed-off-by: Warner Losh <imp@bsdimp.com>
---
 bsd-user/aarch64/signal.c | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)

diff --git a/bsd-user/aarch64/signal.c b/bsd-user/aarch64/signal.c
index 98861f9ab3b..ab3bf8558ab 100644
--- a/bsd-user/aarch64/signal.c
+++ b/bsd-user/aarch64/signal.c
@@ -51,3 +51,33 @@ abi_long set_sigtramp_args(CPUARMState *regs, int sig,
 
     return 0;
 }
+
+/*
+ * Compare to get_mcontext() in arm64/arm64/machdep.c
+ * Assumes that the memory is locked if mcp points to user memory.
+ */
+abi_long get_mcontext(CPUARMState *regs, target_mcontext_t *mcp, int flags)
+{
+    int err = 0, i;
+    uint64_t *gr = mcp->mc_gpregs.gp_x;
+
+    mcp->mc_gpregs.gp_spsr = pstate_read(regs);
+    if (flags & TARGET_MC_GET_CLEAR_RET) {
+        gr[0] = 0UL;
+        mcp->mc_gpregs.gp_spsr &= ~CPSR_C;
+    } else {
+        gr[0] = tswap64(regs->xregs[0]);
+    }
+
+    for (i = 1; i < 30; i++) {
+        gr[i] = tswap64(regs->xregs[i]);
+    }
+
+    mcp->mc_gpregs.gp_sp = tswap64(regs->xregs[TARGET_REG_SP]);
+    mcp->mc_gpregs.gp_lr = tswap64(regs->xregs[TARGET_REG_LR]);
+    mcp->mc_gpregs.gp_elr = tswap64(regs->pc);
+
+    /* XXX FP? */
+
+    return err;
+}
-- 
2.45.1


  parent reply	other threads:[~2024-07-22 21:45 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-22 21:42 [PATCH 00/14] bsd-user: Misc changes for 9.1 (I hope) Warner Losh
2024-07-22 21:43 ` [PATCH 01/14] bsd-user:Add CPU initialization and management functions Warner Losh
2024-07-22 21:43 ` [PATCH 02/14] bsd-user:Add AArch64 register handling and related functions Warner Losh
2024-07-22 21:43 ` [PATCH 03/14] bsd-user:Add ARM AArch64 support and capabilities Warner Losh
2024-07-22 21:43 ` [PATCH 04/14] bsd-user:Add ARM AArch64 signal handling support Warner Losh
2024-07-22 21:43 ` Warner Losh [this message]
2024-07-22 21:43 ` [PATCH 06/14] bsd-user:Add setup_sigframe_arch function for ARM AArch64 Warner Losh
2024-07-22 21:43 ` [PATCH 07/14] bsd-user:Add set_mcontext " Warner Losh
2024-07-22 21:43 ` [PATCH 08/14] bsd-user:Add AArch64 improvements and signal handling functions Warner Losh
2024-07-22 21:43 ` [PATCH 09/14] bsd-user: Simplify the implementation of execve Warner Losh
2024-07-23  1:03   ` Richard Henderson
2024-07-22 21:43 ` [PATCH 10/14] bsd-user: Hard wire aarch64 to be 4k pages only Warner Losh
2024-07-23  1:10   ` Richard Henderson
2024-07-23  5:01     ` Warner Losh
2024-07-23  5:38       ` Richard Henderson
2024-07-22 21:43 ` [PATCH 11/14] bsd-user: Sync fork_start/fork_end with linux-user Warner Losh
2024-07-23  1:13   ` Richard Henderson
2024-07-22 21:43 ` [PATCH 12/14] bsd-user: Define TARGET_SIGSTACK_ALIGN and use it to round stack Warner Losh
2024-07-23  1:14   ` Richard Henderson
2024-07-22 21:43 ` [PATCH 13/14] bsd-user: Make compile for non-linux user-mode stuff Warner Losh
2024-07-22 22:01   ` Philippe Mathieu-Daudé
2024-07-22 23:09     ` Alex Bennée
2024-07-23  5:12     ` Warner Losh
2024-07-23  1:15   ` Richard Henderson
2024-07-22 21:43 ` [PATCH 14/14] bsd-user: Add aarch64 build to tree Warner Losh
2024-07-22 21:54   ` Philippe Mathieu-Daudé
2024-07-22 22:06     ` Warner Losh
2024-07-22 22:11       ` Philippe Mathieu-Daudé
2024-07-23  1:17         ` Richard Henderson
2024-07-23  5:08           ` Warner Losh
2024-07-23  5:10             ` Warner Losh
2024-07-23  6:38           ` Philippe Mathieu-Daudé
2024-07-23 16:54             ` Warner Losh
2024-07-23  5:39   ` Richard Henderson

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=20240722214313.89503-6-imp@bsdimp.com \
    --to=imp@bsdimp.com \
    --cc=itachis@FreeBSD.org \
    --cc=kevans@freebsd.org \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-arm@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=richard.henderson@linaro.org \
    --cc=sson@FreeBSD.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.