From 7fa1b2c8dac00eefadb1f0d459fd716027aa1b67 Mon Sep 17 00:00:00 2001 From: Olivier Hainque Date: Wed, 4 Nov 2020 08:05:06 +0000 Subject: [PATCH] Handle use of r18 as a TCB pointer on aarch64-vxworks Pick an alternate static chain regnum and document that the port needs to be configured to issue -ffixed-r18 by default. The current definition of TARGET_OS_USES_R18 is not honored by the common part of the back-end. 2020-11-04 Olivier Hainque gcc/ * config/aarch64/aarch64-vxworks.h (TARGET_OS_USES_R18): Remove definition. (STATIC_CHAIN_REGNUM): Redefine to 9. --- gcc/config/aarch64/aarch64-vxworks.h | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/gcc/config/aarch64/aarch64-vxworks.h b/gcc/config/aarch64/aarch64-vxworks.h index e22f2f5d999..9e172c1e64c 100644 --- a/gcc/config/aarch64/aarch64-vxworks.h +++ b/gcc/config/aarch64/aarch64-vxworks.h @@ -60,12 +60,14 @@ along with GCC; see the file COPYING3. If not see #undef STACK_CHECK_PROTECT #define STACK_CHECK_PROTECT 16384 -/* The VxWorks environment on aarch64 is llvm-based only, uses R18 as - a TCB pointer. */ - +/* The VxWorks environment on aarch64 is llvm-based. */ #undef VXWORKS_PERSONALITY #define VXWORKS_PERSONALITY "llvm" -#undef TARGET_OS_USES_R18 -#define TARGET_OS_USES_R18 1 +/* VxWorks uses R18 as a TCB pointer. We must pick something else as + the static chain and R18 needs to be claimed "fixed". Until we + arrange to override the common parts of the port family to + acknowledge the latter, configure --with-specs="-ffixed-r18". */ +#undef STATIC_CHAIN_REGNUM +#define STATIC_CHAIN_REGNUM 9 -- 2.30.2