Kaynağa Gözat

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>
Richard Henderson 1 yıl önce
ebeveyn
işleme
adc028428a
1 değiştirilmiş dosya ile 7 ekleme ve 0 silme
  1. 7 0
      util/cpuinfo-riscv.c

+ 7 - 0
util/cpuinfo-riscv.c

@@ -13,7 +13,14 @@ static void sigill_handler(int signo, siginfo_t *si, void *data)
 {
 {
     /* Skip the faulty instruction */
     /* Skip the faulty instruction */
     ucontext_t *uc = (ucontext_t *)data;
     ucontext_t *uc = (ucontext_t *)data;
+
+#ifdef __linux__
     uc->uc_mcontext.__gregs[REG_PC] += 4;
     uc->uc_mcontext.__gregs[REG_PC] += 4;
+#elif defined(__OpenBSD__)
+    uc->sc_sepc += 4;
+#else
+# error Unsupported OS
+#endif
 
 
     got_sigill = 1;
     got_sigill = 1;
 }
 }