From owner-p4-projects@FreeBSD.ORG Sat Apr 3 19:33:33 2004 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id C111016A4D0; Sat, 3 Apr 2004 19:33:32 -0800 (PST) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 9B94A16A4CE for ; Sat, 3 Apr 2004 19:33:32 -0800 (PST) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 9464B43D46 for ; Sat, 3 Apr 2004 19:33:32 -0800 (PST) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.10/8.12.10) with ESMTP id i343XWGe061621 for ; Sat, 3 Apr 2004 19:33:32 -0800 (PST) (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.10/8.12.10/Submit) id i343XWR8061618 for perforce@freebsd.org; Sat, 3 Apr 2004 19:33:32 -0800 (PST) (envelope-from marcel@freebsd.org) Date: Sat, 3 Apr 2004 19:33:32 -0800 (PST) Message-Id: <200404040333.i343XWR8061618@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to marcel@freebsd.org using -f From: Marcel Moolenaar To: Perforce Change Reviews Subject: PERFORCE change 50302 for review X-BeenThere: p4-projects@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: p4 projects tree changes List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 04 Apr 2004 03:33:33 -0000 http://perforce.freebsd.org/chv.cgi?CH=50302 Change 50302 by marcel@marcel_nfs on 2004/04/03 19:33:17 We don't set tf_esp and tf_ss when we were already in kernel mode. We don't fixup the trapframe. We deal with it when we return the register values in gdb_cpu_getreg(). It's easier because it it works when we switch threads. Affected files ... .. //depot/projects/gdb/sys/i386/i386/gdb_machdep.c#6 edit Differences ... ==== //depot/projects/gdb/sys/i386/i386/gdb_machdep.c#6 (text+ko) ==== @@ -45,6 +45,7 @@ void * gdb_cpu_getreg(int regnum, size_t *regsz) { + static register_t synth; struct trapframe *tf = kdb_frame; *regsz = gdb_cpu_regsz(regnum); @@ -53,16 +54,21 @@ case 1: return (&tf->tf_ecx); case 2: return (&tf->tf_edx); case 3: return (&tf->tf_ebx); - case 4: return (&tf->tf_esp); case 5: return (&tf->tf_ebp); case 6: return (&tf->tf_esi); case 7: return (&tf->tf_edi); case 8: return (&tf->tf_eip); case 9: return (&tf->tf_eflags); case 10: return (&tf->tf_cs); - case 11: return (&tf->tf_ss); case 12: return (&tf->tf_ds); case 13: return (&tf->tf_es); + case 4: + synth = (!ISPL(tf->tf_cs)) ? + (int)&(kdb_thread->td_frame->tf_esp) : tf->tf_esp; + return (&synth); + case 11: + synth = (!ISPL(tf->tf_cs)) ? rss() : tf->tf_ss; + return (&synth); } return (NULL); }