Date: Sun, 2 May 2004 16:04:09 -0700 (PDT) From: Marcel Moolenaar <marcel@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 52104 for review Message-ID: <200405022304.i42N49n6003196@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=52104 Change 52104 by marcel@marcel_nfs on 2004/05/02 16:03:21 Fix continuation after kdb_enter. Breakpoints are broken, but they are also broken on HEAD (i.e. we break into the debugger, but can't continue after it). Single stepping does not work yet. But again, this is no different than HEAD. Affected files ... .. //depot/projects/gdb/sys/sparc64/include/kdb.h#2 edit .. //depot/projects/gdb/sys/sparc64/sparc64/trap.c#5 edit Differences ... ==== //depot/projects/gdb/sys/sparc64/include/kdb.h#2 (text+ko) ==== @@ -45,7 +45,6 @@ kdb_cpu_trap(int vector, int _) { flushw(); - TF_DONE(kdb_frame); } #endif /* _MACHINE_KDB_H_ */ ==== //depot/projects/gdb/sys/sparc64/sparc64/trap.c#5 (text+ko) ==== @@ -242,7 +242,6 @@ (TRAPF_USERMODE(tf) ? "user" : "kernel"), rdpr(pil)); atomic_add_int(&cnt.v_trap, 1); - td->td_last_frame = tf; if ((tf->tf_tstate & TSTATE_PRIV) == 0) { KASSERT(td != NULL, ("trap: curthread NULL")); @@ -251,6 +250,7 @@ p = td->td_proc; sticks = td->td_sticks; td->td_frame = tf; + td->td_last_frame = tf; if (td->td_ucred != p->p_ucred) cred_update_thread(td); @@ -298,11 +298,20 @@ KASSERT((tf->tf_type & T_KERNEL) != 0, ("trap: kernel trap isn't")); + if (kdb_active) { + kdb_trap(tf->tf_type, 0, tf); + TF_DONE(tf); + return; + } + + td->td_last_frame = tf; + switch (tf->tf_type & ~T_KERNEL) { #ifdef KDB case T_BREAKPOINT: case T_KSTACK_FAULT: error = (kdb_trap(tf->tf_type, 0, tf) == 0); + TF_DONE(tf); break; #ifdef notyet case T_PA_WATCHPOINT:
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200405022304.i42N49n6003196>