linux_sysvec.c (fcdffc03f80577070fad20ff11fa3c9c5c09328e) | linux_sysvec.c (4ab7403bbd76f466d482cd69035091c04e409c09) |
---|---|
1/*- 2 * Copyright (c) 2013 Dmitry Chagin 3 * Copyright (c) 2004 Tim J. Robbins 4 * Copyright (c) 2003 Peter Wemm 5 * Copyright (c) 2002 Doug Rabson 6 * Copyright (c) 1998-1999 Andrew Gallatin 7 * Copyright (c) 1994-1996 Søren Schmidt 8 * All rights reserved. --- 136 unchanged lines hidden (view full) --- 145 -90, -91, -92, -93, -94, -95, -96, -97, -98, -99, 146 -100,-101,-102,-103,-104,-105,-106,-107,-108,-109, 147 -110,-111, -40, -36,-112,-113, -39, -11, -87,-122, 148 -116, -66, -6, -6, -6, -6, -6, -37, -38, -9, 149 -6, -6, -43, -42, -75,-125, -84, -95, -16, -74, 150 -72, -67, -71 151}; 152 | 1/*- 2 * Copyright (c) 2013 Dmitry Chagin 3 * Copyright (c) 2004 Tim J. Robbins 4 * Copyright (c) 2003 Peter Wemm 5 * Copyright (c) 2002 Doug Rabson 6 * Copyright (c) 1998-1999 Andrew Gallatin 7 * Copyright (c) 1994-1996 Søren Schmidt 8 * All rights reserved. --- 136 unchanged lines hidden (view full) --- 145 -90, -91, -92, -93, -94, -95, -96, -97, -98, -99, 146 -100,-101,-102,-103,-104,-105,-106,-107,-108,-109, 147 -110,-111, -40, -36,-112,-113, -39, -11, -87,-122, 148 -116, -66, -6, -6, -6, -6, -6, -37, -38, -9, 149 -6, -6, -43, -42, -75,-125, -84, -95, -16, -74, 150 -72, -67, -71 151}; 152 |
153int bsd_to_linux_signal[LINUX_SIGTBLSZ] = { 154 LINUX_SIGHUP, LINUX_SIGINT, LINUX_SIGQUIT, LINUX_SIGILL, 155 LINUX_SIGTRAP, LINUX_SIGABRT, 0, LINUX_SIGFPE, 156 LINUX_SIGKILL, LINUX_SIGBUS, LINUX_SIGSEGV, LINUX_SIGSYS, 157 LINUX_SIGPIPE, LINUX_SIGALRM, LINUX_SIGTERM, LINUX_SIGURG, 158 LINUX_SIGSTOP, LINUX_SIGTSTP, LINUX_SIGCONT, LINUX_SIGCHLD, 159 LINUX_SIGTTIN, LINUX_SIGTTOU, LINUX_SIGIO, LINUX_SIGXCPU, 160 LINUX_SIGXFSZ, LINUX_SIGVTALRM, LINUX_SIGPROF, LINUX_SIGWINCH, 161 0, LINUX_SIGUSR1, LINUX_SIGUSR2 162}; 163 164int linux_to_bsd_signal[LINUX_SIGTBLSZ] = { 165 SIGHUP, SIGINT, SIGQUIT, SIGILL, 166 SIGTRAP, SIGABRT, SIGBUS, SIGFPE, 167 SIGKILL, SIGUSR1, SIGSEGV, SIGUSR2, 168 SIGPIPE, SIGALRM, SIGTERM, SIGBUS, 169 SIGCHLD, SIGCONT, SIGSTOP, SIGTSTP, 170 SIGTTIN, SIGTTOU, SIGURG, SIGXCPU, 171 SIGXFSZ, SIGVTALRM, SIGPROF, SIGWINCH, 172 SIGIO, SIGURG, SIGSYS 173}; 174 | |
175#define LINUX_T_UNKNOWN 255 176static int _bsd_to_linux_trapcode[] = { 177 LINUX_T_UNKNOWN, /* 0 */ 178 6, /* 1 T_PRIVINFLT */ 179 LINUX_T_UNKNOWN, /* 2 */ 180 3, /* 3 T_BPTFLT */ 181 LINUX_T_UNKNOWN, /* 4 */ 182 LINUX_T_UNKNOWN, /* 5 */ --- 469 unchanged lines hidden (view full) --- 652 sp = td->td_sigstk.ss_sp + td->td_sigstk.ss_size - 653 sizeof(struct l_rt_sigframe); 654 } else 655 sp = (caddr_t)regs->tf_rsp - sizeof(struct l_rt_sigframe) - 128; 656 /* Align to 16 bytes. */ 657 sfp = (struct l_rt_sigframe *)((unsigned long)sp & ~0xFul); 658 mtx_unlock(&psp->ps_mtx); 659 | 153#define LINUX_T_UNKNOWN 255 154static int _bsd_to_linux_trapcode[] = { 155 LINUX_T_UNKNOWN, /* 0 */ 156 6, /* 1 T_PRIVINFLT */ 157 LINUX_T_UNKNOWN, /* 2 */ 158 3, /* 3 T_BPTFLT */ 159 LINUX_T_UNKNOWN, /* 4 */ 160 LINUX_T_UNKNOWN, /* 5 */ --- 469 unchanged lines hidden (view full) --- 630 sp = td->td_sigstk.ss_sp + td->td_sigstk.ss_size - 631 sizeof(struct l_rt_sigframe); 632 } else 633 sp = (caddr_t)regs->tf_rsp - sizeof(struct l_rt_sigframe) - 128; 634 /* Align to 16 bytes. */ 635 sfp = (struct l_rt_sigframe *)((unsigned long)sp & ~0xFul); 636 mtx_unlock(&psp->ps_mtx); 637 |
660 /* Translate the signal if appropriate. */ 661 sig = BSD_TO_LINUX_SIGNAL(sig); | 638 /* Translate the signal. */ 639 sig = bsd_to_linux_signal(sig); |
662 663 /* Save user context. */ 664 bzero(&sf, sizeof(sf)); 665 bsd_to_linux_sigset(mask, &sf.sf_sc.uc_sigmask); 666 bsd_to_linux_sigset(mask, &sf.sf_sc.uc_mcontext.sc_mask); 667 668 sf.sf_sc.uc_stack.ss_sp = PTROUT(td->td_sigstk.ss_sp); 669 sf.sf_sc.uc_stack.ss_size = td->td_sigstk.ss_size; --- 97 unchanged lines hidden (view full) --- 767 } 768 return(error); 769} 770 771struct sysentvec elf_linux_sysvec = { 772 .sv_size = LINUX_SYS_MAXSYSCALL, 773 .sv_table = linux_sysent, 774 .sv_mask = 0, | 640 641 /* Save user context. */ 642 bzero(&sf, sizeof(sf)); 643 bsd_to_linux_sigset(mask, &sf.sf_sc.uc_sigmask); 644 bsd_to_linux_sigset(mask, &sf.sf_sc.uc_mcontext.sc_mask); 645 646 sf.sf_sc.uc_stack.ss_sp = PTROUT(td->td_sigstk.ss_sp); 647 sf.sf_sc.uc_stack.ss_size = td->td_sigstk.ss_size; --- 97 unchanged lines hidden (view full) --- 745 } 746 return(error); 747} 748 749struct sysentvec elf_linux_sysvec = { 750 .sv_size = LINUX_SYS_MAXSYSCALL, 751 .sv_table = linux_sysent, 752 .sv_mask = 0, |
775 .sv_sigsize = LINUX_SIGTBLSZ, 776 .sv_sigtbl = bsd_to_linux_signal, | 753 .sv_sigsize = 0, 754 .sv_sigtbl = NULL, |
777 .sv_errsize = ELAST + 1, 778 .sv_errtbl = bsd_to_linux_errno, 779 .sv_transtrap = translate_traps, 780 .sv_fixup = elf_linux_fixup, 781 .sv_sendsig = linux_rt_sendsig, 782 .sv_sigcode = &_binary_linux_locore_o_start, 783 .sv_szsigcode = &linux_szsigcode, 784 .sv_prepsyscall = NULL, --- 184 unchanged lines hidden --- | 755 .sv_errsize = ELAST + 1, 756 .sv_errtbl = bsd_to_linux_errno, 757 .sv_transtrap = translate_traps, 758 .sv_fixup = elf_linux_fixup, 759 .sv_sendsig = linux_rt_sendsig, 760 .sv_sigcode = &_binary_linux_locore_o_start, 761 .sv_szsigcode = &linux_szsigcode, 762 .sv_prepsyscall = NULL, --- 184 unchanged lines hidden --- |