From: Tobias Nygren Date: Thu, 5 Mar 2015 21:37:41 +0000 (+0100) Subject: user-exec.c: fix build on NetBSD/sparc64 and NetBSD/arm X-Git-Tag: v2.7.1~1240 X-Git-Url: https://git.proxmox.com/?a=commitdiff_plain;h=7ccfb495c64e1eef5886dcc4d48523ed6d1d22a4;p=mirror_qemu.git user-exec.c: fix build on NetBSD/sparc64 and NetBSD/arm A couple of #ifdef changes necessary to use NetBSD's ucontext structs on sparc64 and arm. Signed-off-by: Tobias Nygren Reviewed-by: Peter Maydell Message-id: 1425591461-17550-1-git-send-email-tnn@NetBSD.org Signed-off-by: Peter Maydell --- diff --git a/user-exec.c b/user-exec.c index 1ff8673acb..8f57e8acb8 100644 --- a/user-exec.c +++ b/user-exec.c @@ -404,6 +404,10 @@ int cpu_signal_handler(int host_signum, void *pinfo, struct sigcontext *uc = puc; unsigned long pc = uc->sc_pc; void *sigmask = (void *)(long)uc->sc_mask; +#elif defined(__NetBSD__) + ucontext_t *uc = puc; + unsigned long pc = _UC_MACHINE_PC(uc); + void *sigmask = (void *)&uc->uc_sigmask; #endif #endif @@ -441,15 +445,25 @@ int cpu_signal_handler(int host_signum, void *pinfo, #elif defined(__arm__) +#if defined(__NetBSD__) +#include +#endif + int cpu_signal_handler(int host_signum, void *pinfo, void *puc) { siginfo_t *info = pinfo; +#if defined(__NetBSD__) + ucontext_t *uc = puc; +#else struct ucontext *uc = puc; +#endif unsigned long pc; int is_write; -#if defined(__GLIBC__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ <= 3)) +#if defined(__NetBSD__) + pc = uc->uc_mcontext.__gregs[_REG_R15]; +#elif defined(__GLIBC__) && (__GLIBC__ < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ <= 3)) pc = uc->uc_mcontext.gregs[R15]; #else pc = uc->uc_mcontext.arm_pc;