This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH 3/5] [ARC] Disable TP register when building for bare metal.
* Claudiu Zissulescu <Claudiu.Zissulescu@synopsys.com> [2017-03-20 12:43:28 +0100]:
> No need for thread pointer in bare metal toolchain. Use TP register normally.
>
> gcc/
> 2016-09-29 Claudiu Zissulescu <claziss@synopsys.com>
>
> * config/arc/elf.h (ARGET_ARC_TP_REGNO_DEFAULT): Define.
> * config/arc/linux.h (ARGET_ARC_TP_REGNO_DEFAULT): Likewise.
> * config/arc/arc.opt (mtp-regno): Use
> * ARGET_ARC_TP_REGNO_DEFAULT.
Looks fine. I've suggested some alternative phrasing for the comments
to make them read a little easier.
Thanks,
Andrew
> ---
> gcc/config/arc/arc.opt | 2 +-
> gcc/config/arc/elf.h | 5 +++++
> gcc/config/arc/linux.h | 4 ++++
> 3 files changed, 10 insertions(+), 1 deletion(-)
>
> diff --git a/gcc/config/arc/arc.opt b/gcc/config/arc/arc.opt
> index 17af736..6060ded 100644
> --- a/gcc/config/arc/arc.opt
> +++ b/gcc/config/arc/arc.opt
> @@ -469,7 +469,7 @@ EnumValue
> Enum(arc_fpu) String(fpud_all) Value(FPU_FPUD_ALL)
>
> mtp-regno=
> -Target RejectNegative Joined UInteger Var(arc_tp_regno) Init(25)
> +Target RejectNegative Joined UInteger Var(arc_tp_regno) Init(TARGET_ARC_TP_REGNO_DEFAULT)
> Specify thread pointer register number.
>
> mtp-regno=none
> diff --git a/gcc/config/arc/elf.h b/gcc/config/arc/elf.h
> index d2106c5..a6d6c05 100644
> --- a/gcc/config/arc/elf.h
> +++ b/gcc/config/arc/elf.h
> @@ -53,3 +53,8 @@ along with GCC; see the file COPYING3. If not see
> # define MULTILIB_DEFAULTS { "mcpu=" ARC_MULTILIB_CPU_DEFAULT }
> # endif
> #endif
> +
> +/* Bare-metal toolchains are not having a thread pointer register
> + set. */
/* Bare-metal toolchains do not need a thread pointer register. */
> +#undef TARGET_ARC_TP_REGNO_DEFAULT
> +#define TARGET_ARC_TP_REGNO_DEFAULT -1
> diff --git a/gcc/config/arc/linux.h b/gcc/config/arc/linux.h
> index 10c291c..1d10357 100644
> --- a/gcc/config/arc/linux.h
> +++ b/gcc/config/arc/linux.h
> @@ -74,3 +74,7 @@ along with GCC; see the file COPYING3. If not see
> /* We do not have any MULTILIB_OPTIONS specified, so there are no
> MULTILIB_DEFAULTS. */
> #undef MULTILIB_DEFAULTS
> +
> +/* Linux toolchains are using r25 as TLS register. */
/* Linux toolchains use r25 as the thread pointer register. */
> +#undef TARGET_ARC_TP_REGNO_DEFAULT
> +#define TARGET_ARC_TP_REGNO_DEFAULT 25
> --
> 1.9.1
>