summaryrefslogtreecommitdiff
path: root/libitm
diff options
context:
space:
mode:
Diffstat (limited to 'libitm')
-rw-r--r--libitm/ChangeLog10
-rw-r--r--libitm/config/powerpc/sjlj.S24
2 files changed, 33 insertions, 1 deletions
diff --git a/libitm/ChangeLog b/libitm/ChangeLog
index 28f8a227f20..e6dc6468d19 100644
--- a/libitm/ChangeLog
+++ b/libitm/ChangeLog
@@ -1,3 +1,13 @@
+2013-11-14 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
+
+ * config/powerpc/sjlj.S [__powerpc64__ && _CALL_ELF == 2]:
+ (FUNC): Define ELFv2 variant.
+ (END): Likewise.
+ (HIDDEN): Likewise.
+ (CALL): Likewise.
+ (BASE): Likewise.
+ (LR_SAVE): Likewise.
+
2013-09-20 Alan Modra <amodra@gmail.com>
* configure: Regenerate.
diff --git a/libitm/config/powerpc/sjlj.S b/libitm/config/powerpc/sjlj.S
index 1f4a100f943..4a0b43dbbbd 100644
--- a/libitm/config/powerpc/sjlj.S
+++ b/libitm/config/powerpc/sjlj.S
@@ -26,7 +26,26 @@
#include "asmcfi.h"
-#if defined(__powerpc64__) && defined(__ELF__)
+#if defined(__powerpc64__) && _CALL_ELF == 2
+.macro FUNC name
+ .globl \name
+ .type \name, @function
+\name:
+0: addis 2,12,(.TOC.-0b)@ha
+ addi 2,2,(.TOC.-0b)@l
+ .localentry \name, . - \name
+.endm
+.macro END name
+ .size \name, . - \name
+.endm
+.macro HIDDEN name
+ .hidden \name
+.endm
+.macro CALL name
+ bl \name
+ nop
+.endm
+#elif defined(__powerpc64__) && defined(__ELF__)
.macro FUNC name
.globl \name, .\name
.section ".opd","aw"
@@ -117,6 +136,9 @@ _$0:
#if defined(_CALL_AIXDESC)
# define BASE 6*WS
# define LR_SAVE 2*WS
+#elif _CALL_ELF == 2
+# define BASE 6*WS
+# define LR_SAVE 2*WS
#elif defined(_CALL_SYSV)
# define BASE 2*WS
# define LR_SAVE 1*WS