Commit c1af059c by Nathan Sidwell Committed by Maxim Kuvyrkov

lb1sf68.asm (PICCALL, PICJUMP): Use GOT instead of PC-relative addressing when…

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
parent 38439253
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> 2008-12-02 Andreas Tobler <a.tobler@schweiz.org>
Jack Howarth <howarth@bromo.med.uc.edu> Jack Howarth <howarth@bromo.med.uc.edu>
...@@ -129,30 +129,6 @@ Boston, MA 02110-1301, USA. */ ...@@ -129,30 +129,6 @@ Boston, MA 02110-1301, USA. */
#else /* __PIC__ */ #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__) # if defined (__uClinux__)
/* Versions for uClinux */ /* Versions for uClinux */
...@@ -171,6 +147,16 @@ Boston, MA 02110-1301, USA. */ ...@@ -171,6 +147,16 @@ Boston, MA 02110-1301, USA. */
movel \sym@GOT(\areg), sp@- movel \sym@GOT(\areg), sp@-
.endm .endm
.macro PICCALL addr
PICLEA \addr,a0
jsr a0@
.endm
.macro PICJUMP addr
PICLEA \addr,a0
jmp a0@
.endm
# else /* !__ID_SHARED_LIBRARY__ */ # else /* !__ID_SHARED_LIBRARY__ */
/* Versions for -msep-data */ /* Versions for -msep-data */
...@@ -183,6 +169,27 @@ Boston, MA 02110-1301, USA. */ ...@@ -183,6 +169,27 @@ Boston, MA 02110-1301, USA. */
movel \sym@GOT(a5), sp@- movel \sym@GOT(a5), sp@-
.endm .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
# else /* !__uClinux__ */ # else /* !__uClinux__ */
...@@ -201,6 +208,27 @@ Boston, MA 02110-1301, USA. */ ...@@ -201,6 +208,27 @@ Boston, MA 02110-1301, USA. */
movel \sym@GOT(\areg), sp@- movel \sym@GOT(\areg), sp@-
.endm .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
#endif /* __PIC__ */ #endif /* __PIC__ */
...@@ -648,6 +676,7 @@ ROUND_TO_MINUS = 3 | round result towards minus infinity ...@@ -648,6 +676,7 @@ ROUND_TO_MINUS = 3 | round result towards minus infinity
.globl SYM (__negdf2) .globl SYM (__negdf2)
.globl SYM (__cmpdf2) .globl SYM (__cmpdf2)
.globl SYM (__cmpdf2_internal) .globl SYM (__cmpdf2_internal)
.hidden SYM (__cmpdf2_internal)
.text .text
.even .even
...@@ -2410,7 +2439,7 @@ SYM (__cmpdf2): ...@@ -2410,7 +2439,7 @@ SYM (__cmpdf2):
movl a6@(16),sp@- movl a6@(16),sp@-
movl a6@(12),sp@- movl a6@(12),sp@-
movl a6@(8),sp@- movl a6@(8),sp@-
bsr SYM (__cmpdf2_internal) PICCALL SYM (__cmpdf2_internal)
unlk a6 unlk a6
rts rts
...@@ -2562,6 +2591,7 @@ ROUND_TO_MINUS = 3 | round result towards minus infinity ...@@ -2562,6 +2591,7 @@ ROUND_TO_MINUS = 3 | round result towards minus infinity
.globl SYM (__negsf2) .globl SYM (__negsf2)
.globl SYM (__cmpsf2) .globl SYM (__cmpsf2)
.globl SYM (__cmpsf2_internal) .globl SYM (__cmpsf2_internal)
.hidden SYM (__cmpsf2_internal)
| These are common routines to return and signal exceptions. | These are common routines to return and signal exceptions.
...@@ -3816,7 +3846,7 @@ SYM (__cmpsf2): ...@@ -3816,7 +3846,7 @@ SYM (__cmpsf2):
pea 1 pea 1
movl a6@(12),sp@- movl a6@(12),sp@-
movl a6@(8),sp@- movl a6@(8),sp@-
bsr (__cmpsf2_internal) PICCALL SYM (__cmpsf2_internal)
unlk a6 unlk a6
rts rts
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment