From owner-p4-projects@FreeBSD.ORG Fri May 9 22:27:51 2003 Return-Path: Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id CF55E37B404; Fri, 9 May 2003 22:27:50 -0700 (PDT) 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 6CAB437B401 for ; Fri, 9 May 2003 22:27:50 -0700 (PDT) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id E67E143FBF for ; Fri, 9 May 2003 22:27:49 -0700 (PDT) (envelope-from marcel@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.6/8.12.6) with ESMTP id h4A5Rn0U032052 for ; Fri, 9 May 2003 22:27:49 -0700 (PDT) (envelope-from marcel@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.6/8.12.6/Submit) id h4A5RnCq032049 for perforce@freebsd.org; Fri, 9 May 2003 22:27:49 -0700 (PDT) Date: Fri, 9 May 2003 22:27:49 -0700 (PDT) Message-Id: <200305100527.h4A5RnCq032049@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 30911 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: Sat, 10 May 2003 05:27:52 -0000 http://perforce.freebsd.org/chv.cgi?CH=30911 Change 30911 by marcel@marcel_nfs on 2003/05/09 22:27:32 Really fix the nat computation. There was a bug in the unwinder that confused me. While here, don't return garbage for out-of- frame registers. Complain instead... Affected files ... .. //depot/projects/ia64_epc/sys/ia64/ia64/db_interface.c#8 edit Differences ... ==== //depot/projects/ia64_epc/sys/ia64/ia64/db_interface.c#8 (text+ko) ==== @@ -234,8 +234,8 @@ bsp = ddb_regs.tf_special.bspstore + ddb_regs.tf_special.ndirty; regno = (db_expr_t)vp->valuep - 32; - sof = ddb_regs.tf_special.cfm & 0x7f; - nats = (((sof - regno) << 3) + 62 - ((bsp >> 3) & 0x3f)) / 63; + sof = (int)(ddb_regs.tf_special.cfm & 0x7f); + nats = (sof - regno + 63 - ((int)(bsp >> 3) & 0x3f)) / 63; reg = (void*)(bsp - ((sof - regno + nats) << 3)); @@ -465,18 +465,16 @@ if (regno >= 14 && regno <= 31) return ((®s->tf_scratch.gr14)[regno - 14]); - if (regno > 0 && regno < 128) { + sof = (int)(regs->tf_special.cfm & 0x7f); + if (regno >= 32 && regno < sof + 32) { bsp = regs->tf_special.bspstore + regs->tf_special.ndirty; regno -= 32; - sof = regs->tf_special.cfm & 0x7f; - nats = (((sof - regno) << 3) + 62 - ((bsp >> 3) & 0x3f)) / 63; + nats = (sof - regno + 63 - ((int)(bsp >> 3) & 0x3f)) / 63; rsp = (void*)(bsp - ((sof - regno + nats) << 3)); - if (regno < sof) - return (*rsp); - return (0xdeadbeefdeadbeef); + return (*rsp); } - db_printf(" **** STRANGE REGISTER NUMBER %d **** ", regno + 32); + db_printf(" **** STRANGE REGISTER NUMBER %d **** ", regno); return (0); }