public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
From: Xi Ruoyao <xry111@mengyan1223.wang>
To: Chenghua Xu <xuchenghua@loongson.cn>, gcc-patches@gcc.gnu.org
Cc: chenglulu@loongson.cn
Subject: Re: [PATCH v1 3/7] LoongArch Port: libgcc
Date: Sat, 06 Nov 2021 17:46:22 +0800	[thread overview]
Message-ID: <c35cdfe22ed789a1aaaed2ccadcd7f0d6642f1c6.camel@mengyan1223.wang> (raw)
In-Reply-To: <20211106084056.2506166-4-xuchenghua@loongson.cn>

On Sat, 2021-11-06 at 16:40 +0800, Chenghua Xu wrote:

/* snip */

> diff --git a/libgcc/config/loongarch/crti.S b/libgcc/config/loongarch/crti.S
> new file mode 100644
> index 00000000000..bac029874b5
> --- /dev/null
> +++ b/libgcc/config/loongarch/crti.S
> @@ -0,0 +1,43 @@
> +/* Copyright (C) 2021 Free Software Foundation, Inc.
> +
> +This file is part of GCC.
> +
> +GCC is free software; you can redistribute it and/or modify it under
> +the terms of the GNU General Public License as published by the Free
> +Software Foundation; either version 3, or (at your option) any later
> +version.
> +
> +GCC is distributed in the hope that it will be useful, but WITHOUT ANY
> +WARRANTY; without even the implied warranty of MERCHANTABILITY or
> +FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
> +for more details.
> +
> +Under Section 7 of GPL version 3, you are granted additional
> +permissions described in the GCC Runtime Library Exception, version
> +3.1, as published by the Free Software Foundation.
> +
> +You should have received a copy of the GNU General Public License and
> +a copy of the GCC Runtime Library Exception along with this program;
> +see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
> +<http://www.gnu.org/licenses/>.  */
> +
> +/* 4 slots for argument spill area.  1 for cpreturn, 1 for stack.
> +   Return spill offset of 8.  Aligned to 16 bytes for lp64.  */
> +
> +       .section .init,"ax",@progbits
> +       .globl  _init
> +       .type   _init,@function
> +_init:
> +       addi.d   $r3,$r3,-16
> +       st.d      $r1,$r3,8
> +       addi.d   $r3,$r3,16
> +       jirl    $r0,$r1,0
> +
> +       .section .fini,"ax",@progbits
> +       .globl  _fini
> +       .type   _fini,@function
> +_fini:
> +       addi.d   $r3,$r3,-16
> +       st.d      $r1,$r3,8
> +       addi.d   $r3,$r3,16
> +       jirl    $r0,$r1,0

There is some inconsistency of "tabs" or "spaces" between the
instruction and the operands.  Likewisely, other *.S files.

/* snip */

