summaryrefslogtreecommitdiff
path: root/sysdeps/sparc/sparc8/mul_1.S
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/sparc/sparc8/mul_1.S')
-rw-r--r--sysdeps/sparc/sparc8/mul_1.S7
1 files changed, 7 insertions, 0 deletions
diff --git a/sysdeps/sparc/sparc8/mul_1.S b/sysdeps/sparc/sparc8/mul_1.S
index 9c21768eb1..42717be33b 100644
--- a/sysdeps/sparc/sparc8/mul_1.S
+++ b/sysdeps/sparc/sparc8/mul_1.S
@@ -34,8 +34,15 @@
C_SYMBOL_NAME(__mpn_mul_1):
sll %o2,4,%g1
and %g1,(4-1)<<4,%g1
+#if PIC
+ mov %o7,%g4 ! Save return address register
+ call 1f
+ add %o7,LL-1f,%g3
+1: mov %g4,%o7 ! Restore return address register
+#else
sethi %hi(LL),%g3
or %g3,%lo(LL),%g3
+#endif
jmp %g3+%g1
ld [%o1+0],%o4 ! 1
LL: