Lines Matching refs:frame

107 void trap(struct trapframe *frame);
108 void syscall(struct trapframe *frame);
217 trap(struct trapframe *frame) in trap() argument
235 type = frame->tf_trapno; in trap()
238 ("trap: interrupts enabled, type %d frame %p", type, frame)); in trap()
249 nmi_handle_intr(frame); in trap()
254 trap_fatal(frame, 0); in trap()
272 dtrace_trap_func != NULL && (*dtrace_trap_func)(frame, type)) in trap()
291 if ((frame->tf_eflags & PSL_I) == 0 && TRAPF_USERMODE(frame) && in trap()
304 frame->tf_eip != (int)cpu_switch_load_gs) in trap()
307 if (TRAPF_USERMODE(frame) && (curpcb->pcb_flags & PCB_VM86CALL) == 0) { in trap()
311 td->td_frame = frame; in trap()
312 addr = frame->tf_eip; in trap()
324 if (trap_user_dtrace(frame, &dtrace_pid_probe_ptr)) in trap()
362 if (frame->tf_eflags & PSL_VM) { in trap()
363 signo = vm86_emulate((struct vm86frame *)frame); in trap()
396 pf = trap_pfault(frame, true, eva, &signo, &ucode); in trap()
404 type = frame->tf_trapno = T_PRIVINFLT; in trap()
431 nmi_handle_intr(frame); in trap()
470 (void)trap_user_dtrace(frame, &dtrace_return_probe_ptr); in trap()
481 (void)trap_pfault(frame, false, eva, NULL, NULL); in trap()
498 trap_fatal(frame, 0); in trap()
508 if (frame->tf_eflags & PSL_VM) { in trap()
509 signo = vm86_emulate((struct vm86frame *)frame); in trap()
519 vm86_trap((struct vm86frame *)frame); in trap()
536 if (frame->tf_eip == (int)cpu_switch_load_gs) { in trap()
568 if (frame->tf_eip == (int)doreti_iret + setidt_disp) { in trap()
569 frame->tf_eip = (int)doreti_iret_fault + in trap()
576 if (frame->tf_eip == (int)doreti_popl_ds + in trap()
578 frame->tf_eip = (int)doreti_popl_ds_fault + in trap()
582 if (frame->tf_eip == (int)doreti_popl_es + in trap()
584 frame->tf_eip = (int)doreti_popl_es_fault + in trap()
588 if (frame->tf_eip == (int)doreti_popl_fs + in trap()
590 frame->tf_eip = (int)doreti_popl_fs_fault + in trap()
595 frame->tf_eip = (int)curpcb->pcb_onfault; in trap()
610 if (frame->tf_eflags & PSL_NT) { in trap()
611 frame->tf_eflags &= ~PSL_NT; in trap()
658 if (frame->tf_eip == in trap()
660 frame->tf_eip == (uintptr_t)IDTVEC(bpt) + in trap()
662 frame->tf_eip == (uintptr_t)IDTVEC(dbg) + in trap()
674 if (kdb_trap(type, dr6, frame)) in trap()
688 nmi_handle_intr(frame); in trap()
693 trap_fatal(frame, eva); in trap()
706 p->p_pid, p->p_comm, signo, frame->tf_err, ucode, type, in trap()
707 addr, frame->tf_ss, frame->tf_esp, frame->tf_cs, in trap()
708 frame->tf_eip, frame->tf_eax, in trap()
709 fubyte((void *)(frame->tf_eip + 0)), in trap()
710 fubyte((void *)(frame->tf_eip + 1)), in trap()
711 fubyte((void *)(frame->tf_eip + 2)), in trap()
712 fubyte((void *)(frame->tf_eip + 3)), in trap()
713 fubyte((void *)(frame->tf_eip + 4)), in trap()
714 fubyte((void *)(frame->tf_eip + 5)), in trap()
715 fubyte((void *)(frame->tf_eip + 6)), in trap()
716 fubyte((void *)(frame->tf_eip + 7))); in trap()
722 userret(td, frame); in trap()
741 trap_pfault(struct trapframe *frame, bool usermode, vm_offset_t eva, in trap_pfault() argument
795 trap_fatal(frame, eva); in trap_pfault()
820 trap_fatal(frame, eva); in trap_pfault()
831 trap_fatal(frame, eva); in trap_pfault()
839 if (frame->tf_err & PGEX_RSV) { in trap_pfault()
840 trap_fatal(frame, eva); in trap_pfault()
848 if (frame->tf_err & PGEX_W) in trap_pfault()
850 else if ((frame->tf_err & PGEX_I) && pg_nx != 0) in trap_pfault()
860 PMC_SOFT_CALL_TF( , , page_fault, all, frame); in trap_pfault()
863 frame); in trap_pfault()
866 frame); in trap_pfault()
875 frame->tf_eip = (int)curpcb->pcb_onfault; in trap_pfault()
878 trap_fatal(frame, eva); in trap_pfault()
883 trap_fatal(struct trapframe *frame, vm_offset_t eva) in trap_fatal() argument
892 code = frame->tf_err; in trap_fatal()
893 type = frame->tf_trapno; in trap_fatal()
894 sdtossd(&gdt[IDXSEL(frame->tf_cs & 0xffff)].sd, &softseg); in trap_fatal()
897 frame->tf_eflags & PSL_VM ? "vm86" : in trap_fatal()
898 ISPL(frame->tf_cs) == SEL_UPL ? "user" : "kernel"); in trap_fatal()
918 frame->tf_cs & 0xffff, frame->tf_eip); in trap_fatal()
919 if (TF_HAS_STACKREGS(frame)) { in trap_fatal()
920 ss = frame->tf_ss & 0xffff; in trap_fatal()
921 esp = frame->tf_esp; in trap_fatal()
924 esp = (int)&frame->tf_esp; in trap_fatal()
927 printf("frame pointer = 0x%x:0x%x\n", ss, frame->tf_ebp); in trap_fatal()
934 if (frame->tf_eflags & PSL_T) in trap_fatal()
936 if (frame->tf_eflags & PSL_I) in trap_fatal()
938 if (frame->tf_eflags & PSL_NT) in trap_fatal()
940 if (frame->tf_eflags & PSL_RF) in trap_fatal()
942 if (frame->tf_eflags & PSL_VM) in trap_fatal()
944 printf("IOPL = %d\n", (frame->tf_eflags & PSL_IOPL) >> 12); in trap_fatal()
951 frame->tf_err = eva; /* smuggle fault address to ddb */ in trap_fatal()
952 handled = kdb_trap(type, 0, frame); in trap_fatal()
953 frame->tf_err = code; /* restore error code */ in trap_fatal()
973 trap_user_dtrace(struct trapframe *frame, int (**hookp)(struct trapframe *)) in trap_user_dtrace() argument
980 return ((hook)(frame) == 0); in trap_user_dtrace()
1030 struct trapframe *frame; in cpu_fetch_syscall_args() local
1041 frame = td->td_frame; in cpu_fetch_syscall_args()
1045 if (__predict_false(frame->tf_cs == 7 && frame->tf_eip == 2)) { in cpu_fetch_syscall_args()
1051 error = fueword32((void *)frame->tf_esp, &eip); in cpu_fetch_syscall_args()
1054 cs = fuword16((void *)(frame->tf_esp + sizeof(u_int32_t))); in cpu_fetch_syscall_args()
1062 frame->tf_eip = eip; in cpu_fetch_syscall_args()
1063 frame->tf_cs = cs; in cpu_fetch_syscall_args()
1064 frame->tf_esp += 2 * sizeof(u_int32_t); in cpu_fetch_syscall_args()
1065 frame->tf_err = 7; /* size of lcall $7,$0 */ in cpu_fetch_syscall_args()
1069 sa->code = frame->tf_eax; in cpu_fetch_syscall_args()
1071 params = (caddr_t)frame->tf_esp + sizeof(uint32_t); in cpu_fetch_syscall_args()
1110 td->td_retval[1] = frame->tf_edx; in cpu_fetch_syscall_args()
1123 syscall(struct trapframe *frame) in syscall() argument
1130 if (!(TRAPF_USERMODE(frame) && in syscall()
1137 orig_tf_eflags = frame->tf_eflags; in syscall()
1140 td->td_frame = frame; in syscall()
1148 frame->tf_eflags &= ~PSL_T; in syscall()
1152 ksi.ksi_addr = (void *)frame->tf_eip; in syscall()