cpu_machdep.c (130312) | cpu_machdep.c (130344) |
---|---|
1/*- 2 * Copyright (c) 1992 Terrence R. Lambert. 3 * Copyright (c) 1982, 1987, 1990 The Regents of the University of California. 4 * All rights reserved. 5 * 6 * This code is derived from software contributed to Berkeley by 7 * William Jolitz. 8 * --- 24 unchanged lines hidden (view full) --- 33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 34 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 35 * SUCH DAMAGE. 36 * 37 * from: @(#)machdep.c 7.4 (Berkeley) 6/3/91 38 */ 39 40#include <sys/cdefs.h> | 1/*- 2 * Copyright (c) 1992 Terrence R. Lambert. 3 * Copyright (c) 1982, 1987, 1990 The Regents of the University of California. 4 * All rights reserved. 5 * 6 * This code is derived from software contributed to Berkeley by 7 * William Jolitz. 8 * --- 24 unchanged lines hidden (view full) --- 33 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 34 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 35 * SUCH DAMAGE. 36 * 37 * from: @(#)machdep.c 7.4 (Berkeley) 6/3/91 38 */ 39 40#include <sys/cdefs.h> |
41__FBSDID("$FreeBSD: head/sys/i386/i386/machdep.c 130312 2004-06-10 20:31:00Z jhb $"); | 41__FBSDID("$FreeBSD: head/sys/i386/i386/machdep.c 130344 2004-06-11 11:16:26Z phk $"); |
42 43#include "opt_apic.h" 44#include "opt_atalk.h" 45#include "opt_compat.h" 46#include "opt_cpu.h" 47#include "opt_ddb.h" 48#include "opt_inet.h" 49#include "opt_ipx.h" --- 220 unchanged lines hidden (view full) --- 270 regs = td->td_frame; 271 oonstack = sigonstack(regs->tf_esp); 272 273 /* Allocate space for the signal handler context. */ 274 if ((td->td_pflags & TDP_ALTSTACK) && !oonstack && 275 SIGISMEMBER(psp->ps_sigonstack, sig)) { 276 fp = (struct osigframe *)(td->td_sigstk.ss_sp + 277 td->td_sigstk.ss_size - sizeof(struct osigframe)); | 42 43#include "opt_apic.h" 44#include "opt_atalk.h" 45#include "opt_compat.h" 46#include "opt_cpu.h" 47#include "opt_ddb.h" 48#include "opt_inet.h" 49#include "opt_ipx.h" --- 220 unchanged lines hidden (view full) --- 270 regs = td->td_frame; 271 oonstack = sigonstack(regs->tf_esp); 272 273 /* Allocate space for the signal handler context. */ 274 if ((td->td_pflags & TDP_ALTSTACK) && !oonstack && 275 SIGISMEMBER(psp->ps_sigonstack, sig)) { 276 fp = (struct osigframe *)(td->td_sigstk.ss_sp + 277 td->td_sigstk.ss_size - sizeof(struct osigframe)); |
278#if defined(COMPAT_43) || defined(COMPAT_SUNOS) | 278#if defined(COMPAT_43) |
279 td->td_sigstk.ss_flags |= SS_ONSTACK; 280#endif 281 } else 282 fp = (struct osigframe *)regs->tf_esp - 1; 283 284 /* Translate the signal if appropriate. */ 285 if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize) 286 sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; --- 123 unchanged lines hidden (view full) --- 410 sf.sf_uc.uc_mcontext.mc_gs = rgs(); 411 bcopy(regs, &sf.sf_uc.uc_mcontext.mc_fs, sizeof(*regs)); 412 413 /* Allocate space for the signal handler context. */ 414 if ((td->td_pflags & TDP_ALTSTACK) != 0 && !oonstack && 415 SIGISMEMBER(psp->ps_sigonstack, sig)) { 416 sfp = (struct sigframe4 *)(td->td_sigstk.ss_sp + 417 td->td_sigstk.ss_size - sizeof(struct sigframe4)); | 279 td->td_sigstk.ss_flags |= SS_ONSTACK; 280#endif 281 } else 282 fp = (struct osigframe *)regs->tf_esp - 1; 283 284 /* Translate the signal if appropriate. */ 285 if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize) 286 sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; --- 123 unchanged lines hidden (view full) --- 410 sf.sf_uc.uc_mcontext.mc_gs = rgs(); 411 bcopy(regs, &sf.sf_uc.uc_mcontext.mc_fs, sizeof(*regs)); 412 413 /* Allocate space for the signal handler context. */ 414 if ((td->td_pflags & TDP_ALTSTACK) != 0 && !oonstack && 415 SIGISMEMBER(psp->ps_sigonstack, sig)) { 416 sfp = (struct sigframe4 *)(td->td_sigstk.ss_sp + 417 td->td_sigstk.ss_size - sizeof(struct sigframe4)); |
418#if defined(COMPAT_43) || defined(COMPAT_SUNOS) | 418#if defined(COMPAT_43) |
419 td->td_sigstk.ss_flags |= SS_ONSTACK; 420#endif 421 } else 422 sfp = (struct sigframe4 *)regs->tf_esp - 1; 423 424 /* Translate the signal if appropriate. */ 425 if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize) 426 sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; --- 120 unchanged lines hidden (view full) --- 547 get_fpcontext(td, &sf.sf_uc.uc_mcontext); 548 fpstate_drop(td); 549 550 /* Allocate space for the signal handler context. */ 551 if ((td->td_pflags & TDP_ALTSTACK) != 0 && !oonstack && 552 SIGISMEMBER(psp->ps_sigonstack, sig)) { 553 sp = td->td_sigstk.ss_sp + 554 td->td_sigstk.ss_size - sizeof(struct sigframe); | 419 td->td_sigstk.ss_flags |= SS_ONSTACK; 420#endif 421 } else 422 sfp = (struct sigframe4 *)regs->tf_esp - 1; 423 424 /* Translate the signal if appropriate. */ 425 if (p->p_sysent->sv_sigtbl && sig <= p->p_sysent->sv_sigsize) 426 sig = p->p_sysent->sv_sigtbl[_SIG_IDX(sig)]; --- 120 unchanged lines hidden (view full) --- 547 get_fpcontext(td, &sf.sf_uc.uc_mcontext); 548 fpstate_drop(td); 549 550 /* Allocate space for the signal handler context. */ 551 if ((td->td_pflags & TDP_ALTSTACK) != 0 && !oonstack && 552 SIGISMEMBER(psp->ps_sigonstack, sig)) { 553 sp = td->td_sigstk.ss_sp + 554 td->td_sigstk.ss_size - sizeof(struct sigframe); |
555#if defined(COMPAT_43) || defined(COMPAT_SUNOS) | 555#if defined(COMPAT_43) |
556 td->td_sigstk.ss_flags |= SS_ONSTACK; 557#endif 558 } else 559 sp = (char *)regs->tf_esp - sizeof(struct sigframe); 560 /* Align to 16 bytes. */ 561 sfp = (struct sigframe *)((unsigned int)sp & ~0xF); 562 563 /* Translate the signal if appropriate. */ --- 200 unchanged lines hidden (view full) --- 764 regs->tf_ss = scp->sc_ss; 765 regs->tf_isp = scp->sc_isp; 766 regs->tf_ebp = scp->sc_fp; 767 regs->tf_esp = scp->sc_sp; 768 regs->tf_eip = scp->sc_pc; 769 regs->tf_eflags = eflags; 770 771 PROC_LOCK(p); | 556 td->td_sigstk.ss_flags |= SS_ONSTACK; 557#endif 558 } else 559 sp = (char *)regs->tf_esp - sizeof(struct sigframe); 560 /* Align to 16 bytes. */ 561 sfp = (struct sigframe *)((unsigned int)sp & ~0xF); 562 563 /* Translate the signal if appropriate. */ --- 200 unchanged lines hidden (view full) --- 764 regs->tf_ss = scp->sc_ss; 765 regs->tf_isp = scp->sc_isp; 766 regs->tf_ebp = scp->sc_fp; 767 regs->tf_esp = scp->sc_sp; 768 regs->tf_eip = scp->sc_pc; 769 regs->tf_eflags = eflags; 770 771 PROC_LOCK(p); |
772#if defined(COMPAT_43) || defined(COMPAT_SUNOS) | 772#if defined(COMPAT_43) |
773 if (scp->sc_onstack & 1) 774 td->td_sigstk.ss_flags |= SS_ONSTACK; 775 else 776 td->td_sigstk.ss_flags &= ~SS_ONSTACK; 777#endif 778 SIGSETOLD(td->td_sigmask, scp->sc_mask); 779 SIG_CANTMASK(td->td_sigmask); 780 signotify(td); --- 90 unchanged lines hidden (view full) --- 871 trapsignal(td, SIGBUS, T_PROTFLT); 872 return (EINVAL); 873 } 874 875 bcopy(&ucp->uc_mcontext.mc_fs, regs, sizeof(*regs)); 876 } 877 878 PROC_LOCK(p); | 773 if (scp->sc_onstack & 1) 774 td->td_sigstk.ss_flags |= SS_ONSTACK; 775 else 776 td->td_sigstk.ss_flags &= ~SS_ONSTACK; 777#endif 778 SIGSETOLD(td->td_sigmask, scp->sc_mask); 779 SIG_CANTMASK(td->td_sigmask); 780 signotify(td); --- 90 unchanged lines hidden (view full) --- 871 trapsignal(td, SIGBUS, T_PROTFLT); 872 return (EINVAL); 873 } 874 875 bcopy(&ucp->uc_mcontext.mc_fs, regs, sizeof(*regs)); 876 } 877 878 PROC_LOCK(p); |
879#if defined(COMPAT_43) || defined(COMPAT_SUNOS) | 879#if defined(COMPAT_43) |
880 if (ucp->uc_mcontext.mc_onstack & 1) 881 td->td_sigstk.ss_flags |= SS_ONSTACK; 882 else 883 td->td_sigstk.ss_flags &= ~SS_ONSTACK; 884#endif 885 886 td->td_sigmask = ucp->uc_sigmask; 887 SIG_CANTMASK(td->td_sigmask); --- 93 unchanged lines hidden (view full) --- 981 982 ret = set_fpcontext(td, &ucp->uc_mcontext); 983 if (ret != 0) 984 return (ret); 985 bcopy(&ucp->uc_mcontext.mc_fs, regs, sizeof(*regs)); 986 } 987 988 PROC_LOCK(p); | 880 if (ucp->uc_mcontext.mc_onstack & 1) 881 td->td_sigstk.ss_flags |= SS_ONSTACK; 882 else 883 td->td_sigstk.ss_flags &= ~SS_ONSTACK; 884#endif 885 886 td->td_sigmask = ucp->uc_sigmask; 887 SIG_CANTMASK(td->td_sigmask); --- 93 unchanged lines hidden (view full) --- 981 982 ret = set_fpcontext(td, &ucp->uc_mcontext); 983 if (ret != 0) 984 return (ret); 985 bcopy(&ucp->uc_mcontext.mc_fs, regs, sizeof(*regs)); 986 } 987 988 PROC_LOCK(p); |
989#if defined(COMPAT_43) || defined(COMPAT_SUNOS) | 989#if defined(COMPAT_43) |
990 if (ucp->uc_mcontext.mc_onstack & 1) 991 td->td_sigstk.ss_flags |= SS_ONSTACK; 992 else 993 td->td_sigstk.ss_flags &= ~SS_ONSTACK; 994#endif 995 996 td->td_sigmask = ucp->uc_sigmask; 997 SIG_CANTMASK(td->td_sigmask); --- 1902 unchanged lines hidden --- | 990 if (ucp->uc_mcontext.mc_onstack & 1) 991 td->td_sigstk.ss_flags |= SS_ONSTACK; 992 else 993 td->td_sigstk.ss_flags &= ~SS_ONSTACK; 994#endif 995 996 td->td_sigmask = ucp->uc_sigmask; 997 SIG_CANTMASK(td->td_sigmask); --- 1902 unchanged lines hidden --- |