2013-06-28 Nathan Sidwell Joseph Myers * sysdeps/m68k/dl-trampoline.S (_dl_runtime_profile) [__mcoldfire__ && !__mcffpu]: Do not save floating-point registers. diff --git a/ports/sysdeps/m68k/dl-trampoline.S b/ports/sysdeps/m68k/dl-trampoline.S index 5aeafc7..16f20dc 100644 --- a/ports/sysdeps/m68k/dl-trampoline.S +++ b/ports/sysdeps/m68k/dl-trampoline.S @@ -174,12 +174,16 @@ _dl_runtime_profile: +4 %a1 %sp %a0 */ -#ifdef __mcoldfire__ +#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 - fmove.x %fp0, -(%sp) - cfi_adjust_cfa_offset (12) + clr.l -(%sp) + clr.l -(%sp) + cfi_adjust_cfa_offset (8) #endif move.l %a0, -(%sp) cfi_adjust_cfa_offset (4) @@ -213,15 +217,20 @@ _dl_runtime_profile: cfi_adjust_cfa_offset (-4) move.l (%sp)+, %a0 cfi_adjust_cfa_offset (-4) -#ifdef __mcoldfire__ - fmove.d (%sp)+, %fp0 - cfi_adjust_cfa_offset (-8) -#else +#if !defined (__mcoldfire__) fmove.x (%sp)+, %fp0 cfi_adjust_cfa_offset (-12) -#endif lea 20(%sp), %sp cfi_adjust_cfa_offset (-20) +#elif defined (__mcffpu__) + fmove.l (%sp)+, %fp0 + cfi_adjust_cfa_offset (-8) + 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