From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24797 invoked by alias); 9 Nov 2007 02:12:38 -0000 Received: (qmail 24789 invoked by uid 22791); 9 Nov 2007 02:12:37 -0000 X-Spam-Check-By: sourceware.org Received: from hq.tensilica.com (HELO mailapp.tensilica.com) (65.205.227.29) by sourceware.org (qpsmtpd/0.31) with ESMTP; Fri, 09 Nov 2007 02:12:35 +0000 Received: from localhost ([127.0.0.1]) by mailapp.tensilica.com with esmtp (Exim 4.34) id 1IqJMP-0005wT-PA; Thu, 08 Nov 2007 18:12:41 -0800 Received: from mailapp.tensilica.com ([127.0.0.1]) by localhost (mailapp [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 22642-03; Thu, 8 Nov 2007 18:12:41 -0800 (PST) Received: from maxim_fc5.hq.tensilica.com ([192.168.11.68]) by mailapp.tensilica.com with esmtp (Exim 4.34) id 1IqJMN-0005w0-SA; Thu, 08 Nov 2007 18:12:39 -0800 Message-ID: <4733C204.9040005@hq.tensilica.com> Date: Fri, 09 Nov 2007 02:12:00 -0000 From: Maxim Grigoriev User-Agent: Thunderbird 1.5.0.9 (X11/20070102) MIME-Version: 1.0 To: Ulrich Weigand CC: Markus Deuling , GDB Patches Subject: Re: [rfc] [05/05] Get rid of current_gdbarch in xtensa References: <200711082155.lA8LtPjO001820@d12av02.megacenter.de.ibm.com> In-Reply-To: <200711082155.lA8LtPjO001820@d12av02.megacenter.de.ibm.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2007-11/txt/msg00190.txt.bz2 Ulrich Weigand wrote: > Markus Deuling wrote: > >> -#define AREG_NUMBER(r, wb) \ >> - ((((r) - (gdbarch_tdep (current_gdbarch)->a0_base + 0) + (((wb) \ >> - & ((gdbarch_tdep (current_gdbarch)->num_aregs - 1) >> 2)) << WB_SHIFT)) & \ >> - (gdbarch_tdep (current_gdbarch)->num_aregs - 1)) \ >> - + gdbarch_tdep (current_gdbarch)->ar_base) >> >> +/* Convert a live Ax register number to the corresponding Areg number. */ >> +static int >> +areg_number (struct gdbarch *gdbarch, int regnum, ULONGEST wb) >> +{ >> + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); >> + int areg; >> + >> + areg = regnum - tdep->a0_base + tdep->ar_base; >> + areg += (wb & ((tdep->num_aregs - 1) >> 2)) << WB_SHIFT; >> + areg &= tdep->num_aregs - 1; >> + >> + return areg; >> +} >> > > The function does not look equivalent to the macro, that should be > > areg = regnum - tdep->a0_base; > areg += (wb & ((tdep->num_aregs - 1) >> 2)) << WB_SHIFT; > areg &= tdep->num_aregs - 1; > > return areg + tdep->ar_base; > Ulrich is right. The function should look like he suggested : static int areg_number (struct gdbarch *gdbarch, int regnum, ULONGEST wb) { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); int areg; areg = regnum - tdep->a0_base; areg += (wb & ((tdep->num_aregs - 1) >> 2)) << WB_SHIFT; areg &= tdep->num_aregs - 1; return areg + tdep->ar_base; } I applied Markus's patch, corrected areg_number(), and ran GDB dejagnu tests. No regression has been detected. -- Maxim