static __inline int prefetch_abort_fixup(trapframe_t *tf, struct ksig *ksig) { #ifdef CPU_ABORT_FIXUP_REQUIRED int error; /* Call the cpu specific prefetch abort fixup routine */ error = cpu_prefetchabt_fixup(tf); if (__predict_true(error != ABORT_FIXUP_FAILED)) return (error); /* * Oops, couldn't fix up the instruction */ printf( "prefetch_abort_fixup: fixup for %s mode prefetch abort failed.\n", TRAP_USERMODE(tf) ? "user" : "kernel"); printf("pc = 0x%08x, opcode 0x%08x, insn = ", tf->tf_pc, *((u_int *)tf->tf_pc)); disassemble(tf->tf_pc); /* Die now if this happened in kernel mode */ if (!TRAP_USERMODE(tf)) dab_fatal(tf, 0, tf->tf_pc, NULL, ksig); return (error); #else return (ABORT_FIXUP_OK); #endif /* CPU_ABORT_FIXUP_REQUIRED */ }
static inline int prefetch_abort_fixup(trapframe_t *tf) { #ifdef CPU_ABORT_FIXUP_REQUIRED int error; /* Call the CPU specific prefetch abort fixup routine */ error = cpu_prefetchabt_fixup(tf); if (__predict_true(error != ABORT_FIXUP_FAILED)) return (error); /* * Oops, couldn't fix up the instruction */ printf("%s: fixup for %s mode prefetch abort failed.\n", __func__, TRAP_USERMODE(tf) ? "user" : "kernel"); #ifdef THUMB_CODE if (tf->tf_spsr & PSR_T_bit) { printf("pc = 0x%08x, opcode 0x%04x, 0x%04x, insn = ", tf->tf_pc, *((uint16 *)(tf->tf_pc & ~1)), *((uint16 *)((tf->tf_pc + 2) & ~1))); } else #endif { printf("pc = 0x%08x, opcode 0x%08x, insn = ", tf->tf_pc, *((u_int *)tf->tf_pc)); } disassemble(tf->tf_pc); /* Die now if this happened in kernel mode */ if (!TRAP_USERMODE(tf)) dab_fatal(tf, 0, tf->tf_pc, NULL, NULL); return (error); #else return (ABORT_FIXUP_OK); #endif /* CPU_ABORT_FIXUP_REQUIRED */ }