[PATCH 2/3] util/cpuinfo-riscv: Support OpenBSD signal frame

Richard Henderson posted 3 patches 5 months ago
Maintainers: Richard Henderson <richard.henderson@linaro.org>, Paolo Bonzini <pbonzini@redhat.com>, "Marc-André Lureau" <marcandre.lureau@redhat.com>, "Daniel P. Berrangé" <berrange@redhat.com>, Thomas Huth <thuth@redhat.com>, "Philippe Mathieu-Daudé" <philmd@linaro.org>, Palmer Dabbelt <palmer@dabbelt.com>, Alistair Francis <Alistair.Francis@wdc.com>
[PATCH 2/3] util/cpuinfo-riscv: Support OpenBSD signal frame
Posted by Richard Henderson 5 months ago
Reported-by: Brad Smith <brad@comstyle.com>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 util/cpuinfo-riscv.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/util/cpuinfo-riscv.c b/util/cpuinfo-riscv.c
index 6b97100620..abf799794f 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;
 }
-- 
2.34.1
Re: [PATCH 2/3] util/cpuinfo-riscv: Support OpenBSD signal frame
Posted by Alistair Francis 4 months, 3 weeks ago
On Fri, Jun 28, 2024 at 4:06 AM Richard Henderson
<richard.henderson@linaro.org> wrote:
>
> Reported-by: Brad Smith <brad@comstyle.com>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Acked-by: Alistair Francis <alistair.francis@wdc.com>

Alistair

> ---
>  util/cpuinfo-riscv.c | 7 +++++++
>  1 file changed, 7 insertions(+)
>
> diff --git a/util/cpuinfo-riscv.c b/util/cpuinfo-riscv.c
> index 6b97100620..abf799794f 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;
>  }
> --
> 2.34.1
>
>
Re: [PATCH 2/3] util/cpuinfo-riscv: Support OpenBSD signal frame
Posted by Daniel Henrique Barboza 4 months, 3 weeks ago

On 6/27/24 3:03 PM, Richard Henderson wrote:
> Reported-by: Brad Smith <brad@comstyle.com>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---

Acked-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com>

>   util/cpuinfo-riscv.c | 7 +++++++
>   1 file changed, 7 insertions(+)
> 
> diff --git a/util/cpuinfo-riscv.c b/util/cpuinfo-riscv.c
> index 6b97100620..abf799794f 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;
>   }
Re: [PATCH 2/3] util/cpuinfo-riscv: Support OpenBSD signal frame
Posted by Philippe Mathieu-Daudé 4 months, 3 weeks ago
On 27/6/24 20:03, Richard Henderson wrote:
> Reported-by: Brad Smith <brad@comstyle.com>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>   util/cpuinfo-riscv.c | 7 +++++++
>   1 file changed, 7 insertions(+)
> 
> diff --git a/util/cpuinfo-riscv.c b/util/cpuinfo-riscv.c
> index 6b97100620..abf799794f 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;

To the best of my non-existent OpenBSD knowledge reviewing corresponding
https://github.com/openbsd/src/blob/master/sys/arch/riscv64/riscv64/sig_machdep.c,
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>

> +#else
> +# error Unsupported OS
> +#endif
>   
>       got_sigill = 1;
>   }