diff options
Diffstat (limited to 'libc/ports/sysdeps/m68k/dl-trampoline.S')
-rw-r--r-- | libc/ports/sysdeps/m68k/dl-trampoline.S | 54 |
1 files changed, 20 insertions, 34 deletions
diff --git a/libc/ports/sysdeps/m68k/dl-trampoline.S b/libc/ports/sysdeps/m68k/dl-trampoline.S index 16f20dcad..a4caa67a8 100644 --- a/libc/ports/sysdeps/m68k/dl-trampoline.S +++ b/libc/ports/sysdeps/m68k/dl-trampoline.S @@ -18,6 +18,16 @@ #include <sysdep.h> +#if !defined (__mcoldfire__) +# define FMOVE fmove.x +# define FPSPACE 12 +#elif defined (__mcffpu__) +# define FMOVE fmove.d +# define FPSPACE 8 +#else +# define FPSPACE 0 +#endif + .text .globl _dl_runtime_resolve .type _dl_runtime_resolve, @function @@ -174,16 +184,9 @@ _dl_runtime_profile: +4 %a1 %sp %a0 */ -#if !defined (__mcoldfire__) - fmove.x %fp0, -(%sp) - cfi_adjust_cfa_offset (12) -#elif defined (__mcffpu__) - fmove.d %fp0, -(%sp) - cfi_adjust_cfa_offset (8) -#else - clr.l -(%sp) - clr.l -(%sp) - cfi_adjust_cfa_offset (8) +#ifdef FMOVE + FMOVE %fp0, -(%sp) + cfi_adjust_cfa_offset (FPSPACE) #endif move.l %a0, -(%sp) cfi_adjust_cfa_offset (4) @@ -193,21 +196,12 @@ _dl_runtime_profile: cfi_adjust_cfa_offset (4) pea (%sp) cfi_adjust_cfa_offset (4) -#ifdef __mcoldfire__ - pea 24(%sp) + pea (16+FPSPACE)(%sp) cfi_adjust_cfa_offset (4) - move.l 40(%sp), -(%sp) - cfi_adjust_cfa_offset (4) - move.l 40(%sp), -(%sp) - cfi_adjust_cfa_offset (4) -#else - pea 28(%sp) + move.l (32+FPSPACE)(%sp), -(%sp) cfi_adjust_cfa_offset (4) - move.l 44(%sp), -(%sp) + move.l (32+FPSPACE)(%sp), -(%sp) cfi_adjust_cfa_offset (4) - move.l 44(%sp), -(%sp) - cfi_adjust_cfa_offset (4) -#endif jbsr _dl_call_pltexit lea 16(%sp), %sp cfi_adjust_cfa_offset (-16) @@ -217,20 +211,12 @@ _dl_runtime_profile: cfi_adjust_cfa_offset (-4) move.l (%sp)+, %a0 cfi_adjust_cfa_offset (-4) -#if !defined (__mcoldfire__) - fmove.x (%sp)+, %fp0 - cfi_adjust_cfa_offset (-12) - lea 20(%sp), %sp - cfi_adjust_cfa_offset (-20) -#elif defined (__mcffpu__) - fmove.l (%sp)+, %fp0 - cfi_adjust_cfa_offset (-8) +#ifdef FMOVE + FMOVE (%sp)+, %fp0 + cfi_adjust_cfa_offset (-FPSPACE) +#endif lea 20(%sp), %sp cfi_adjust_cfa_offset (-20) -#else - lea 28(%sp), %sp - cfi_adjust_cfa_offset (-28) -#endif rts cfi_endproc .size _dl_runtime_profile, . - _dl_runtime_profile |