Lines Matching refs:tf

168 call_trapsignal(struct lwp *l, const struct trapframe *tf, ksiginfo_t *ksi)  in call_trapsignal()  argument
176 tf->tf_r0, tf->tf_r1, tf->tf_r2, tf->tf_r3); in call_trapsignal()
178 tf->tf_r4, tf->tf_r5, tf->tf_r6, tf->tf_r7); in call_trapsignal()
180 tf->tf_r8, tf->tf_r9, tf->tf_r10, tf->tf_r11); in call_trapsignal()
182 tf->tf_r12, tf->tf_usr_sp, tf->tf_usr_lr, tf->tf_pc, in call_trapsignal()
183 tf->tf_spsr); in call_trapsignal()
190 data_abort_fixup(trapframe_t *tf, u_int fsr, u_int far, struct lwp *l) in data_abort_fixup() argument
196 error = cpu_dataabt_fixup(tf); in data_abort_fixup()
204 TRAP_USERMODE(tf) ? "user" : "kernel"); in data_abort_fixup()
206 if (tf->tf_spsr & PSR_T_bit) { in data_abort_fixup()
208 tf->tf_pc, *((uint16 *)(tf->tf_pc & ~1)), in data_abort_fixup()
209 *((uint16 *)((tf->tf_pc + 2) & ~1))); in data_abort_fixup()
214 printf("pc = 0x%08x, opcode 0x%08x, insn = ", tf->tf_pc, in data_abort_fixup()
215 *((u_int *)tf->tf_pc)); in data_abort_fixup()
217 disassemble(tf->tf_pc); in data_abort_fixup()
220 if (!TRAP_USERMODE(tf)) in data_abort_fixup()
221 dab_fatal(tf, fsr, far, l, NULL); in data_abort_fixup()
230 data_abort_handler(trapframe_t *tf) in data_abort_handler() argument
253 KASSERT(!TRAP_USERMODE(tf) || VALID_PSR(tf->tf_spsr)); in data_abort_handler()
255 if (__predict_true((tf->tf_spsr & I32_bit) != I32_bit)) in data_abort_handler()
256 restore_interrupts(tf->tf_spsr & IF32_bits); in data_abort_handler()
258 if (__predict_true((tf->tf_spsr & IF32_bits) != IF32_bits)) in data_abort_handler()
259 restore_interrupts(tf->tf_spsr & IF32_bits); in data_abort_handler()
267 (uintptr_t)tf, (uintptr_t)tf->tf_pc, 0, 0); in data_abort_handler()
270 bool user = (TRAP_USERMODE(tf) != 0); in data_abort_handler()
283 if ((data_aborts[fsr & FAULT_TYPE_MASK].func)(tf, fsr, far, in data_abort_handler()
303 KASSERTMSG(!user || tf == lwp_trapframe(l), "tf %p vs %p", tf, in data_abort_handler()
317 if (__predict_false(!user && (tf->tf_pc & 3) != 0)) { in data_abort_handler()
320 dab_fatal(tf, fsr, far, l, NULL); in data_abort_handler()
323 if (__predict_false((tf->tf_pc & 3) != 0)) { in data_abort_handler()
342 dab_fatal(tf, fsr, far, l, NULL); in data_abort_handler()
347 switch (data_abort_fixup(tf, fsr, far, l)) { in data_abort_handler()
373 (read_insn(tf->tf_pc, false) & 0x05200000) != 0x04200000))) { in data_abort_handler()
377 if (__predict_false((tf->tf_spsr & PSR_MODE)==PSR_UND32_MODE)) { in data_abort_handler()
415 if (__predict_false(tf->tf_spsr & PSR_T_bit)) { in data_abort_handler()
416 u_int insn = read_thumb_insn(tf->tf_pc, user); in data_abort_handler()
435 u_int insn = read_insn(tf->tf_pc, user); in data_abort_handler()
463 tf->tf_r0 = EINVAL; in data_abort_handler()
464 tf->tf_pc = (register_t)(intptr_t) pcb->pcb_onfault; in data_abort_handler()
468 dab_fatal(tf, fsr, far, l, NULL); in data_abort_handler()
485 far, tf->tf_pc, map->pmap->pm_pai[0].pai_asid, in data_abort_handler()
512 tf->tf_r0 = error; in data_abort_handler()
513 tf->tf_pc = (register_t)(intptr_t) pcb->pcb_onfault; in data_abort_handler()
519 dab_fatal(tf, fsr, far, l, NULL); in data_abort_handler()
549 call_trapsignal(l, tf, &ksi); in data_abort_handler()
570 dab_fatal(trapframe_t *tf, u_int fsr, u_int far, struct lwp *l, ksiginfo_t *ksi) in dab_fatal() argument
572 const char * const mode = TRAP_USERMODE(tf) ? "user" : "kernel"; in dab_fatal()
577 printf("trapframe: %p\nFSR=%08x, FAR=", tf, fsr); in dab_fatal()
582 printf("spsr=%08x\n", tf->tf_spsr); in dab_fatal()
585 mode, tf->tf_pc); in dab_fatal()
586 printf("trapframe: %p, spsr=%08x\n", tf, tf->tf_spsr); in dab_fatal()
590 tf->tf_r0, tf->tf_r1, tf->tf_r2, tf->tf_r3); in dab_fatal()
592 tf->tf_r4, tf->tf_r5, tf->tf_r6, tf->tf_r7); in dab_fatal()
594 tf->tf_r8, tf->tf_r9, tf->tf_r10, tf->tf_r11); in dab_fatal()
595 printf("r12=%08x, ", tf->tf_r12); in dab_fatal()
597 if (TRAP_USERMODE(tf)) in dab_fatal()
599 tf->tf_usr_sp, tf->tf_usr_lr); in dab_fatal()
602 tf->tf_svc_sp, tf->tf_svc_lr); in dab_fatal()
603 printf(", pc =%08x\n\n", tf->tf_pc); in dab_fatal()
606 kdb_trap(T_FAULT, tf); in dab_fatal()
622 dab_align(trapframe_t *tf, u_int fsr, u_int far, struct lwp *l, ksiginfo_t *ksi) in dab_align() argument
625 if (!TRAP_USERMODE(tf)) in dab_align()
626 dab_fatal(tf, fsr, far, l, NULL); in dab_align()
632 (void) data_abort_fixup(tf, fsr, far, l); in dab_align()
641 KASSERTMSG(tf == lwp_trapframe(l), "tf %p vs %p", tf, lwp_trapframe(l)); in dab_align()
669 dab_buserr(trapframe_t *tf, u_int fsr, u_int far, struct lwp *l, in dab_buserr() argument
676 (tf->tf_spsr & PSR_MODE) == PSR_ABT32_MODE) { in dab_buserr()
683 tf->tf_spsr &= ~PSR_MODE; in dab_buserr()
691 if (tf != ((trapframe_t *)pcb->pcb_ksp) - 1) { in dab_buserr()
698 tf->tf_spsr |= PSR_SVC32_MODE; in dab_buserr()
710 tf->tf_spsr |= PSR_USR32_MODE; in dab_buserr()
711 tf->tf_pc = tf->tf_usr_lr; in dab_buserr()
713 tf->tf_spsr &= ~PSR_T_bit; in dab_buserr()
714 if (tf->tf_usr_lr & 1) in dab_buserr()
715 tf->tf_spsr |= PSR_T_bit; in dab_buserr()
726 KDASSERT(TRAP_USERMODE(tf) == 0); in dab_buserr()
727 tf->tf_r0 = EFAULT; in dab_buserr()
728 tf->tf_pc = (register_t)(intptr_t) pcb->pcb_onfault; in dab_buserr()
733 (void) data_abort_fixup(tf, fsr, far, l); in dab_buserr()
738 if (!TRAP_USERMODE(tf)) in dab_buserr()
739 dab_fatal(tf, fsr, far, l, NULL); in dab_buserr()
748 KASSERTMSG(tf == lwp_trapframe(l), "tf %p vs %p", tf, lwp_trapframe(l)); in dab_buserr()
754 prefetch_abort_fixup(trapframe_t *tf) in prefetch_abort_fixup() argument
760 error = cpu_prefetchabt_fixup(tf); in prefetch_abort_fixup()
768 TRAP_USERMODE(tf) ? "user" : "kernel"); in prefetch_abort_fixup()
770 if (tf->tf_spsr & PSR_T_bit) { in prefetch_abort_fixup()
772 tf->tf_pc, *((uint16 *)(tf->tf_pc & ~1)), in prefetch_abort_fixup()
773 *((uint16 *)((tf->tf_pc + 2) & ~1))); in prefetch_abort_fixup()
778 printf("pc = 0x%08x, opcode 0x%08x, insn = ", tf->tf_pc, in prefetch_abort_fixup()
779 *((u_int *)tf->tf_pc)); in prefetch_abort_fixup()
781 disassemble(tf->tf_pc); in prefetch_abort_fixup()
784 if (!TRAP_USERMODE(tf)) in prefetch_abort_fixup()
785 dab_fatal(tf, 0, tf->tf_pc, NULL, NULL); in prefetch_abort_fixup()
805 prefetch_abort_handler(trapframe_t *tf) in prefetch_abort_handler() argument
822 user = TRAP_USERMODE(tf) != 0; in prefetch_abort_handler()
829 KASSERT(!user || VALID_PSR(tf->tf_spsr)); in prefetch_abort_handler()
831 if (__predict_true((tf->tf_spsr & I32_bit) != I32_bit)) in prefetch_abort_handler()
832 restore_interrupts(tf->tf_spsr & IF32_bits); in prefetch_abort_handler()
834 if (__predict_true((tf->tf_spsr & IF32_bits) != IF32_bits)) in prefetch_abort_handler()
835 restore_interrupts(tf->tf_spsr & IF32_bits); in prefetch_abort_handler()
839 switch (prefetch_abort_fixup(tf)) { in prefetch_abort_handler()
841 KASSERT(!TRAP_USERMODE(tf) || VALID_PSR(tf->tf_spsr)); in prefetch_abort_handler()
848 ksi.ksi_addr = (uint32_t *)(intptr_t) tf->tf_pc; in prefetch_abort_handler()
849 KASSERTMSG(tf == lwp_trapframe(l), "tf %p vs %p", tf, in prefetch_abort_handler()
858 dab_fatal(tf, 0, tf->tf_pc, NULL, NULL); in prefetch_abort_handler()
861 fault_pc = tf->tf_pc; in prefetch_abort_handler()
862 KASSERTMSG(tf == lwp_trapframe(l), "tf %p vs %p", tf, lwp_trapframe(l)); in prefetch_abort_handler()
864 fault_pc, (uintptr_t)l, (uintptr_t)tf, 0); in prefetch_abort_handler()
897 dab_fatal(tf, 0, tf->tf_pc, NULL, NULL); in prefetch_abort_handler()
925 call_trapsignal(l, tf, &ksi); in prefetch_abort_handler()
932 if ((tf->tf_spsr & PSR_T_bit) && in prefetch_abort_handler()
934 THUMB_32BIT(*(uint16_t *)tf->tf_pc)) { in prefetch_abort_handler()
935 fault_pc = tf->tf_pc + THUMB_INSN_SIZE; in prefetch_abort_handler()
940 KASSERT(!TRAP_USERMODE(tf) || VALID_PSR(tf->tf_spsr)); in prefetch_abort_handler()