* [PATCH] Provide a NetBSD specific aarch64 cpu_signal_handler
@ 2020-05-17 10:15 Nick Hudson
2020-05-19 17:00 ` Richard Henderson
0 siblings, 1 reply; 3+ messages in thread
From: Nick Hudson @ 2020-05-17 10:15 UTC (permalink / raw)
To: qemu-devel
Cc: Nick Hudson, Paolo Bonzini, Kamil Rytarowski, Riku Voipio,
Richard Henderson
Fix qemu build on NetBSD/evbarm-aarch64 by providing a NetBSD specific
cpu_signal_handler.
Signed-off-by: Nick Hudson <skrll@netbsd.org>
---
accel/tcg/user-exec.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c
index 4be78eb9b3..dd128adc00 100644
--- a/accel/tcg/user-exec.c
+++ b/accel/tcg/user-exec.c
@@ -523,6 +523,31 @@ int cpu_signal_handler(int host_signum, void *pinfo,
#elif defined(__aarch64__)
+#if defined(__NetBSD__)
+
+#include <ucontext.h>
+#include <sys/siginfo.h>
+
+int cpu_signal_handler(int host_signum, void *pinfo, void *puc)
+{
+ ucontext_t *uc = puc;
+ siginfo_t *si = pinfo;
+ unsigned long pc;
+ int is_write;
+ uint32_t esr;
+
+ pc = uc->uc_mcontext.__gregs[_REG_PC];
+ esr = si->si_trap;
+
+ /* siginfo_t::si_trap is the ESR value, for data aborts ESR.EC
+ * is 0b10010x: then bit 6 is the WnR bit
+ */
+ is_write = extract32(esr, 27, 5) == 0x12 && extract32(esr, 6, 1) == 1;
+ return handle_cpu_signal(pc, si, is_write, &uc->uc_sigmask);
+}
+
+#else
+
#ifndef ESR_MAGIC
/* Pre-3.16 kernel headers don't have these, so provide fallback definitions */
#define ESR_MAGIC 0x45535201
@@ -585,6 +610,7 @@ int cpu_signal_handler(int host_signum, void *pinfo, void *puc)
}
return handle_cpu_signal(pc, info, is_write, &uc->uc_sigmask);
}
+#endif
#elif defined(__s390__)
--
2.17.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] Provide a NetBSD specific aarch64 cpu_signal_handler
2020-05-17 10:15 [PATCH] Provide a NetBSD specific aarch64 cpu_signal_handler Nick Hudson
@ 2020-05-19 17:00 ` Richard Henderson
0 siblings, 0 replies; 3+ messages in thread
From: Richard Henderson @ 2020-05-19 17:00 UTC (permalink / raw)
To: Nick Hudson, qemu-devel
Cc: Paolo Bonzini, Kamil Rytarowski, Riku Voipio, Richard Henderson
On 5/17/20 3:15 AM, Nick Hudson wrote:
> Fix qemu build on NetBSD/evbarm-aarch64 by providing a NetBSD specific
> cpu_signal_handler.
>
> Signed-off-by: Nick Hudson <skrll@netbsd.org>
> ---
> accel/tcg/user-exec.c | 26 ++++++++++++++++++++++++++
> 1 file changed, 26 insertions(+)
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Queued to tcg-next.
r~
^ permalink raw reply [flat|nested] 3+ messages in thread
* [PATCH] Provide a NetBSD specific aarch64 cpu_signal_handler
@ 2020-05-17 10:13 Nick Hudson
0 siblings, 0 replies; 3+ messages in thread
From: Nick Hudson @ 2020-05-17 10:13 UTC (permalink / raw)
To: qemu-devel; +Cc: Nick Hudson
Fix qemu build on NetBSD/evbarm-aarch64 by providing a NetBSD specific
cpu_signal_handler.
Signed-off-by: Nick Hudson <skrll@netbsd.org>
---
accel/tcg/user-exec.c | 26 ++++++++++++++++++++++++++
1 file changed, 26 insertions(+)
diff --git a/accel/tcg/user-exec.c b/accel/tcg/user-exec.c
index 4be78eb9b3..dd128adc00 100644
--- a/accel/tcg/user-exec.c
+++ b/accel/tcg/user-exec.c
@@ -523,6 +523,31 @@ int cpu_signal_handler(int host_signum, void *pinfo,
#elif defined(__aarch64__)
+#if defined(__NetBSD__)
+
+#include <ucontext.h>
+#include <sys/siginfo.h>
+
+int cpu_signal_handler(int host_signum, void *pinfo, void *puc)
+{
+ ucontext_t *uc = puc;
+ siginfo_t *si = pinfo;
+ unsigned long pc;
+ int is_write;
+ uint32_t esr;
+
+ pc = uc->uc_mcontext.__gregs[_REG_PC];
+ esr = si->si_trap;
+
+ /* siginfo_t::si_trap is the ESR value, for data aborts ESR.EC
+ * is 0b10010x: then bit 6 is the WnR bit
+ */
+ is_write = extract32(esr, 27, 5) == 0x12 && extract32(esr, 6, 1) == 1;
+ return handle_cpu_signal(pc, si, is_write, &uc->uc_sigmask);
+}
+
+#else
+
#ifndef ESR_MAGIC
/* Pre-3.16 kernel headers don't have these, so provide fallback definitions */
#define ESR_MAGIC 0x45535201
@@ -585,6 +610,7 @@ int cpu_signal_handler(int host_signum, void *pinfo, void *puc)
}
return handle_cpu_signal(pc, info, is_write, &uc->uc_sigmask);
}
+#endif
#elif defined(__s390__)
--
2.17.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
end of thread, other threads:[~2020-05-19 17:03 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-17 10:15 [PATCH] Provide a NetBSD specific aarch64 cpu_signal_handler Nick Hudson
2020-05-19 17:00 ` Richard Henderson
-- strict thread matches above, loose matches on Subject: below --
2020-05-17 10:13 Nick Hudson
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.