aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Henderson <richard.henderson@linaro.org>2024-06-27 15:13:31 +0000
committerRichard Henderson <richard.henderson@linaro.org>2024-07-03 10:24:12 -0700
commitadc028428a6da5ea8d6a688085966a33be4c97c7 (patch)
treebefe52abd9854bb70274ad8310e2bcb0b93436e0
parentb86c6ba689662256ea32f3e27927524ccb13f81d (diff)
util/cpuinfo-riscv: Support OpenBSD signal frame
Reported-by: Brad Smith <brad@comstyle.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Acked-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Acked-by: Alistair Francis <alistair.francis@wdc.com> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
-rw-r--r--util/cpuinfo-riscv.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/util/cpuinfo-riscv.c b/util/cpuinfo-riscv.c
index 1236ee5fa4..7dcfbee2ab 100644
--- a/util/cpuinfo-riscv.c
+++ b/util/cpuinfo-riscv.c
@@ -13,7 +13,14 @@ static void sigill_handler(int signo, siginfo_t *si, void *data)
{
/* Skip the faulty instruction */
ucontext_t *uc = (ucontext_t *)data;
+
+#ifdef __linux__
uc->uc_mcontext.__gregs[REG_PC] += 4;
+#elif defined(__OpenBSD__)
+ uc->sc_sepc += 4;
+#else
+# error Unsupported OS
+#endif
got_sigill = 1;
}