From patchwork Fri Dec 9 16:07:16 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yao Qi X-Patchwork-Id: 18327 Received: (qmail 57176 invoked by alias); 9 Dec 2016 16:07:45 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Delivered-To: mailing list gdb-patches@sourceware.org Received: (qmail 57164 invoked by uid 89); 9 Dec 2016 16:07:44 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.6 required=5.0 tests=AWL, BAYES_00, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE, SPF_PASS, UNWANTED_LANGUAGE_BODY autolearn=ham version=3.3.2 spammy=Hx-spam-relays-external:74.125.82.66, H*RU:74.125.82.66 X-HELO: mail-wm0-f66.google.com Received: from mail-wm0-f66.google.com (HELO mail-wm0-f66.google.com) (74.125.82.66) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 09 Dec 2016 16:07:34 +0000 Received: by mail-wm0-f66.google.com with SMTP id m203so4734398wma.3 for ; Fri, 09 Dec 2016 08:07:33 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:date:from:to:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to:user-agent; bh=4sypVuKG67hn4+h3FrM/LQVJ0pRANTsghmI9qmkLWpw=; b=HHtYJkXDk8MNcBvixtrhCQW0SmCAX0NU8A0Fz7SlNx7DSuCR56+rqy0O6x7KGXRsXT IFLA6EX21yMjIQFIamSMlbRdOgEhaTUPSAL5rfHJ6DFLAejlO2zUi9My2oQT43D6qxKZ GaPH0odLYVbUkkS45+QswkZya7zGPe2eiwpri7ub35aoaxaX6FVEFVkJEztF3A3xeZyg t6IlSRkaztoAjAINHsetDTEsmUPre2tQZquDsCPwmkYsU3sqlOk0PwQKkZptcMD7b6AM MvPogRY8VMAKu60TZ3JcXqHRAsP095CCHXN2qqCB7ACb1w7RpN0GpgsbRazog7KOeJRx 4csw== X-Gm-Message-State: AKaTC00lmOv/Fw7OARkNqoVuWI10l0YcFWTyBZzuiKzaDGo1RfRimt8qI/7+lwP7U9zQwA== X-Received: by 10.28.209.7 with SMTP id i7mr7763905wmg.62.1481299651855; Fri, 09 Dec 2016 08:07:31 -0800 (PST) Received: from E107787-LIN (gcc1-power7.osuosl.org. [140.211.15.137]) by smtp.gmail.com with ESMTPSA id b15sm21302214wma.5.2016.12.09.08.07.30 for (version=TLS1_2 cipher=AES128-SHA bits=128/128); Fri, 09 Dec 2016 08:07:31 -0800 (PST) Date: Fri, 9 Dec 2016 16:07:16 +0000 From: Yao Qi To: gdb-patches@sourceware.org Subject: Re: [PATCH mainline/7.12.1] Create tdep->rx_psw_type and tdep->rx_fpsw_type lazily Message-ID: <20161209160716.GI13661@E107787-LIN> References: <1481288060-10706-1-git-send-email-yao.qi@linaro.org> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <1481288060-10706-1-git-send-email-yao.qi@linaro.org> User-Agent: Mutt/1.5.21 (2010-09-15) X-IsSubscribed: yes On 16-12-09 12:54:20, Yao Qi wrote: > gdb: > > 2016-12-09 Yao Qi > > PR tdep/20954 > * rx-tdep.c (rx_psw_type): New function. > (rx_fpsw_type): New function. > (rx_register_type): Call rx_psw_type and rx_fpsw_type. > (rx_gdbarch_init): Move code to rx_psw_type and > rx_fpsw_type. Patch above is pushed into 7.12 branch. Patch is updated for gdb.base/all-architectures.exp.in, and pushed into master. diff --git a/gdb/rx-tdep.c b/gdb/rx-tdep.c index 6b8d8d5..eb3dc47 100644 --- a/gdb/rx-tdep.c +++ b/gdb/rx-tdep.c @@ -150,6 +150,66 @@ rx_register_name (struct gdbarch *gdbarch, int regnr) return reg_names[regnr]; } +/* Construct the flags type for PSW and BPSW. */ + +static struct type * +rx_psw_type (struct gdbarch *gdbarch) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + if (tdep->rx_psw_type == NULL) + { + tdep->rx_psw_type = arch_flags_type (gdbarch, "rx_psw_type", 4); + append_flags_type_flag (tdep->rx_psw_type, 0, "C"); + append_flags_type_flag (tdep->rx_psw_type, 1, "Z"); + append_flags_type_flag (tdep->rx_psw_type, 2, "S"); + append_flags_type_flag (tdep->rx_psw_type, 3, "O"); + append_flags_type_flag (tdep->rx_psw_type, 16, "I"); + append_flags_type_flag (tdep->rx_psw_type, 17, "U"); + append_flags_type_flag (tdep->rx_psw_type, 20, "PM"); + append_flags_type_flag (tdep->rx_psw_type, 24, "IPL0"); + append_flags_type_flag (tdep->rx_psw_type, 25, "IPL1"); + append_flags_type_flag (tdep->rx_psw_type, 26, "IPL2"); + append_flags_type_flag (tdep->rx_psw_type, 27, "IPL3"); + } + return tdep->rx_psw_type; +} + +/* Construct flags type for FPSW. */ + +static struct type * +rx_fpsw_type (struct gdbarch *gdbarch) +{ + struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); + + if (tdep->rx_psw_type == NULL) + { + tdep->rx_fpsw_type = arch_flags_type (gdbarch, "rx_fpsw_type", 4); + append_flags_type_flag (tdep->rx_fpsw_type, 0, "RM0"); + append_flags_type_flag (tdep->rx_fpsw_type, 1, "RM1"); + append_flags_type_flag (tdep->rx_fpsw_type, 2, "CV"); + append_flags_type_flag (tdep->rx_fpsw_type, 3, "CO"); + append_flags_type_flag (tdep->rx_fpsw_type, 4, "CZ"); + append_flags_type_flag (tdep->rx_fpsw_type, 5, "CU"); + append_flags_type_flag (tdep->rx_fpsw_type, 6, "CX"); + append_flags_type_flag (tdep->rx_fpsw_type, 7, "CE"); + append_flags_type_flag (tdep->rx_fpsw_type, 8, "DN"); + append_flags_type_flag (tdep->rx_fpsw_type, 10, "EV"); + append_flags_type_flag (tdep->rx_fpsw_type, 11, "EO"); + append_flags_type_flag (tdep->rx_fpsw_type, 12, "EZ"); + append_flags_type_flag (tdep->rx_fpsw_type, 13, "EU"); + append_flags_type_flag (tdep->rx_fpsw_type, 14, "EX"); + append_flags_type_flag (tdep->rx_fpsw_type, 26, "FV"); + append_flags_type_flag (tdep->rx_fpsw_type, 27, "FO"); + append_flags_type_flag (tdep->rx_fpsw_type, 28, "FZ"); + append_flags_type_flag (tdep->rx_fpsw_type, 29, "FU"); + append_flags_type_flag (tdep->rx_fpsw_type, 30, "FX"); + append_flags_type_flag (tdep->rx_fpsw_type, 31, "FS"); + } + + return tdep->rx_fpsw_type; +} + /* Implement the "register_type" gdbarch method. */ static struct type * rx_register_type (struct gdbarch *gdbarch, int reg_nr) @@ -159,9 +219,9 @@ rx_register_type (struct gdbarch *gdbarch, int reg_nr) if (reg_nr == RX_PC_REGNUM) return builtin_type (gdbarch)->builtin_func_ptr; else if (reg_nr == RX_PSW_REGNUM || reg_nr == RX_BPSW_REGNUM) - return tdep->rx_psw_type; + return rx_psw_type (gdbarch); else if (reg_nr == RX_FPSW_REGNUM) - return tdep->rx_fpsw_type; + return rx_fpsw_type (gdbarch); else if (reg_nr == RX_ACC_REGNUM) return builtin_type (gdbarch)->builtin_unsigned_long_long; else @@ -1045,45 +1105,6 @@ rx_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches) gdbarch = gdbarch_alloc (&info, tdep); tdep->elf_flags = elf_flags; - /* Initialize the flags type for PSW and BPSW. */ - - tdep->rx_psw_type = arch_flags_type (gdbarch, "rx_psw_type", 4); - append_flags_type_flag (tdep->rx_psw_type, 0, "C"); - append_flags_type_flag (tdep->rx_psw_type, 1, "Z"); - append_flags_type_flag (tdep->rx_psw_type, 2, "S"); - append_flags_type_flag (tdep->rx_psw_type, 3, "O"); - append_flags_type_flag (tdep->rx_psw_type, 16, "I"); - append_flags_type_flag (tdep->rx_psw_type, 17, "U"); - append_flags_type_flag (tdep->rx_psw_type, 20, "PM"); - append_flags_type_flag (tdep->rx_psw_type, 24, "IPL0"); - append_flags_type_flag (tdep->rx_psw_type, 25, "IPL1"); - append_flags_type_flag (tdep->rx_psw_type, 26, "IPL2"); - append_flags_type_flag (tdep->rx_psw_type, 27, "IPL3"); - - /* Initialize flags type for FPSW. */ - - tdep->rx_fpsw_type = arch_flags_type (gdbarch, "rx_fpsw_type", 4); - append_flags_type_flag (tdep->rx_fpsw_type, 0, "RM0"); - append_flags_type_flag (tdep->rx_fpsw_type, 1, "RM1"); - append_flags_type_flag (tdep->rx_fpsw_type, 2, "CV"); - append_flags_type_flag (tdep->rx_fpsw_type, 3, "CO"); - append_flags_type_flag (tdep->rx_fpsw_type, 4, "CZ"); - append_flags_type_flag (tdep->rx_fpsw_type, 5, "CU"); - append_flags_type_flag (tdep->rx_fpsw_type, 6, "CX"); - append_flags_type_flag (tdep->rx_fpsw_type, 7, "CE"); - append_flags_type_flag (tdep->rx_fpsw_type, 8, "DN"); - append_flags_type_flag (tdep->rx_fpsw_type, 10, "EV"); - append_flags_type_flag (tdep->rx_fpsw_type, 11, "EO"); - append_flags_type_flag (tdep->rx_fpsw_type, 12, "EZ"); - append_flags_type_flag (tdep->rx_fpsw_type, 13, "EU"); - append_flags_type_flag (tdep->rx_fpsw_type, 14, "EX"); - append_flags_type_flag (tdep->rx_fpsw_type, 26, "FV"); - append_flags_type_flag (tdep->rx_fpsw_type, 27, "FO"); - append_flags_type_flag (tdep->rx_fpsw_type, 28, "FZ"); - append_flags_type_flag (tdep->rx_fpsw_type, 29, "FU"); - append_flags_type_flag (tdep->rx_fpsw_type, 30, "FX"); - append_flags_type_flag (tdep->rx_fpsw_type, 31, "FS"); - set_gdbarch_num_regs (gdbarch, RX_NUM_REGS); set_gdbarch_num_pseudo_regs (gdbarch, 0); set_gdbarch_register_name (gdbarch, rx_register_name); diff --git a/gdb/testsuite/gdb.base/all-architectures.exp.in b/gdb/testsuite/gdb.base/all-architectures.exp.in index 94bee2e..a33749a 100644 --- a/gdb/testsuite/gdb.base/all-architectures.exp.in +++ b/gdb/testsuite/gdb.base/all-architectures.exp.in @@ -209,13 +209,6 @@ with_test_prefix "tests" { continue } - if {$arch == "rx"} { - if {$want_tests_messages} { - kfail "set architecture rx" "gdb/20954" - } - continue - } - if {$arch == "auto"} { continue }