> diff --git a/libgcc/config/loongarch/linux-unwind.h b/libgcc/config/loongarch/linux-unwind.h
> new file mode 100644
> index 00000000000..8c9dfa56a6d
> --- /dev/null
> +++ b/libgcc/config/loongarch/linux-unwind.h
> @@ -0,0 +1,80 @@
> +/* DWARF2 EH unwinding support for LoongArch Linux.
> +   Copyright (C) 2021 Free Software Foundation, Inc.
> +
> +This file is part of GCC.
> +
> +GCC is free software; you can redistribute it and/or modify
> +it under the terms of the GNU General Public License as published by
> +the Free Software Foundation; either version 3, or (at your option)
> +any later version.
> +
> +GCC is distributed in the hope that it will be useful,
> +but WITHOUT ANY WARRANTY; without even the implied warranty of
> +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
> +GNU General Public License for more details.
> +
> +Under Section 7 of GPL version 3, you are granted additional
> +permissions described in the GCC Runtime Library Exception, version
> +3.1, as published by the Free Software Foundation.
> +
> +You should have received a copy of the GNU General Public License and
> +a copy of the GCC Runtime Library Exception along with this program;
> +see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
> +<http://www.gnu.org/licenses/>.  */
> +
> +#ifndef inhibit_libc
> +/* Do code reading to identify a signal frame, and set the frame
> +   state data appropriately.  See unwind-dw2.c for the structs.  */
> +
> +#include <signal.h>
> +#include <sys/syscall.h>
> +#include <sys/ucontext.h>
> +
> +#define MD_FALLBACK_FRAME_STATE_FOR loongarch_fallback_frame_state
> +
> +static _Unwind_Reason_Code
> +loongarch_fallback_frame_state (struct _Unwind_Context *context,
> +                               _Unwind_FrameState *fs)
> +{
> +  u_int32_t *pc = (u_int32_t *) context->ra;
> +  struct sigcontext *sc;
> +  _Unwind_Ptr new_cfa;
> +  int i;
> +
> +  /* 03822c0b dli a7, 0x8b (sigreturn)  */
> +  /* 002b0000 syscall 0  */
> +  if (pc[1] != 0x002b0000)
> +    return _URC_END_OF_STACK;
> +  if (pc[0] == 0x03822c0b)
> +    {
> +      struct rt_sigframe
> +      {
> +       siginfo_t info;
> +       ucontext_t uc;
> +      } *rt_ = context->cfa;
> +      sc = &rt_->uc.uc_mcontext;
> +    }
> +  else
> +    return _URC_END_OF_STACK;
> +
> +  new_cfa = (_Unwind_Ptr) sc;
> +  fs->regs.cfa_how = CFA_REG_OFFSET;
> +  fs->regs.cfa_reg = __LIBGCC_STACK_POINTER_REGNUM__;
> +  fs->regs.cfa_offset = new_cfa - (_Unwind_Ptr) context->cfa;
> +
> +  for (i = 0; i < 32; i++)
> +    {
> +      fs->regs.reg[i].how = REG_SAVED_OFFSET;
> +      fs->regs.reg[i].loc.offset = (_Unwind_Ptr) & (sc->sc_regs[i]) - new_cfa;

There shouldn't be a space between the unary & and its operand.  And the
braces around sc->sc_regs[i] seems unnecessary.

In this particular case, the space makes it really looking similar to a
bitwise and expression...

  reply	other threads:[~2021-11-06  9:46 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-11-06  8:40 [PATCH v1 0/7] Add LoongArch support Chenghua Xu
2021-11-06  8:40 ` [PATCH v1 2/7] LoongArch Port: Regenerate gcc/configure Chenghua Xu
2021-11-06  8:40 ` [PATCH v1 3/7] LoongArch Port: libgcc Chenghua Xu
2021-11-06  9:46   ` Xi Ruoyao [this message]
2021-11-06  8:40 ` [PATCH v1 4/7] LoongArch Port: Regenerate libgcc/configure Chenghua Xu
2021-11-06  8:40 ` [PATCH v1 5/7] LoongArch Port: libgomp Chenghua Xu
2021-11-06  9:58   ` Xi Ruoyao
2021-11-06  8:40 ` [PATCH v1 6/7] LoongArch Port: gcc/testsuite Chenghua Xu
2021-11-06  9:51   ` Xi Ruoyao
2021-11-06  8:40 ` [PATCH v1 7/7] LoongArch Port: Regenerate configure Chenghua Xu
2021-11-06  9:18 ` [PATCH v1 0/7] Add LoongArch support Xi Ruoyao
     [not found] ` <20211106084056.2506166-2-xuchenghua@loongson.cn>
2021-11-08  2:30   ` [PATCH v1 1/7] LoongArch Port: gcc Chenghua Xu
2021-11-08 16:40     ` Xi Ruoyao
2021-11-08 23:14     ` Joseph Myers
2021-11-09 13:53       ` Xi Ruoyao
2021-11-09 15:52         ` Xi Ruoyao
2021-11-09 18:31           ` Xi Ruoyao

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=c35cdfe22ed789a1aaaed2ccadcd7f0d6642f1c6.camel@mengyan1223.wang \
    --to=xry111@mengyan1223.wang \
    --cc=chenglulu@loongson.cn \
    --cc=gcc-patches@gcc.gnu.org \
    --cc=xuchenghua@loongson.cn \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).