Message ID | 20240627180350.128575-3-richard.henderson@linaro.org |
---|---|
State | New |
Headers | show |
Series | util: Add cpuinfo support for riscv | expand |
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; > }
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; > }
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 > >
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; }
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(+)