+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>
#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 */
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 */
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__ */
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__ */
.globl SYM (__negdf2)
.globl SYM (__cmpdf2)
.globl SYM (__cmpdf2_internal)
+ .hidden SYM (__cmpdf2_internal)
.text
.even
movl a6@(16),sp@-
movl a6@(12),sp@-
movl a6@(8),sp@-
- bsr SYM (__cmpdf2_internal)
+ PICCALL SYM (__cmpdf2_internal)
unlk a6
rts
.globl SYM (__negsf2)
.globl SYM (__cmpsf2)
.globl SYM (__cmpsf2_internal)
+ .hidden SYM (__cmpsf2_internal)
| These are common routines to return and signal exceptions.
pea 1
movl a6@(12),sp@-
movl a6@(8),sp@-
- bsr (__cmpsf2_internal)
+ PICCALL SYM (__cmpsf2_internal)
unlk a6
rts