summaryrefslogtreecommitdiff
path: root/libitm/config
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2020-09-28 16:42:33 +0930
committerAlan Modra <amodra@gmail.com>2020-10-01 10:34:48 +0930
commit2dd7b93778d551b6981c8086ecb38e26f677bd2b (patch)
tree513fb58bfdd39b9e1778ce3e2f1ae7f5d92d7897 /libitm/config
parentc6be439b37702f6ac4c2fc447c6f3ed1042b80a3 (diff)
downloadgcc-2dd7b93778d551b6981c8086ecb38e26f677bd2b.tar.gz
[RS6000] Adjust gcc asm for power10
Generate assembly with .localentry,1 functions using @notoc calls. This patch makes libgcc.a asm look the same as power10 pcrel as far as toc/notoc is concerned. Otherwise calling between functions that advertise as using the TOC and those that don't, will require linker call stubs in statically linked code. gcc/ * config/rs6000/ppc-asm.h: Support __PCREL__ code. libgcc/ * config/rs6000/morestack.S, * config/rs6000/tramp.S: Support __PCREL__ code. libitm/ * config/powerpc/sjlj.S: Support __PCREL__ code.
Diffstat (limited to 'libitm/config')
-rw-r--r--libitm/config/powerpc/sjlj.S18
1 files changed, 17 insertions, 1 deletions
diff --git a/libitm/config/powerpc/sjlj.S b/libitm/config/powerpc/sjlj.S
index a963fc350bb..bcb0e73a285 100644
--- a/libitm/config/powerpc/sjlj.S
+++ b/libitm/config/powerpc/sjlj.S
@@ -26,7 +26,23 @@
#include "asmcfi.h"
-#if defined(__powerpc64__) && _CALL_ELF == 2
+#if defined(__powerpc64__) && _CALL_ELF == 2 && defined(__PCREL__)
+.macro FUNC name
+ .globl \name
+ .type \name, @function
+\name:
+ .localentry \name, 1
+.endm
+.macro END name
+ .size \name, . - \name
+.endm
+.macro HIDDEN name
+ .hidden \name
+.endm
+.macro CALL name
+ bl \name @notoc
+.endm
+#elif defined(__powerpc64__) && _CALL_ELF == 2
.macro FUNC name
.globl \name
.type \name, @function