diff options
Diffstat (limited to 'emulators/qemu/files/patch-cpu-exec.c')
-rw-r--r-- | emulators/qemu/files/patch-cpu-exec.c | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/emulators/qemu/files/patch-cpu-exec.c b/emulators/qemu/files/patch-cpu-exec.c deleted file mode 100644 index f1e1123fd547..000000000000 --- a/emulators/qemu/files/patch-cpu-exec.c +++ /dev/null @@ -1,66 +0,0 @@ -Index: qemu/cpu-exec.c -@@ -1158,6 +1158,12 @@ - # define EIP_sig(context) (*((unsigned long*)&(context)->uc_mcontext->ss.eip)) - # define TRAP_sig(context) ((context)->uc_mcontext->es.trapno) - # define ERROR_sig(context) ((context)->uc_mcontext->es.err) -+#elif defined(__FreeBSD__) -+# include <sys/ucontext.h> -+ -+# define EIP_sig(context) (*((unsigned long*)&(context)->uc_mcontext.mc_eip)) -+# define TRAP_sig(context) ((context)->uc_mcontext.mc_trapno) -+# define ERROR_sig(context) ((context)->uc_mcontext.mc_err) - #else - # define EIP_sig(context) ((context)->uc_mcontext.gregs[REG_EIP]) - # define TRAP_sig(context) ((context)->uc_mcontext.gregs[REG_TRAPNO]) -@@ -1168,7 +1174,11 @@ - void *puc) - { - siginfo_t *info = pinfo; -+#ifdef __FreeBSD__ -+ ucontext_t *uc = puc; -+#else - struct ucontext *uc = puc; -+#endif - unsigned long pc; - int trapno; - -@@ -1194,6 +1204,12 @@ - - #define QEMU_UC_MCONTEXT_GREGS(uc, reg) (uc)->uc_mcontext.__gregs[(reg)] - #define QEMU_UC_MACHINE_PC(uc) _UC_MACHINE_PC(uc) -+#elif defined(__FreeBSD__) -+# include <sys/ucontext.h> -+ -+# define RIP_sig(context) (*((unsigned long*)&(context)->uc_mcontext.mc_rip)) -+# define TRAP_sig(context) ((context)->uc_mcontext.mc_trapno) -+# define ERROR_sig(context) ((context)->uc_mcontext.mc_err) - #else - #define QEMU_UC_MCONTEXT_GREGS(uc, reg) (uc)->uc_mcontext.gregs[(reg)] - #define QEMU_UC_MACHINE_PC(uc) QEMU_UC_MCONTEXT_GREGS(uc, REG_RIP) -@@ -1204,17 +1220,25 @@ - { - siginfo_t *info = pinfo; - unsigned long pc; --#ifdef __NetBSD__ -+#if defined(__NetBSD__) || defined(__FreeBSD__) - ucontext_t *uc = puc; - #else - struct ucontext *uc = puc; - #endif - -+#ifdef __FreeBSD__ -+ pc = RIP_sig(uc); -+ return handle_cpu_signal(pc, (unsigned long)info->si_addr, -+ TRAP_sig(uc) == 0xe ? -+ (ERROR_sig(uc) >> 1) & 1 : 0, -+ &uc->uc_sigmask, puc); -+#else - pc = QEMU_UC_MACHINE_PC(uc); - return handle_cpu_signal(pc, (unsigned long)info->si_addr, - QEMU_UC_MCONTEXT_GREGS(uc, REG_TRAPNO) == 0xe ? - (QEMU_UC_MCONTEXT_GREGS(uc, REG_ERR) >> 1) & 1 : 0, - &uc->uc_sigmask, puc); -+#endif - } - - #elif defined(__powerpc__) |