Home | History | Annotate | Download | only in arm32

Lines Matching refs:tf

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