From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from loongson.cn (mail.loongson.cn [114.242.206.163]) by sourceware.org (Postfix) with ESMTP id 3CB5E3858D35; Tue, 9 May 2023 01:32:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 3CB5E3858D35 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=loongson.cn Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=loongson.cn Received: from loongson.cn (unknown [192.168.100.1]) by gateway (Coremail) with SMTP id _____8AxnOrCollkdM4GAA--.11114S3; Tue, 09 May 2023 09:32:50 +0800 (CST) Received: from [0.0.0.0] (unknown [192.168.100.1]) by localhost.localdomain (Coremail) with SMTP id AQAAf8BxWdLAollkBgBSAA--.16041S3; Tue, 09 May 2023 09:32:49 +0800 (CST) Subject: Re: [PATCH 2/5] backends: Add set_initial_registers_tid callback for LoongArch To: Mark Wielaard References: <1680836368-5373-1-git-send-email-tangyouling@loongson.cn> <1680836368-5373-3-git-send-email-tangyouling@loongson.cn> <20230508195744.GE11475@gnu.wildebeest.org> Cc: elfutils-devel@sourceware.org, Mark@sourceware.org, Wielaard@sourceware.org, Hengqi Chen , Liwei Ge From: Youling Tang Message-ID: Date: Tue, 9 May 2023 09:32:48 +0800 User-Agent: Mozilla/5.0 (X11; Linux mips64; rv:45.0) Gecko/20100101 Thunderbird/45.4.0 MIME-Version: 1.0 In-Reply-To: <20230508195744.GE11475@gnu.wildebeest.org> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-CM-TRANSID:AQAAf8BxWdLAollkBgBSAA--.16041S3 X-CM-SenderInfo: 5wdqw5prxox03j6o00pqjv00gofq/ X-Coremail-Antispam: 1Uk129KBjvJXoW7urW7Cw1xCr1xKFWfWrWDtwb_yoW8GrWfpF WFkF93tF4rCF4DKF47Xw13Z342kr95Ga4I9F13KryfAF15urZagFyUta4jyFn5GwsrCF4I vF10qw15WF15AFDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUj1kv1TuYvTs0mT0YCTnIWj qI5I8CrVACY4xI64kE6c02F40Ex7xfYxn0WfASr-VFAUDa7-sFnT9fnUUIcSsGvfJTRUUU bxAYFVCjjxCrM7AC8VAFwI0_Jr0_Gr1l1xkIjI8I6I8E6xAIw20EY4v20xvaj40_Wr0E3s 1l1IIY67AEw4v_JrI_Jryl8cAvFVAK0II2c7xJM28CjxkF64kEwVA0rcxSw2x7M28EF7xv wVC0I7IYx2IY67AKxVW8JVW5JwA2z4x0Y4vE2Ix0cI8IcVCY1x0267AKxVW8JVWxJwA2z4 x0Y4vEx4A2jsIE14v26F4j6r4UJwA2z4x0Y4vEx4A2jsIEc7CjxVAFwI0_Gr1j6F4UJwAS 0I0E0xvYzxvE52x082IY62kv0487Mc804VCY07AIYIkI8VC2zVCFFI0UMc02F40EFcxC0V AKzVAqx4xG6I80ewAv7VC0I7IYx2IY67AKxVWUXVWUAwAv7VC2z280aVAFwI0_Jr0_Gr1l Ox8S6xCaFVCjc4AY6r1j6r4UM4x0Y48IcVAKI48JMxk0xIA0c2IEe2xFo4CEbIxvr21l42 xK82IYc2Ij64vIr41l4I8I3I0E4IkC6x0Yz7v_Jr0_Gr1lx2IqxVAqx4xG67AKxVWUJVWU GwC20s026x8GjcxK67AKxVWUGVWUWwC2zVAF1VAY17CE14v26r126r1DMIIYrxkI7VAKI4 8JMIIF0xvE2Ix0cI8IcVAFwI0_Jr0_JF4lIxAIcVC0I7IYx2IY6xkF7I0E14v26r1j6r4U MIIF0xvE42xK8VAvwI8IcIk0rVWUJVWUCwCI42IY6I8E87Iv67AKxVWUJVW8JwCI42IY6I 8E87Iv6xkF7I0E14v26r1j6r4UYxBIdaVFxhVjvjDU0xZFpf9x07j1YL9UUUUU= X-Spam-Status: No, score=-7.8 required=5.0 tests=BAYES_00,KAM_DMARC_STATUS,NICE_REPLY_A,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Hi, Mark On 05/09/2023 03:57 AM, Mark Wielaard wrote: > Him > > On Fri, Apr 07, 2023 at 10:59:25AM +0800, Youling Tang wrote: >> This patch implements the set_initial_registers_tid hook for LoongArch. > > Looks good, but one question: > >> + /* Floating-point registers (only 64bits are used). */ >> + struct user_fp_struct fregs; >> + iovec.iov_base = &fregs; >> + iovec.iov_len = sizeof (fregs); >> + if (ptrace (PTRACE_GETREGSET, tid, NT_FPREGSET, &iovec) != 0) >> + return false; >> + >> + Dwarf_Word dwarf_fregs[32]; >> + for (int r = 0; r < 32; r++) >> + dwarf_fregs[r] = fregs.fpr[r] & 0xFFFFFFFF; > > The comment says 64bits, but the mask is for 32bits. > I assume the comment is wrong and the masking is deliberate? Thanks for pointing out that there is no need to mask the lower 32 bits here. It can be modified as follows, --- a/backends/loongarch_initreg.c +++ b/backends/loongarch_initreg.c @@ -79,11 +79,8 @@ loongarch_set_initial_registers_tid (pid_t tid __attribute__ ((unused)), if (ptrace (PTRACE_GETREGSET, tid, NT_FPREGSET, &iovec) != 0) return false; - Dwarf_Word dwarf_fregs[32]; - for (int r = 0; r < 32; r++) - dwarf_fregs[r] = fregs.fpr[r] & 0xFFFFFFFF; - - if (! setfunc (32, 32, dwarf_fregs, arg)) + /* $f0-$f31 */ + if (! setfunc (32, 32, &fregs.fpr[0], arg)) Do I need to send the v2 patchset again? Thanks, Youling. > > Cheers, > > Mark >