Annotation of sys/arch/macppc/macppc/db_interface.c, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: db_interface.c,v 1.7 2003/10/15 17:50:16 drahn Exp $ */
! 2: /* $NetBSD: db_interface.c,v 1.12 2001/07/22 11:29:46 wiz Exp $ */
! 3:
! 4: #include <sys/param.h>
! 5: #include <sys/proc.h>
! 6: #include <sys/systm.h>
! 7:
! 8: #include <dev/cons.h>
! 9:
! 10: #include <machine/db_machdep.h>
! 11: #include <ddb/db_extern.h>
! 12:
! 13: int ddb_trap_glue(struct trapframe *frame); /* called from locore */
! 14:
! 15: void
! 16: Debugger()
! 17: {
! 18: ddb_trap();
! 19: }
! 20:
! 21: int
! 22: ddb_trap_glue(struct trapframe *frame)
! 23: {
! 24: if (!(frame->srr1 & PSL_PR)
! 25: && (frame->exc == EXC_TRC
! 26: || (frame->exc == EXC_PGM && (frame->srr1 & 0x20000))
! 27: || frame->exc == EXC_BPT)) {
! 28:
! 29: bcopy(frame->fixreg, DDB_REGS->tf.fixreg,
! 30: 32 * sizeof(u_int32_t));
! 31: DDB_REGS->tf.srr0 = frame->srr0;
! 32: DDB_REGS->tf.srr1 = frame->srr1;
! 33:
! 34: cnpollc(TRUE);
! 35: db_trap(T_BREAKPOINT, 0);
! 36: cnpollc(FALSE);
! 37:
! 38: bcopy(DDB_REGS->tf.fixreg, frame->fixreg,
! 39: 32 * sizeof(u_int32_t));
! 40:
! 41: return 1;
! 42: }
! 43: return 0;
! 44: }
CVSweb