aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2008-12-02 21:50:02 +0000
committerMaxim Kuvyrkov <mkuvyrkov@gcc.gnu.org>2008-12-02 21:50:02 +0000
commitc1af059c2c372c462d2e66d428207be3b59233f3 (patch)
tree311dabd122d4146502826c66e93bcef4fd4822a2
parent384392535a3000eb5ada737977cc23e6595ef004 (diff)
downloadgcc-c1af059c2c372c462d2e66d428207be3b59233f3.zip
gcc-c1af059c2c372c462d2e66d428207be3b59233f3.tar.gz
gcc-c1af059c2c372c462d2e66d428207be3b59233f3.tar.bz2
lb1sf68.asm (PICCALL, PICJUMP): Use GOT instead of PC-relative addressing when compiling for uclinux PIC.
* config/m68k/lb1sf68.asm (PICCALL, PICJUMP): Use GOT instead of PC-relative addressing when compiling for uclinux PIC. (__cmpdf_internal, __cmpsf_internal): Hide. (__cmpdf, __cmpsf): Use PIC call sequence. Co-Authored-By: Maxim Kuvyrkov <maxim@codesourcery.com> From-SVN: r142373
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/config/m68k/lb1sf68.asm82
2 files changed, 64 insertions, 26 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 280c9e4..bcbb31d 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2008-12-02 Nathan Sidwell <nathan@codesourcery.com>
+ Maxim Kuvyrkov <maxim@codesourcery.com>
+
+ * config/m68k/lb1sf68.asm (PICCALL, PICJUMP): Use GOT instead of
+ PC-relative addressing when compiling for uclinux PIC.
+ (__cmpdf_internal, __cmpsf_internal): Hide.
+ (__cmpdf, __cmpsf): Use PIC call sequence.
+
2008-12-02 Andreas Tobler <a.tobler@schweiz.org>
Jack Howarth <howarth@bromo.med.uc.edu>
diff --git a/gcc/config/m68k/lb1sf68.asm b/gcc/config/m68k/lb1sf68.asm
index ebfcb88..a3d96d6 100644
--- a/gcc/config/m68k/lb1sf68.asm
+++ b/gcc/config/m68k/lb1sf68.asm
@@ -129,30 +129,6 @@ Boston, MA 02110-1301, USA. */
#else /* __PIC__ */
- /* Common for Linux and uClinux, the latter with either
- -mid-shared-library or -msep-data. */
-
- .macro PICCALL addr
-#if defined (__mcoldfire__) && !defined (__mcfisab__) && !defined (__mcfisac__)
- lea \addr-.-8,a0
- jsr pc@(a0)
-#else
- bsr \addr
-#endif
- .endm
-
- .macro PICJUMP addr
- /* ISA C has no bra.l instruction, and since this assembly file
- gets assembled into multiple object files, we avoid the
- bra instruction entirely. */
-#if defined (__mcoldfire__) && !defined (__mcfisab__)
- lea \addr-.-8,a0
- jmp pc@(a0)
-#else
- bra \addr
-#endif
- .endm
-
# if defined (__uClinux__)
/* Versions for uClinux */
@@ -171,6 +147,16 @@ Boston, MA 02110-1301, USA. */
movel \sym@GOT(\areg), sp@-
.endm
+ .macro PICCALL addr
+ PICLEA \addr,a0
+ jsr a0@
+ .endm
+
+ .macro PICJUMP addr
+ PICLEA \addr,a0
+ jmp a0@
+ .endm
+
# else /* !__ID_SHARED_LIBRARY__ */
/* Versions for -msep-data */
@@ -183,6 +169,27 @@ Boston, MA 02110-1301, USA. */
movel \sym@GOT(a5), sp@-
.endm
+ .macro PICCALL addr
+#if defined (__mcoldfire__) && !defined (__mcfisab__) && !defined (__mcfisac__)
+ lea \addr-.-8,a0
+ jsr pc@(a0)
+#else
+ bsr \addr
+#endif
+ .endm
+
+ .macro PICJUMP addr
+ /* ISA C has no bra.l instruction, and since this assembly file
+ gets assembled into multiple object files, we avoid the
+ bra instruction entirely. */
+#if defined (__mcoldfire__) && !defined (__mcfisab__)
+ lea \addr-.-8,a0
+ jmp pc@(a0)
+#else
+ bra \addr
+#endif
+ .endm
+
# endif
# else /* !__uClinux__ */
@@ -201,6 +208,27 @@ Boston, MA 02110-1301, USA. */
movel \sym@GOT(\areg), sp@-
.endm
+ .macro PICCALL addr
+#if defined (__mcoldfire__) && !defined (__mcfisab__) && !defined (__mcfisac__)
+ lea \addr-.-8,a0
+ jsr pc@(a0)
+#else
+ bsr \addr
+#endif
+ .endm
+
+ .macro PICJUMP addr
+ /* ISA C has no bra.l instruction, and since this assembly file
+ gets assembled into multiple object files, we avoid the
+ bra instruction entirely. */
+#if defined (__mcoldfire__) && !defined (__mcfisab__)
+ lea \addr-.-8,a0
+ jmp pc@(a0)
+#else
+ bra \addr
+#endif
+ .endm
+
# endif
#endif /* __PIC__ */
@@ -648,6 +676,7 @@ ROUND_TO_MINUS = 3 | round result towards minus infinity
.globl SYM (__negdf2)
.globl SYM (__cmpdf2)
.globl SYM (__cmpdf2_internal)
+ .hidden SYM (__cmpdf2_internal)
.text
.even
@@ -2410,7 +2439,7 @@ SYM (__cmpdf2):
movl a6@(16),sp@-
movl a6@(12),sp@-
movl a6@(8),sp@-
- bsr SYM (__cmpdf2_internal)
+ PICCALL SYM (__cmpdf2_internal)
unlk a6
rts
@@ -2562,6 +2591,7 @@ ROUND_TO_MINUS = 3 | round result towards minus infinity
.globl SYM (__negsf2)
.globl SYM (__cmpsf2)
.globl SYM (__cmpsf2_internal)
+ .hidden SYM (__cmpsf2_internal)
| These are common routines to return and signal exceptions.
@@ -3816,7 +3846,7 @@ SYM (__cmpsf2):
pea 1
movl a6@(12),sp@-
movl a6@(8),sp@-
- bsr (__cmpsf2_internal)
+ PICCALL SYM (__cmpsf2_internal)
unlk a6
rts