2006-10-03 Richard Sandiford <richard@codesourcery.com>
authorAndreas Schwab <schwab@suse.de>
Tue, 3 Oct 2006 14:44:27 +0000 (14:44 +0000)
committerAndreas Schwab <schwab@suse.de>
Tue, 3 Oct 2006 14:44:27 +0000 (14:44 +0000)
* sysdeps/m68k/bits/mathdef.h: Moved from sysdeps/m68k to
sysdeps/m68k/m680x0.
* sysdeps/m68k/m68020/submul_1.S: Likewise.
* sysdeps/m68k/m68020/Makefile: Likewise.
* sysdeps/m68k/m68020/mul_1.S: Likewise.
* sysdeps/m68k/m68020/wordcopy.S: Likewise.
* sysdeps/m68k/m68020/addmul_1.S: Likewise.
* sysdeps/m68k/m68020/bits/string.h: Likewise.
* sysdeps/m68k/m68020/bits/atomic.h: Likewise.
* sysdeps/m68k/sub_n.S: Likewise.
* sysdeps/m68k/add_n.S: Likewise.
* sysdeps/m68k/s_isnanl.c: Likewise.
* sysdeps/m68k/fpu/s_log1p.c: Likewise.
* sysdeps/m68k/fpu/e_asinf.c: Likewise.
* sysdeps/m68k/fpu/s_cosl.c: Likewise.
* sysdeps/m68k/fpu/s_isinff.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2.c: Likewise.
* sysdeps/m68k/fpu/s_ccos.c: Likewise.
* sysdeps/m68k/fpu/s_expm1.c: Likewise.
* sysdeps/m68k/fpu/slowexp.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2l.c: Likewise.
* sysdeps/m68k/fpu/s_ccoshf.c: Likewise.
* sysdeps/m68k/fpu/s_ilogbl.c: Likewise.
* sysdeps/m68k/fpu/Makefile: Likewise.
* sysdeps/m68k/fpu/s_expm1f.c: Likewise.
* sysdeps/m68k/fpu/s_significandf.c: Likewise.
* sysdeps/m68k/fpu/e_pow.c: Likewise.
* sysdeps/m68k/fpu/s_csinh.c: Likewise.
* sysdeps/m68k/fpu/e_exp.c: Likewise.
* sysdeps/m68k/fpu/s_remquof.c: Likewise.
* sysdeps/m68k/fpu/s_ilogbf.c: Likewise.
* sysdeps/m68k/fpu/s_truncl.c: Likewise.
* sysdeps/m68k/fpu/s_frexpf.c: Likewise.
* sysdeps/m68k/fpu/s_cos.c: Likewise.
* sysdeps/m68k/fpu/fraiseexcpt.c: Likewise.
* sysdeps/m68k/fpu/branred.c: Likewise.
* sysdeps/m68k/fpu/s_frexpl.c: Likewise.
* sysdeps/m68k/fpu/s_atan.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2f.c: Likewise.
* sysdeps/m68k/fpu/e_scalbl.c: Likewise.
* sysdeps/m68k/fpu/e_exp2.c: Likewise.
* sysdeps/m68k/fpu/s_cexpf.c: Likewise.
* sysdeps/m68k/fpu/mplog.c: Likewise.
* sysdeps/m68k/fpu/s_rintf.c: Likewise.
* sysdeps/m68k/fpu/s_tanh.c: Likewise.
* sysdeps/m68k/fpu/e_scalbf.c: Likewise.
* sysdeps/m68k/fpu/s_csinhl.c: Likewise.
* sysdeps/m68k/fpu/s_floorl.c: Likewise.
* sysdeps/m68k/fpu/k_tanf.c: Likewise.
* sysdeps/m68k/fpu/k_tanl.c: Likewise.
* sysdeps/m68k/fpu/e_fmodf.c: Likewise.
* sysdeps/m68k/fpu/e_atanhf.c: Likewise.
* sysdeps/m68k/fpu/s_isnanf.c: Likewise.
* sysdeps/m68k/fpu/s_fpclassifyl.c: Likewise.
* sysdeps/m68k/fpu/s_modf.c: Likewise.
* sysdeps/m68k/fpu/e_log2.c: Likewise.
* sysdeps/m68k/fpu/e_acosf.c: Likewise.
* sysdeps/m68k/fpu/s_log1pl.c: Likewise.
* sysdeps/m68k/fpu/e_log2f.c: Likewise.
* sysdeps/m68k/fpu/mpa.c: Likewise.
* sysdeps/m68k/fpu/t_exp.c: Likewise.
* sysdeps/m68k/fpu/e_acos.c: Likewise.
* sysdeps/m68k/fpu/s_expm1l.c: Likewise.
* sysdeps/m68k/fpu/s_ccoshl.c: Likewise.
* sysdeps/m68k/fpu/s_sinf.c: Likewise.
* sysdeps/m68k/fpu/k_tan.c: Likewise.
* sysdeps/m68k/fpu/k_cosl.c: Likewise.
* sysdeps/m68k/fpu/e_remainder.c: Likewise.
* sysdeps/m68k/fpu/s_trunc.c: Likewise.
* sysdeps/m68k/fpu/s_sincos.c: Likewise.
* sysdeps/m68k/fpu/s_scalbnl.c: Likewise.
* sysdeps/m68k/fpu/s_finitef.c: Likewise.
* sysdeps/m68k/fpu/s_tanhl.c: Likewise.
* sysdeps/m68k/fpu/s_lrintl.c: Likewise.
* sysdeps/m68k/fpu/slowpow.c: Likewise.
* sysdeps/m68k/fpu/mpexp.c: Likewise.
* sysdeps/m68k/fpu/s_isnanl.c: Likewise.
* sysdeps/m68k/fpu/e_expf.c: Likewise.
* sysdeps/m68k/fpu/s_significand.c: Likewise.
* sysdeps/m68k/fpu/e_sinhf.c: Likewise.
* sysdeps/m68k/fpu/s_tanl.c: Likewise.
* sysdeps/m68k/fpu/s_tanhf.c: Likewise.
* sysdeps/m68k/fpu/s_cexp.c: Likewise.
* sysdeps/m68k/fpu/e_sqrtf.c: Likewise.
* sysdeps/m68k/fpu/s_isinf.c: Likewise.
* sysdeps/m68k/fpu/s_nearbyint.c: Likewise.
* sysdeps/m68k/fpu/e_fmod.c: Likewise.
* sysdeps/m68k/fpu/sincos32.c: Likewise.
* sysdeps/m68k/fpu/e_sqrtl.c: Likewise.
* sysdeps/m68k/fpu/s_sincosl.c: Likewise.
* sysdeps/m68k/fpu/e_atan2f.c: Likewise.
* sysdeps/m68k/fpu/s_nearbyintf.c: Likewise.
* sysdeps/m68k/fpu/e_fmodl.c: Likewise.
* sysdeps/m68k/fpu/e_coshf.c: Likewise.
* sysdeps/m68k/fpu/s_csinf.c: Likewise.
* sysdeps/m68k/fpu/s_ccosl.c: Likewise.
* sysdeps/m68k/fpu/e_sqrt.c: Likewise.
* sysdeps/m68k/fpu/s_sin.c: Likewise.
* sysdeps/m68k/fpu/e_asin.c: Likewise.
* sysdeps/m68k/fpu/mptan.c: Likewise.
* sysdeps/m68k/fpu/e_exp10f.c: Likewise.
* sysdeps/m68k/fpu/e_scalb.c: Likewise.
* sysdeps/m68k/fpu/s_finitel.c: Likewise.
* sysdeps/m68k/fpu/e_log10.c: Likewise.
* sysdeps/m68k/fpu/k_sinl.c: Likewise.
* sysdeps/m68k/fpu/e_remainderl.c: Likewise.
* sysdeps/m68k/fpu/s_remquol.c: Likewise.
* sysdeps/m68k/fpu/s_scalblnf.c: Likewise.
* sysdeps/m68k/fpu/s_llrint.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2.c: Likewise.
* sysdeps/m68k/fpu/e_asinl.c: Likewise.
* sysdeps/m68k/fpu/e_logl.c: Likewise.
* sysdeps/m68k/fpu/s_cosf.c: Likewise.
* sysdeps/m68k/fpu/s_rint.c: Likewise.
* sysdeps/m68k/fpu/s_ceill.c: Likewise.
* sysdeps/m68k/fpu/s_modfl.c: Likewise.
* sysdeps/m68k/fpu/s_csinl.c: Likewise.
* sysdeps/m68k/fpu/s_tan.c: Likewise.
* sysdeps/m68k/fpu/s_sincosf.c: Likewise.
* sysdeps/m68k/fpu/dosincos.c: Likewise.
* sysdeps/m68k/fpu/e_powl.c: Likewise.
* sysdeps/m68k/fpu/s_ilogb.c: Likewise.
* sysdeps/m68k/fpu/s_llrintl.c: Likewise.
* sysdeps/m68k/fpu/e_expl.c: Likewise.
* sysdeps/m68k/fpu/libm-test-ulps: Likewise.
* sysdeps/m68k/fpu/s_tanf.c: Likewise.
* sysdeps/m68k/fpu/mpsqrt.c: Likewise.
* sysdeps/m68k/fpu/s_sinl.c: Likewise.
* sysdeps/m68k/fpu/mathimpl.h: Likewise.
* sysdeps/m68k/fpu/e_acosl.c: Likewise.
* sysdeps/m68k/fpu/e_cosh.c: Likewise.
* sysdeps/m68k/fpu/s_cexpl.c: Likewise.
* sysdeps/m68k/fpu/s_fabsl.c: Likewise.
* sysdeps/m68k/fpu/halfulp.c: Likewise.
* sysdeps/m68k/fpu/s_modff.c: Likewise.
* sysdeps/m68k/fpu/s_isnan.c: Likewise.
* sysdeps/m68k/fpu/e_atan2.c: Likewise.
* sysdeps/m68k/fpu/s_fabs.c: Likewise.
* sysdeps/m68k/fpu/e_log10f.c: Likewise.
* sysdeps/m68k/fpu/k_cosf.c: Likewise.
* sysdeps/m68k/fpu/e_sinh.c: Likewise.
* sysdeps/m68k/fpu/s_truncf.c: Likewise.
* sysdeps/m68k/fpu/s_ceil.c: Likewise.
* sysdeps/m68k/fpu/s_log1pf.c: Likewise.
* sysdeps/m68k/fpu/e_logf.c: Likewise.
* sysdeps/m68k/fpu/mpatan.c: Likewise.
* sysdeps/m68k/fpu/s_csin.c: Likewise.
* sysdeps/m68k/fpu/e_exp2l.c: Likewise.
* sysdeps/m68k/fpu/e_sinhl.c: Likewise.
* sysdeps/m68k/fpu/e_atan2l.c: Likewise.
* sysdeps/m68k/fpu/s_scalbn.c: Likewise.
* sysdeps/m68k/fpu/s_floorf.c: Likewise.
* sysdeps/m68k/fpu/e_log2l.c: Likewise.
* sysdeps/m68k/fpu/s_atanl.c: Likewise.
* sysdeps/m68k/fpu/s_llrintf.c: Likewise.
* sysdeps/m68k/fpu/k_sinf.c: Likewise.
* sysdeps/m68k/fpu/s_csinhf.c: Likewise.
* sysdeps/m68k/fpu/s_frexp.c: Likewise.
* sysdeps/m68k/fpu/s_atanf.c: Likewise.
* sysdeps/m68k/fpu/s_floor.c: Likewise.
* sysdeps/m68k/fpu/e_exp10l.c: Likewise.
* sysdeps/m68k/fpu/doasin.c: Likewise.
* sysdeps/m68k/fpu/s_rintl.c: Likewise.
* sysdeps/m68k/fpu/e_atanhl.c: Likewise.
* sysdeps/m68k/fpu/e_remainderf.c: Likewise.
* sysdeps/m68k/fpu/s_scalbln.c: Likewise.
* sysdeps/m68k/fpu/e_rem_pio2l.c: Likewise.
* sysdeps/m68k/fpu/e_exp10.c: Likewise.
* sysdeps/m68k/fpu/s_lrintf.c: Likewise.
* sysdeps/m68k/fpu/k_cos.c: Likewise.
* sysdeps/m68k/fpu/s_lrint.c: Likewise.
* sysdeps/m68k/fpu/s_ccosf.c: Likewise.
* sysdeps/m68k/fpu/s_scalblnl.c: Likewise.
* sysdeps/m68k/fpu/switch/Makefile: Likewise.
* sysdeps/m68k/fpu/switch/switch.c: Likewise.
* sysdeps/m68k/fpu/switch/68881-sw.h: Likewise.
* sysdeps/m68k/fpu/switch/bits/mathinline.h: Likewise.
* sysdeps/m68k/fpu/e_log.c: Likewise.
* sysdeps/m68k/fpu/s_nextafterl.c: Likewise.
* sysdeps/m68k/fpu/s_nearbyintl.c: Likewise.
* sysdeps/m68k/fpu/mpatan2.c: Likewise.
* sysdeps/m68k/fpu/k_sin.c: Likewise.
* sysdeps/m68k/fpu/e_atanh.c: Likewise.
* sysdeps/m68k/fpu/s_remquo.c: Likewise.
* sysdeps/m68k/fpu/e_log10l.c: Likewise.
* sysdeps/m68k/fpu/s_ceilf.c: Likewise.
* sysdeps/m68k/fpu/s_fabsf.c: Likewise.
* sysdeps/m68k/fpu/s_significandl.c: Likewise.
* sysdeps/m68k/fpu/s_ccosh.c: Likewise.
* sysdeps/m68k/fpu/e_coshl.c: Likewise.
* sysdeps/m68k/fpu/s_scalbnf.c: Likewise.
* sysdeps/m68k/fpu/s_finite.c: Likewise.
* sysdeps/m68k/fpu/e_exp2f.c: Likewise.
* sysdeps/m68k/fpu/k_rem_pio2f.c: Likewise.
* sysdeps/m68k/fpu/s_isinfl.c: Likewise.
* sysdeps/m68k/fpu/bits/mathinline.h: Likewise.
* sysdeps/m68k/fpu/e_powf.c: Likewise.
* sysdeps/m68k/rshift.S: Likewise.
* sysdeps/m68k/lshift.S: Likewise.
* sysdeps/m68k/strtold_l.c: Likewise.
* sysdeps/m68k/printf_fphex.c: Likewise.
* sysdeps/m68k/s_isinfl.c: Likewise.
* sysdeps/m68k/bits/huge_vall.h: Likewise.

* sysdeps/m68k/asm-syntax.h (andw, andl, subqw, tstw, tstl): New.
* sysdeps/m68k/bits/byteswap.h (__bswap32): Don't define for
Coldfire targets.
* sysdeps/m68k/bits/setjmp.h (__jmp_buf): Add a 64-byte
__fpregs field for Coldfire FPUs.
* sysdeps/m68k/dl-machine.h: Include sysdep.h.
(elf_machine_load_address): Use PCREL_OP.
(_dl_start_user): Likewise.
* sysdeps/m68k/dl-trampoline.S (_dl_runtime_resolve): Avoid jmp (%dN)
on Coldfire; push the target address and use rts instead.
(_dl_runtime_profile): Likewise.  Round up the frame size to longword
rather than word alignment.  Avoid dbra on Coldfire.  Avoid using
jsr (%d0) on Coldfire; push the return address and target address
and use rts instead.  Use fmovem.l rather than fmovem.x on Coldfire.
Add missing initialization of lrv_a0 and restore a0 from it after
calling _dl_call_pltexit.  Adjust the stack offsets of later data
accordingly, fixing a previously incorrect offset for the inregs
parameter.
* sysdeps/m68k/fpu/fegetenv.c (__fegetenv): Save the control
registers individually on Coldfire targets.
* sysdeps/m68k/fpu/feholdexcpt.c (feholdexcept): Likewise.
Add missing libm_hidden_def.
* sysdeps/m68k/fpu/fesetenv.c (__fesetenv): Save and restore the
control registers individually on Coldfire targets.
* sysdeps/m68k/fpu/fesetround.c (fesetround): Add missing
libm_hidden_def.
* sysdeps/m68k/fpu_control.h: Add the Coldfire bit assignments to
the main comment.
(_FPU_DOUBLE): Define to 0 for Coldfire.
(_FPU_EXTENDED): Don't define for Coldfire.
(_FPU_RESERVED): Include bit 15 for Coldfire.
* sysdeps/m68k/Implies: Remove ieee754/ldbl-96.
* sysdeps/m68k/m680x0/Implies: Add it to this new file instead.
* sysdeps/m68k/ldsodefs.h: New file.
* sysdeps/m68k/__longjmp.c (__longjmp): Restore the floating-point
registers when using a Coldfire FPU.
* sysdeps/m68k/Makefile (long-double-fcts): Delete.
* sysdeps/m68k/m680x0/Makefile: Add it to this new file instead.
* sysdeps/m68k/memchr.S (__memchr): Add Coldfire code.  Avoid
unnecessary moves.
* sysdeps/m68k/preconfigure (m680?0): Add "m680x0" to $machine.
(m68k): Use the compiler to decide whether $machine should be
set to m68k/coldfire or m68k/m680x0/m68020.
* sysdeps/m68k/rawmemchr.S (__rawmemchr): Add Coldfire code.  Avoid
unnecessary moves.
* sysdeps/m68k/setjmp.c (__sigsetjmp): Save the floating-point
registers when using a Coldfire FPU.  Use libc_hidden_def rather
than hidden_def.
* sysdeps/m68k/strchrnul.S (__strchrnul): Add Coldfire code.  Avoid
unnecessary moves.
* sysdeps/m68k/strchr.S (strchr): Likewise.
* sysdeps/m68k/sysdep.h (PCREL_OP): Define.
* sysdeps/m68k/tst-audit.h: New file.
* sysdeps/m68k/wcpcpy.c: Likewise.
* sysdeps/m68k/wcpcpy_chk.c: Likewise.
* sysdeps/unix/sysv/linux/m68k/configure.in: New file.
* sysdeps/unix/sysv/linux/m68k/configure: Likewise.
* sysdeps/unix/sysv/linux/m68k/clone.S (__clone): Add Coldfire code.
* sysdeps/unix/sysv/linux/m68k/register-dump.h (real_catch_segfault):
Do not define on Coldfire.
(catch_segfault): Likewise.
(register_dump): Use the Coldfire-specific sigcontext fields to
display call-saved data and address registers (rather than the
data stored in sc_fpstate by real_catch_segfault).  Display 8-byte
floating-point registers on Coldfire.
* sysdeps/unix/sysv/linux/m68k/socket.S (__socket): Pass a temporary
register to SINGLE_THREAD_P.
* sysdeps/unix/sysv/linux/m68k/sys/reg.h (PT_FP0): Redefine for
Coldfire.
(PT_FP1, PT_FP2, PT_FP3, PT_FP4, PT_FP5, PT_FP6, PT_FP7): Likewise.
* sysdeps/unix/sysv/linux/m68k/sys/ucontext.h (fpregset): Sync field
order with linux.  Make f_fpregs an 8*2 array on Coldfire.
(ucontext): Sync field order with linux.
* sysdeps/unix/sysv/linux/m68k/sysdep.h: Guard against multiple
inclusion.
(SYSCALL_ERROR_HANDLER): Use PCREL_OP.
* sysdeps/unix/sysv/linux/m68k/syscalls.list (oldgetrlimit): Delete.
(oldsetrlimit): Likewise.
* sysdeps/unix/sysv/linux/m68k/m680x0/syscalls.list: New file.
List oldgetrlimit and oldsetrlimit here instead.
* sysdeps/unix/sysv/linux/m68k/bits/sigcontext.h: New file.
* sysdeps/unix/sysv/linux/m68k/bits/siginfo.h: Likewise.
* sysdeps/m68k/coldfire/bits/atomic.h: Likewise.
* sysdeps/m68k/coldfire/fpu/e_sqrt.c: Likewise.
* sysdeps/m68k/coldfire/fpu/e_sqrtf.c: Likewise.
* sysdeps/m68k/coldfire/fpu/fraiseexcpt.c: Likewise.
* sysdeps/m68k/coldfire/fpu/libm-test-ulps: Likewise.
* sysdeps/m68k/coldfire/fpu/s_fabs.c: Likewise.
* sysdeps/m68k/coldfire/fpu/s_fabsf.c: Likewise.
* sysdeps/m68k/coldfire/fpu/s_lrint.c: Likewise.
* sysdeps/m68k/coldfire/fpu/s_lrintf.c: Likewise.
* sysdeps/m68k/coldfire/fpu/s_rint.c: Likewise.
* sysdeps/m68k/coldfire/fpu/s_rintf.c: Likewise.
* sysdeps/m68k/coldfire/shlib-versions: Likewise.

253 files changed:
ChangeLog.m68k
sysdeps/m68k/Implies
sysdeps/m68k/Makefile
sysdeps/m68k/__longjmp.c
sysdeps/m68k/asm-syntax.h
sysdeps/m68k/bits/byteswap.h
sysdeps/m68k/bits/setjmp.h
sysdeps/m68k/coldfire/bits/atomic.h [new file with mode: 0644]
sysdeps/m68k/coldfire/fpu/e_sqrt.c [new file with mode: 0644]
sysdeps/m68k/coldfire/fpu/e_sqrtf.c [new file with mode: 0644]
sysdeps/m68k/coldfire/fpu/fraiseexcpt.c [new file with mode: 0644]
sysdeps/m68k/coldfire/fpu/libm-test-ulps [new file with mode: 0644]
sysdeps/m68k/coldfire/fpu/s_fabs.c [new file with mode: 0644]
sysdeps/m68k/coldfire/fpu/s_fabsf.c [new file with mode: 0644]
sysdeps/m68k/coldfire/fpu/s_lrint.c [new file with mode: 0644]
sysdeps/m68k/coldfire/fpu/s_lrintf.c [new file with mode: 0644]
sysdeps/m68k/coldfire/fpu/s_rint.c [new file with mode: 0644]
sysdeps/m68k/coldfire/fpu/s_rintf.c [new file with mode: 0644]
sysdeps/m68k/coldfire/shlib-versions [new file with mode: 0644]
sysdeps/m68k/dl-machine.h
sysdeps/m68k/dl-trampoline.S
sysdeps/m68k/fpu/fegetenv.c
sysdeps/m68k/fpu/feholdexcpt.c
sysdeps/m68k/fpu/fesetenv.c
sysdeps/m68k/fpu/fesetround.c
sysdeps/m68k/fpu_control.h
sysdeps/m68k/ldsodefs.h [new file with mode: 0644]
sysdeps/m68k/m680x0/Implies [new file with mode: 0644]
sysdeps/m68k/m680x0/Makefile [new file with mode: 0644]
sysdeps/m68k/m680x0/add_n.S [moved from sysdeps/m68k/add_n.S with 100% similarity]
sysdeps/m68k/m680x0/bits/huge_vall.h [moved from sysdeps/m68k/bits/huge_vall.h with 100% similarity]
sysdeps/m68k/m680x0/bits/mathdef.h [moved from sysdeps/m68k/bits/mathdef.h with 100% similarity]
sysdeps/m68k/m680x0/fpu/Makefile [moved from sysdeps/m68k/fpu/Makefile with 100% similarity]
sysdeps/m68k/m680x0/fpu/bits/mathinline.h [moved from sysdeps/m68k/fpu/bits/mathinline.h with 100% similarity]
sysdeps/m68k/m680x0/fpu/branred.c [moved from sysdeps/m68k/fpu/branred.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/doasin.c [moved from sysdeps/m68k/fpu/doasin.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/dosincos.c [moved from sysdeps/m68k/fpu/dosincos.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_acos.c [moved from sysdeps/m68k/fpu/e_acos.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_acosf.c [moved from sysdeps/m68k/fpu/e_acosf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_acosl.c [moved from sysdeps/m68k/fpu/e_acosl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_asin.c [moved from sysdeps/m68k/fpu/e_asin.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_asinf.c [moved from sysdeps/m68k/fpu/e_asinf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_asinl.c [moved from sysdeps/m68k/fpu/e_asinl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_atan2.c [moved from sysdeps/m68k/fpu/e_atan2.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_atan2f.c [moved from sysdeps/m68k/fpu/e_atan2f.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_atan2l.c [moved from sysdeps/m68k/fpu/e_atan2l.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_atanh.c [moved from sysdeps/m68k/fpu/e_atanh.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_atanhf.c [moved from sysdeps/m68k/fpu/e_atanhf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_atanhl.c [moved from sysdeps/m68k/fpu/e_atanhl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_cosh.c [moved from sysdeps/m68k/fpu/e_cosh.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_coshf.c [moved from sysdeps/m68k/fpu/e_coshf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_coshl.c [moved from sysdeps/m68k/fpu/e_coshl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_exp.c [moved from sysdeps/m68k/fpu/e_exp.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_exp10.c [moved from sysdeps/m68k/fpu/e_exp10.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_exp10f.c [moved from sysdeps/m68k/fpu/e_exp10f.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_exp10l.c [moved from sysdeps/m68k/fpu/e_exp10l.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_exp2.c [moved from sysdeps/m68k/fpu/e_exp2.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_exp2f.c [moved from sysdeps/m68k/fpu/e_exp2f.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_exp2l.c [moved from sysdeps/m68k/fpu/e_exp2l.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_expf.c [moved from sysdeps/m68k/fpu/e_expf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_expl.c [moved from sysdeps/m68k/fpu/e_expl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_fmod.c [moved from sysdeps/m68k/fpu/e_fmod.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_fmodf.c [moved from sysdeps/m68k/fpu/e_fmodf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_fmodl.c [moved from sysdeps/m68k/fpu/e_fmodl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_log.c [moved from sysdeps/m68k/fpu/e_log.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_log10.c [moved from sysdeps/m68k/fpu/e_log10.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_log10f.c [moved from sysdeps/m68k/fpu/e_log10f.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_log10l.c [moved from sysdeps/m68k/fpu/e_log10l.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_log2.c [moved from sysdeps/m68k/fpu/e_log2.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_log2f.c [moved from sysdeps/m68k/fpu/e_log2f.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_log2l.c [moved from sysdeps/m68k/fpu/e_log2l.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_logf.c [moved from sysdeps/m68k/fpu/e_logf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_logl.c [moved from sysdeps/m68k/fpu/e_logl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_pow.c [moved from sysdeps/m68k/fpu/e_pow.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_powf.c [moved from sysdeps/m68k/fpu/e_powf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_powl.c [moved from sysdeps/m68k/fpu/e_powl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_rem_pio2.c [moved from sysdeps/m68k/fpu/e_rem_pio2.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_rem_pio2f.c [moved from sysdeps/m68k/fpu/e_rem_pio2f.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_rem_pio2l.c [moved from sysdeps/m68k/fpu/e_rem_pio2l.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_remainder.c [moved from sysdeps/m68k/fpu/e_remainder.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_remainderf.c [moved from sysdeps/m68k/fpu/e_remainderf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_remainderl.c [moved from sysdeps/m68k/fpu/e_remainderl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_scalb.c [moved from sysdeps/m68k/fpu/e_scalb.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_scalbf.c [moved from sysdeps/m68k/fpu/e_scalbf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_scalbl.c [moved from sysdeps/m68k/fpu/e_scalbl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_sinh.c [moved from sysdeps/m68k/fpu/e_sinh.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_sinhf.c [moved from sysdeps/m68k/fpu/e_sinhf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_sinhl.c [moved from sysdeps/m68k/fpu/e_sinhl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_sqrt.c [moved from sysdeps/m68k/fpu/e_sqrt.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_sqrtf.c [moved from sysdeps/m68k/fpu/e_sqrtf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/e_sqrtl.c [moved from sysdeps/m68k/fpu/e_sqrtl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/fraiseexcpt.c [moved from sysdeps/m68k/fpu/fraiseexcpt.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/halfulp.c [moved from sysdeps/m68k/fpu/halfulp.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/k_cos.c [moved from sysdeps/m68k/fpu/k_cos.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/k_cosf.c [moved from sysdeps/m68k/fpu/k_cosf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/k_cosl.c [moved from sysdeps/m68k/fpu/k_cosl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/k_rem_pio2.c [moved from sysdeps/m68k/fpu/k_rem_pio2.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/k_rem_pio2f.c [moved from sysdeps/m68k/fpu/k_rem_pio2f.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/k_rem_pio2l.c [moved from sysdeps/m68k/fpu/k_rem_pio2l.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/k_sin.c [moved from sysdeps/m68k/fpu/k_sin.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/k_sinf.c [moved from sysdeps/m68k/fpu/k_sinf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/k_sinl.c [moved from sysdeps/m68k/fpu/k_sinl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/k_tan.c [moved from sysdeps/m68k/fpu/k_tan.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/k_tanf.c [moved from sysdeps/m68k/fpu/k_tanf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/k_tanl.c [moved from sysdeps/m68k/fpu/k_tanl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/libm-test-ulps [moved from sysdeps/m68k/fpu/libm-test-ulps with 100% similarity]
sysdeps/m68k/m680x0/fpu/mathimpl.h [moved from sysdeps/m68k/fpu/mathimpl.h with 100% similarity]
sysdeps/m68k/m680x0/fpu/mpa.c [moved from sysdeps/m68k/fpu/mpa.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/mpatan.c [moved from sysdeps/m68k/fpu/mpatan.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/mpatan2.c [moved from sysdeps/m68k/fpu/mpatan2.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/mpexp.c [moved from sysdeps/m68k/fpu/mpexp.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/mplog.c [moved from sysdeps/m68k/fpu/mplog.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/mpsqrt.c [moved from sysdeps/m68k/fpu/mpsqrt.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/mptan.c [moved from sysdeps/m68k/fpu/mptan.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_atan.c [moved from sysdeps/m68k/fpu/s_atan.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_atanf.c [moved from sysdeps/m68k/fpu/s_atanf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_atanl.c [moved from sysdeps/m68k/fpu/s_atanl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_ccos.c [moved from sysdeps/m68k/fpu/s_ccos.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_ccosf.c [moved from sysdeps/m68k/fpu/s_ccosf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_ccosh.c [moved from sysdeps/m68k/fpu/s_ccosh.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_ccoshf.c [moved from sysdeps/m68k/fpu/s_ccoshf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_ccoshl.c [moved from sysdeps/m68k/fpu/s_ccoshl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_ccosl.c [moved from sysdeps/m68k/fpu/s_ccosl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_ceil.c [moved from sysdeps/m68k/fpu/s_ceil.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_ceilf.c [moved from sysdeps/m68k/fpu/s_ceilf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_ceill.c [moved from sysdeps/m68k/fpu/s_ceill.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_cexp.c [moved from sysdeps/m68k/fpu/s_cexp.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_cexpf.c [moved from sysdeps/m68k/fpu/s_cexpf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_cexpl.c [moved from sysdeps/m68k/fpu/s_cexpl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_cos.c [moved from sysdeps/m68k/fpu/s_cos.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_cosf.c [moved from sysdeps/m68k/fpu/s_cosf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_cosl.c [moved from sysdeps/m68k/fpu/s_cosl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_csin.c [moved from sysdeps/m68k/fpu/s_csin.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_csinf.c [moved from sysdeps/m68k/fpu/s_csinf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_csinh.c [moved from sysdeps/m68k/fpu/s_csinh.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_csinhf.c [moved from sysdeps/m68k/fpu/s_csinhf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_csinhl.c [moved from sysdeps/m68k/fpu/s_csinhl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_csinl.c [moved from sysdeps/m68k/fpu/s_csinl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_expm1.c [moved from sysdeps/m68k/fpu/s_expm1.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_expm1f.c [moved from sysdeps/m68k/fpu/s_expm1f.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_expm1l.c [moved from sysdeps/m68k/fpu/s_expm1l.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_fabs.c [moved from sysdeps/m68k/fpu/s_fabs.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_fabsf.c [moved from sysdeps/m68k/fpu/s_fabsf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_fabsl.c [moved from sysdeps/m68k/fpu/s_fabsl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_finite.c [moved from sysdeps/m68k/fpu/s_finite.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_finitef.c [moved from sysdeps/m68k/fpu/s_finitef.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_finitel.c [moved from sysdeps/m68k/fpu/s_finitel.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_floor.c [moved from sysdeps/m68k/fpu/s_floor.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_floorf.c [moved from sysdeps/m68k/fpu/s_floorf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_floorl.c [moved from sysdeps/m68k/fpu/s_floorl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_fpclassifyl.c [moved from sysdeps/m68k/fpu/s_fpclassifyl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_frexp.c [moved from sysdeps/m68k/fpu/s_frexp.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_frexpf.c [moved from sysdeps/m68k/fpu/s_frexpf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_frexpl.c [moved from sysdeps/m68k/fpu/s_frexpl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_ilogb.c [moved from sysdeps/m68k/fpu/s_ilogb.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_ilogbf.c [moved from sysdeps/m68k/fpu/s_ilogbf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_ilogbl.c [moved from sysdeps/m68k/fpu/s_ilogbl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_isinf.c [moved from sysdeps/m68k/fpu/s_isinf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_isinff.c [moved from sysdeps/m68k/fpu/s_isinff.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_isinfl.c [moved from sysdeps/m68k/fpu/s_isinfl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_isnan.c [moved from sysdeps/m68k/fpu/s_isnan.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_isnanf.c [moved from sysdeps/m68k/fpu/s_isnanf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_isnanl.c [moved from sysdeps/m68k/fpu/s_isnanl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_llrint.c [moved from sysdeps/m68k/fpu/s_llrint.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_llrintf.c [moved from sysdeps/m68k/fpu/s_llrintf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_llrintl.c [moved from sysdeps/m68k/fpu/s_llrintl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_log1p.c [moved from sysdeps/m68k/fpu/s_log1p.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_log1pf.c [moved from sysdeps/m68k/fpu/s_log1pf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_log1pl.c [moved from sysdeps/m68k/fpu/s_log1pl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_lrint.c [moved from sysdeps/m68k/fpu/s_lrint.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_lrintf.c [moved from sysdeps/m68k/fpu/s_lrintf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_lrintl.c [moved from sysdeps/m68k/fpu/s_lrintl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_modf.c [moved from sysdeps/m68k/fpu/s_modf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_modff.c [moved from sysdeps/m68k/fpu/s_modff.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_modfl.c [moved from sysdeps/m68k/fpu/s_modfl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_nearbyint.c [moved from sysdeps/m68k/fpu/s_nearbyint.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_nearbyintf.c [moved from sysdeps/m68k/fpu/s_nearbyintf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_nearbyintl.c [moved from sysdeps/m68k/fpu/s_nearbyintl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_nextafterl.c [moved from sysdeps/m68k/fpu/s_nextafterl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_remquo.c [moved from sysdeps/m68k/fpu/s_remquo.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_remquof.c [moved from sysdeps/m68k/fpu/s_remquof.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_remquol.c [moved from sysdeps/m68k/fpu/s_remquol.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_rint.c [moved from sysdeps/m68k/fpu/s_rint.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_rintf.c [moved from sysdeps/m68k/fpu/s_rintf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_rintl.c [moved from sysdeps/m68k/fpu/s_rintl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_scalbln.c [moved from sysdeps/m68k/fpu/s_scalbln.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_scalblnf.c [moved from sysdeps/m68k/fpu/s_scalblnf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_scalblnl.c [moved from sysdeps/m68k/fpu/s_scalblnl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_scalbn.c [moved from sysdeps/m68k/fpu/s_scalbn.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_scalbnf.c [moved from sysdeps/m68k/fpu/s_scalbnf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_scalbnl.c [moved from sysdeps/m68k/fpu/s_scalbnl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_significand.c [moved from sysdeps/m68k/fpu/s_significand.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_significandf.c [moved from sysdeps/m68k/fpu/s_significandf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_significandl.c [moved from sysdeps/m68k/fpu/s_significandl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_sin.c [moved from sysdeps/m68k/fpu/s_sin.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_sincos.c [moved from sysdeps/m68k/fpu/s_sincos.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_sincosf.c [moved from sysdeps/m68k/fpu/s_sincosf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_sincosl.c [moved from sysdeps/m68k/fpu/s_sincosl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_sinf.c [moved from sysdeps/m68k/fpu/s_sinf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_sinl.c [moved from sysdeps/m68k/fpu/s_sinl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_tan.c [moved from sysdeps/m68k/fpu/s_tan.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_tanf.c [moved from sysdeps/m68k/fpu/s_tanf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_tanh.c [moved from sysdeps/m68k/fpu/s_tanh.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_tanhf.c [moved from sysdeps/m68k/fpu/s_tanhf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_tanhl.c [moved from sysdeps/m68k/fpu/s_tanhl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_tanl.c [moved from sysdeps/m68k/fpu/s_tanl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_trunc.c [moved from sysdeps/m68k/fpu/s_trunc.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_truncf.c [moved from sysdeps/m68k/fpu/s_truncf.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/s_truncl.c [moved from sysdeps/m68k/fpu/s_truncl.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/sincos32.c [moved from sysdeps/m68k/fpu/sincos32.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/slowexp.c [moved from sysdeps/m68k/fpu/slowexp.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/slowpow.c [moved from sysdeps/m68k/fpu/slowpow.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/switch/68881-sw.h [moved from sysdeps/m68k/fpu/switch/68881-sw.h with 100% similarity]
sysdeps/m68k/m680x0/fpu/switch/Makefile [moved from sysdeps/m68k/fpu/switch/Makefile with 100% similarity]
sysdeps/m68k/m680x0/fpu/switch/bits/mathinline.h [moved from sysdeps/m68k/fpu/switch/bits/mathinline.h with 100% similarity]
sysdeps/m68k/m680x0/fpu/switch/switch.c [moved from sysdeps/m68k/fpu/switch/switch.c with 100% similarity]
sysdeps/m68k/m680x0/fpu/t_exp.c [moved from sysdeps/m68k/fpu/t_exp.c with 100% similarity]
sysdeps/m68k/m680x0/lshift.S [moved from sysdeps/m68k/lshift.S with 100% similarity]
sysdeps/m68k/m680x0/m68020/Makefile [moved from sysdeps/m68k/m68020/Makefile with 100% similarity]
sysdeps/m68k/m680x0/m68020/addmul_1.S [moved from sysdeps/m68k/m68020/addmul_1.S with 100% similarity]
sysdeps/m68k/m680x0/m68020/bits/atomic.h [moved from sysdeps/m68k/m68020/bits/atomic.h with 100% similarity]
sysdeps/m68k/m680x0/m68020/bits/string.h [moved from sysdeps/m68k/m68020/bits/string.h with 100% similarity]
sysdeps/m68k/m680x0/m68020/mul_1.S [moved from sysdeps/m68k/m68020/mul_1.S with 100% similarity]
sysdeps/m68k/m680x0/m68020/submul_1.S [moved from sysdeps/m68k/m68020/submul_1.S with 100% similarity]
sysdeps/m68k/m680x0/m68020/wordcopy.S [moved from sysdeps/m68k/m68020/wordcopy.S with 100% similarity]
sysdeps/m68k/m680x0/printf_fphex.c [moved from sysdeps/m68k/printf_fphex.c with 100% similarity]
sysdeps/m68k/m680x0/rshift.S [moved from sysdeps/m68k/rshift.S with 100% similarity]
sysdeps/m68k/m680x0/s_isinfl.c [moved from sysdeps/m68k/s_isinfl.c with 100% similarity]
sysdeps/m68k/m680x0/s_isnanl.c [moved from sysdeps/m68k/s_isnanl.c with 100% similarity]
sysdeps/m68k/m680x0/strtold_l.c [moved from sysdeps/m68k/strtold_l.c with 100% similarity]
sysdeps/m68k/m680x0/sub_n.S [moved from sysdeps/m68k/sub_n.S with 100% similarity]
sysdeps/m68k/memchr.S
sysdeps/m68k/preconfigure
sysdeps/m68k/rawmemchr.S
sysdeps/m68k/setjmp.c
sysdeps/m68k/strchr.S
sysdeps/m68k/strchrnul.S
sysdeps/m68k/sysdep.h
sysdeps/m68k/tst-audit.h [new file with mode: 0644]
sysdeps/m68k/wcpcpy.c [new file with mode: 0644]
sysdeps/m68k/wcpcpy_chk.c [new file with mode: 0644]
sysdeps/unix/sysv/linux/m68k/bits/sigcontext.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/m68k/bits/siginfo.h [new file with mode: 0644]
sysdeps/unix/sysv/linux/m68k/clone.S
sysdeps/unix/sysv/linux/m68k/configure [new file with mode: 0644]
sysdeps/unix/sysv/linux/m68k/configure.in [new file with mode: 0644]
sysdeps/unix/sysv/linux/m68k/m680x0/syscalls.list [new file with mode: 0644]
sysdeps/unix/sysv/linux/m68k/register-dump.h
sysdeps/unix/sysv/linux/m68k/socket.S
sysdeps/unix/sysv/linux/m68k/sys/reg.h
sysdeps/unix/sysv/linux/m68k/sys/ucontext.h
sysdeps/unix/sysv/linux/m68k/syscalls.list
sysdeps/unix/sysv/linux/m68k/sysdep.h

index 328f858..b12f7f4 100644 (file)
@@ -1,3 +1,304 @@
+2006-10-03  Richard Sandiford  <richard@codesourcery.com>
+
+       * sysdeps/m68k/bits/mathdef.h: Moved from sysdeps/m68k to
+       sysdeps/m68k/m680x0.
+       * sysdeps/m68k/m68020/submul_1.S: Likewise.
+       * sysdeps/m68k/m68020/Makefile: Likewise.
+       * sysdeps/m68k/m68020/mul_1.S: Likewise.
+       * sysdeps/m68k/m68020/wordcopy.S: Likewise.
+       * sysdeps/m68k/m68020/addmul_1.S: Likewise.
+       * sysdeps/m68k/m68020/bits/string.h: Likewise.
+       * sysdeps/m68k/m68020/bits/atomic.h: Likewise.
+       * sysdeps/m68k/sub_n.S: Likewise.
+       * sysdeps/m68k/add_n.S: Likewise.
+       * sysdeps/m68k/s_isnanl.c: Likewise.
+       * sysdeps/m68k/fpu/s_log1p.c: Likewise.
+       * sysdeps/m68k/fpu/e_asinf.c: Likewise.
+       * sysdeps/m68k/fpu/s_cosl.c: Likewise.
+       * sysdeps/m68k/fpu/s_isinff.c: Likewise.
+       * sysdeps/m68k/fpu/k_rem_pio2.c: Likewise.
+       * sysdeps/m68k/fpu/s_ccos.c: Likewise.
+       * sysdeps/m68k/fpu/s_expm1.c: Likewise.
+       * sysdeps/m68k/fpu/slowexp.c: Likewise.
+       * sysdeps/m68k/fpu/k_rem_pio2l.c: Likewise.
+       * sysdeps/m68k/fpu/s_ccoshf.c: Likewise.
+       * sysdeps/m68k/fpu/s_ilogbl.c: Likewise.
+       * sysdeps/m68k/fpu/Makefile: Likewise.
+       * sysdeps/m68k/fpu/s_expm1f.c: Likewise.
+       * sysdeps/m68k/fpu/s_significandf.c: Likewise.
+       * sysdeps/m68k/fpu/e_pow.c: Likewise.
+       * sysdeps/m68k/fpu/s_csinh.c: Likewise.
+       * sysdeps/m68k/fpu/e_exp.c: Likewise.
+       * sysdeps/m68k/fpu/s_remquof.c: Likewise.
+       * sysdeps/m68k/fpu/s_ilogbf.c: Likewise.
+       * sysdeps/m68k/fpu/s_truncl.c: Likewise.
+       * sysdeps/m68k/fpu/s_frexpf.c: Likewise.
+       * sysdeps/m68k/fpu/s_cos.c: Likewise.
+       * sysdeps/m68k/fpu/fraiseexcpt.c: Likewise.
+       * sysdeps/m68k/fpu/branred.c: Likewise.
+       * sysdeps/m68k/fpu/s_frexpl.c: Likewise.
+       * sysdeps/m68k/fpu/s_atan.c: Likewise.
+       * sysdeps/m68k/fpu/e_rem_pio2f.c: Likewise.
+       * sysdeps/m68k/fpu/e_scalbl.c: Likewise.
+       * sysdeps/m68k/fpu/e_exp2.c: Likewise.
+       * sysdeps/m68k/fpu/s_cexpf.c: Likewise.
+       * sysdeps/m68k/fpu/mplog.c: Likewise.
+       * sysdeps/m68k/fpu/s_rintf.c: Likewise.
+       * sysdeps/m68k/fpu/s_tanh.c: Likewise.
+       * sysdeps/m68k/fpu/e_scalbf.c: Likewise.
+       * sysdeps/m68k/fpu/s_csinhl.c: Likewise.
+       * sysdeps/m68k/fpu/s_floorl.c: Likewise.
+       * sysdeps/m68k/fpu/k_tanf.c: Likewise.
+       * sysdeps/m68k/fpu/k_tanl.c: Likewise.
+       * sysdeps/m68k/fpu/e_fmodf.c: Likewise.
+       * sysdeps/m68k/fpu/e_atanhf.c: Likewise.
+       * sysdeps/m68k/fpu/s_isnanf.c: Likewise.
+       * sysdeps/m68k/fpu/s_fpclassifyl.c: Likewise.
+       * sysdeps/m68k/fpu/s_modf.c: Likewise.
+       * sysdeps/m68k/fpu/e_log2.c: Likewise.
+       * sysdeps/m68k/fpu/e_acosf.c: Likewise.
+       * sysdeps/m68k/fpu/s_log1pl.c: Likewise.
+       * sysdeps/m68k/fpu/e_log2f.c: Likewise.
+       * sysdeps/m68k/fpu/mpa.c: Likewise.
+       * sysdeps/m68k/fpu/t_exp.c: Likewise.
+       * sysdeps/m68k/fpu/e_acos.c: Likewise.
+       * sysdeps/m68k/fpu/s_expm1l.c: Likewise.
+       * sysdeps/m68k/fpu/s_ccoshl.c: Likewise.
+       * sysdeps/m68k/fpu/s_sinf.c: Likewise.
+       * sysdeps/m68k/fpu/k_tan.c: Likewise.
+       * sysdeps/m68k/fpu/k_cosl.c: Likewise.
+       * sysdeps/m68k/fpu/e_remainder.c: Likewise.
+       * sysdeps/m68k/fpu/s_trunc.c: Likewise.
+       * sysdeps/m68k/fpu/s_sincos.c: Likewise.
+       * sysdeps/m68k/fpu/s_scalbnl.c: Likewise.
+       * sysdeps/m68k/fpu/s_finitef.c: Likewise.
+       * sysdeps/m68k/fpu/s_tanhl.c: Likewise.
+       * sysdeps/m68k/fpu/s_lrintl.c: Likewise.
+       * sysdeps/m68k/fpu/slowpow.c: Likewise.
+       * sysdeps/m68k/fpu/mpexp.c: Likewise.
+       * sysdeps/m68k/fpu/s_isnanl.c: Likewise.
+       * sysdeps/m68k/fpu/e_expf.c: Likewise.
+       * sysdeps/m68k/fpu/s_significand.c: Likewise.
+       * sysdeps/m68k/fpu/e_sinhf.c: Likewise.
+       * sysdeps/m68k/fpu/s_tanl.c: Likewise.
+       * sysdeps/m68k/fpu/s_tanhf.c: Likewise.
+       * sysdeps/m68k/fpu/s_cexp.c: Likewise.
+       * sysdeps/m68k/fpu/e_sqrtf.c: Likewise.
+       * sysdeps/m68k/fpu/s_isinf.c: Likewise.
+       * sysdeps/m68k/fpu/s_nearbyint.c: Likewise.
+       * sysdeps/m68k/fpu/e_fmod.c: Likewise.
+       * sysdeps/m68k/fpu/sincos32.c: Likewise.
+       * sysdeps/m68k/fpu/e_sqrtl.c: Likewise.
+       * sysdeps/m68k/fpu/s_sincosl.c: Likewise.
+       * sysdeps/m68k/fpu/e_atan2f.c: Likewise.
+       * sysdeps/m68k/fpu/s_nearbyintf.c: Likewise.
+       * sysdeps/m68k/fpu/e_fmodl.c: Likewise.
+       * sysdeps/m68k/fpu/e_coshf.c: Likewise.
+       * sysdeps/m68k/fpu/s_csinf.c: Likewise.
+       * sysdeps/m68k/fpu/s_ccosl.c: Likewise.
+       * sysdeps/m68k/fpu/e_sqrt.c: Likewise.
+       * sysdeps/m68k/fpu/s_sin.c: Likewise.
+       * sysdeps/m68k/fpu/e_asin.c: Likewise.
+       * sysdeps/m68k/fpu/mptan.c: Likewise.
+       * sysdeps/m68k/fpu/e_exp10f.c: Likewise.
+       * sysdeps/m68k/fpu/e_scalb.c: Likewise.
+       * sysdeps/m68k/fpu/s_finitel.c: Likewise.
+       * sysdeps/m68k/fpu/e_log10.c: Likewise.
+       * sysdeps/m68k/fpu/k_sinl.c: Likewise.
+       * sysdeps/m68k/fpu/e_remainderl.c: Likewise.
+       * sysdeps/m68k/fpu/s_remquol.c: Likewise.
+       * sysdeps/m68k/fpu/s_scalblnf.c: Likewise.
+       * sysdeps/m68k/fpu/s_llrint.c: Likewise.
+       * sysdeps/m68k/fpu/e_rem_pio2.c: Likewise.
+       * sysdeps/m68k/fpu/e_asinl.c: Likewise.
+       * sysdeps/m68k/fpu/e_logl.c: Likewise.
+       * sysdeps/m68k/fpu/s_cosf.c: Likewise.
+       * sysdeps/m68k/fpu/s_rint.c: Likewise.
+       * sysdeps/m68k/fpu/s_ceill.c: Likewise.
+       * sysdeps/m68k/fpu/s_modfl.c: Likewise.
+       * sysdeps/m68k/fpu/s_csinl.c: Likewise.
+       * sysdeps/m68k/fpu/s_tan.c: Likewise.
+       * sysdeps/m68k/fpu/s_sincosf.c: Likewise.
+       * sysdeps/m68k/fpu/dosincos.c: Likewise.
+       * sysdeps/m68k/fpu/e_powl.c: Likewise.
+       * sysdeps/m68k/fpu/s_ilogb.c: Likewise.
+       * sysdeps/m68k/fpu/s_llrintl.c: Likewise.
+       * sysdeps/m68k/fpu/e_expl.c: Likewise.
+       * sysdeps/m68k/fpu/libm-test-ulps: Likewise.
+       * sysdeps/m68k/fpu/s_tanf.c: Likewise.
+       * sysdeps/m68k/fpu/mpsqrt.c: Likewise.
+       * sysdeps/m68k/fpu/s_sinl.c: Likewise.
+       * sysdeps/m68k/fpu/mathimpl.h: Likewise.
+       * sysdeps/m68k/fpu/e_acosl.c: Likewise.
+       * sysdeps/m68k/fpu/e_cosh.c: Likewise.
+       * sysdeps/m68k/fpu/s_cexpl.c: Likewise.
+       * sysdeps/m68k/fpu/s_fabsl.c: Likewise.
+       * sysdeps/m68k/fpu/halfulp.c: Likewise.
+       * sysdeps/m68k/fpu/s_modff.c: Likewise.
+       * sysdeps/m68k/fpu/s_isnan.c: Likewise.
+       * sysdeps/m68k/fpu/e_atan2.c: Likewise.
+       * sysdeps/m68k/fpu/s_fabs.c: Likewise.
+       * sysdeps/m68k/fpu/e_log10f.c: Likewise.
+       * sysdeps/m68k/fpu/k_cosf.c: Likewise.
+       * sysdeps/m68k/fpu/e_sinh.c: Likewise.
+       * sysdeps/m68k/fpu/s_truncf.c: Likewise.
+       * sysdeps/m68k/fpu/s_ceil.c: Likewise.
+       * sysdeps/m68k/fpu/s_log1pf.c: Likewise.
+       * sysdeps/m68k/fpu/e_logf.c: Likewise.
+       * sysdeps/m68k/fpu/mpatan.c: Likewise.
+       * sysdeps/m68k/fpu/s_csin.c: Likewise.
+       * sysdeps/m68k/fpu/e_exp2l.c: Likewise.
+       * sysdeps/m68k/fpu/e_sinhl.c: Likewise.
+       * sysdeps/m68k/fpu/e_atan2l.c: Likewise.
+       * sysdeps/m68k/fpu/s_scalbn.c: Likewise.
+       * sysdeps/m68k/fpu/s_floorf.c: Likewise.
+       * sysdeps/m68k/fpu/e_log2l.c: Likewise.
+       * sysdeps/m68k/fpu/s_atanl.c: Likewise.
+       * sysdeps/m68k/fpu/s_llrintf.c: Likewise.
+       * sysdeps/m68k/fpu/k_sinf.c: Likewise.
+       * sysdeps/m68k/fpu/s_csinhf.c: Likewise.
+       * sysdeps/m68k/fpu/s_frexp.c: Likewise.
+       * sysdeps/m68k/fpu/s_atanf.c: Likewise.
+       * sysdeps/m68k/fpu/s_floor.c: Likewise.
+       * sysdeps/m68k/fpu/e_exp10l.c: Likewise.
+       * sysdeps/m68k/fpu/doasin.c: Likewise.
+       * sysdeps/m68k/fpu/s_rintl.c: Likewise.
+       * sysdeps/m68k/fpu/e_atanhl.c: Likewise.
+       * sysdeps/m68k/fpu/e_remainderf.c: Likewise.
+       * sysdeps/m68k/fpu/s_scalbln.c: Likewise.
+       * sysdeps/m68k/fpu/e_rem_pio2l.c: Likewise.
+       * sysdeps/m68k/fpu/e_exp10.c: Likewise.
+       * sysdeps/m68k/fpu/s_lrintf.c: Likewise.
+       * sysdeps/m68k/fpu/k_cos.c: Likewise.
+       * sysdeps/m68k/fpu/s_lrint.c: Likewise.
+       * sysdeps/m68k/fpu/s_ccosf.c: Likewise.
+       * sysdeps/m68k/fpu/s_scalblnl.c: Likewise.
+       * sysdeps/m68k/fpu/switch/Makefile: Likewise.
+       * sysdeps/m68k/fpu/switch/switch.c: Likewise.
+       * sysdeps/m68k/fpu/switch/68881-sw.h: Likewise.
+       * sysdeps/m68k/fpu/switch/bits/mathinline.h: Likewise.
+       * sysdeps/m68k/fpu/e_log.c: Likewise.
+       * sysdeps/m68k/fpu/s_nextafterl.c: Likewise.
+       * sysdeps/m68k/fpu/s_nearbyintl.c: Likewise.
+       * sysdeps/m68k/fpu/mpatan2.c: Likewise.
+       * sysdeps/m68k/fpu/k_sin.c: Likewise.
+       * sysdeps/m68k/fpu/e_atanh.c: Likewise.
+       * sysdeps/m68k/fpu/s_remquo.c: Likewise.
+       * sysdeps/m68k/fpu/e_log10l.c: Likewise.
+       * sysdeps/m68k/fpu/s_ceilf.c: Likewise.
+       * sysdeps/m68k/fpu/s_fabsf.c: Likewise.
+       * sysdeps/m68k/fpu/s_significandl.c: Likewise.
+       * sysdeps/m68k/fpu/s_ccosh.c: Likewise.
+       * sysdeps/m68k/fpu/e_coshl.c: Likewise.
+       * sysdeps/m68k/fpu/s_scalbnf.c: Likewise.
+       * sysdeps/m68k/fpu/s_finite.c: Likewise.
+       * sysdeps/m68k/fpu/e_exp2f.c: Likewise.
+       * sysdeps/m68k/fpu/k_rem_pio2f.c: Likewise.
+       * sysdeps/m68k/fpu/s_isinfl.c: Likewise.
+       * sysdeps/m68k/fpu/bits/mathinline.h: Likewise.
+       * sysdeps/m68k/fpu/e_powf.c: Likewise.
+       * sysdeps/m68k/rshift.S: Likewise.
+       * sysdeps/m68k/lshift.S: Likewise.
+       * sysdeps/m68k/strtold_l.c: Likewise.
+       * sysdeps/m68k/printf_fphex.c: Likewise.
+       * sysdeps/m68k/s_isinfl.c: Likewise.
+       * sysdeps/m68k/bits/huge_vall.h: Likewise.
+
+       * sysdeps/m68k/asm-syntax.h (andw, andl, subqw, tstw, tstl): New.
+       * sysdeps/m68k/bits/byteswap.h (__bswap32): Don't define for
+       Coldfire targets.
+       * sysdeps/m68k/bits/setjmp.h (__jmp_buf): Add a 64-byte
+       __fpregs field for Coldfire FPUs.
+       * sysdeps/m68k/dl-machine.h: Include sysdep.h.
+       (elf_machine_load_address): Use PCREL_OP.
+       (_dl_start_user): Likewise.
+       * sysdeps/m68k/dl-trampoline.S (_dl_runtime_resolve): Avoid jmp (%dN)
+       on Coldfire; push the target address and use rts instead.
+       (_dl_runtime_profile): Likewise.  Round up the frame size to longword
+       rather than word alignment.  Avoid dbra on Coldfire.  Avoid using
+       jsr (%d0) on Coldfire; push the return address and target address
+       and use rts instead.  Use fmovem.l rather than fmovem.x on Coldfire.
+       Add missing initialization of lrv_a0 and restore a0 from it after
+       calling _dl_call_pltexit.  Adjust the stack offsets of later data
+       accordingly, fixing a previously incorrect offset for the inregs
+       parameter.
+       * sysdeps/m68k/fpu/fegetenv.c (__fegetenv): Save the control
+       registers individually on Coldfire targets.
+       * sysdeps/m68k/fpu/feholdexcpt.c (feholdexcept): Likewise.
+       Add missing libm_hidden_def.
+       * sysdeps/m68k/fpu/fesetenv.c (__fesetenv): Save and restore the
+       control registers individually on Coldfire targets.
+       * sysdeps/m68k/fpu/fesetround.c (fesetround): Add missing
+       libm_hidden_def.
+       * sysdeps/m68k/fpu_control.h: Add the Coldfire bit assignments to
+       the main comment.
+       (_FPU_DOUBLE): Define to 0 for Coldfire.
+       (_FPU_EXTENDED): Don't define for Coldfire.
+       (_FPU_RESERVED): Include bit 15 for Coldfire.
+       * sysdeps/m68k/Implies: Remove ieee754/ldbl-96.
+       * sysdeps/m68k/m680x0/Implies: Add it to this new file instead.
+       * sysdeps/m68k/ldsodefs.h: New file.
+       * sysdeps/m68k/__longjmp.c (__longjmp): Restore the floating-point
+       registers when using a Coldfire FPU.
+       * sysdeps/m68k/Makefile (long-double-fcts): Delete.
+       * sysdeps/m68k/m680x0/Makefile: Add it to this new file instead.
+       * sysdeps/m68k/memchr.S (__memchr): Add Coldfire code.  Avoid
+       unnecessary moves.
+       * sysdeps/m68k/preconfigure (m680?0): Add "m680x0" to $machine.
+       (m68k): Use the compiler to decide whether $machine should be
+       set to m68k/coldfire or m68k/m680x0/m68020.
+       * sysdeps/m68k/rawmemchr.S (__rawmemchr): Add Coldfire code.  Avoid
+       unnecessary moves.
+       * sysdeps/m68k/setjmp.c (__sigsetjmp): Save the floating-point
+       registers when using a Coldfire FPU.  Use libc_hidden_def rather
+       than hidden_def.
+       * sysdeps/m68k/strchrnul.S (__strchrnul): Add Coldfire code.  Avoid
+       unnecessary moves.
+       * sysdeps/m68k/strchr.S (strchr): Likewise.
+       * sysdeps/m68k/sysdep.h (PCREL_OP): Define.
+       * sysdeps/m68k/tst-audit.h: New file.
+       * sysdeps/m68k/wcpcpy.c: Likewise.
+       * sysdeps/m68k/wcpcpy_chk.c: Likewise.
+       * sysdeps/unix/sysv/linux/m68k/configure.in: New file.
+       * sysdeps/unix/sysv/linux/m68k/configure: Likewise.
+       * sysdeps/unix/sysv/linux/m68k/clone.S (__clone): Add Coldfire code.
+       * sysdeps/unix/sysv/linux/m68k/register-dump.h (real_catch_segfault):
+       Do not define on Coldfire.
+       (catch_segfault): Likewise.
+       (register_dump): Use the Coldfire-specific sigcontext fields to
+       display call-saved data and address registers (rather than the
+       data stored in sc_fpstate by real_catch_segfault).  Display 8-byte 
+       floating-point registers on Coldfire.
+       * sysdeps/unix/sysv/linux/m68k/socket.S (__socket): Pass a temporary
+       register to SINGLE_THREAD_P.
+       * sysdeps/unix/sysv/linux/m68k/sys/reg.h (PT_FP0): Redefine for
+       Coldfire.
+       (PT_FP1, PT_FP2, PT_FP3, PT_FP4, PT_FP5, PT_FP6, PT_FP7): Likewise.
+       * sysdeps/unix/sysv/linux/m68k/sys/ucontext.h (fpregset): Sync field
+       order with linux.  Make f_fpregs an 8*2 array on Coldfire.
+       (ucontext): Sync field order with linux.
+       * sysdeps/unix/sysv/linux/m68k/sysdep.h: Guard against multiple
+       inclusion.
+       (SYSCALL_ERROR_HANDLER): Use PCREL_OP.
+       * sysdeps/unix/sysv/linux/m68k/syscalls.list (oldgetrlimit): Delete.
+       (oldsetrlimit): Likewise.
+       * sysdeps/unix/sysv/linux/m68k/m680x0/syscalls.list: New file.
+       List oldgetrlimit and oldsetrlimit here instead.
+       * sysdeps/unix/sysv/linux/m68k/bits/sigcontext.h: New file.
+       * sysdeps/unix/sysv/linux/m68k/bits/siginfo.h: Likewise.
+       * sysdeps/m68k/coldfire/bits/atomic.h: Likewise.
+       * sysdeps/m68k/coldfire/fpu/e_sqrt.c: Likewise.
+       * sysdeps/m68k/coldfire/fpu/e_sqrtf.c: Likewise.
+       * sysdeps/m68k/coldfire/fpu/fraiseexcpt.c: Likewise.
+       * sysdeps/m68k/coldfire/fpu/libm-test-ulps: Likewise.
+       * sysdeps/m68k/coldfire/fpu/s_fabs.c: Likewise.
+       * sysdeps/m68k/coldfire/fpu/s_fabsf.c: Likewise.
+       * sysdeps/m68k/coldfire/fpu/s_lrint.c: Likewise.
+       * sysdeps/m68k/coldfire/fpu/s_lrintf.c: Likewise.
+       * sysdeps/m68k/coldfire/fpu/s_rint.c: Likewise.
+       * sysdeps/m68k/coldfire/fpu/s_rintf.c: Likewise.
+       * sysdeps/m68k/coldfire/shlib-versions: Likewise.
+
 2006-02-28  Roland McGrath  <roland@redhat.com>
 
        * sysdeps/m68k/preconfigure: New file.
index 5c778d4..beaba93 100644 (file)
@@ -1,5 +1,4 @@
 wordsize-32
 # 68k uses IEEE 754 floating point.
-ieee754/ldbl-96
 ieee754/dbl-64
 ieee754/flt-32
index fab6bd5..ca0d500 100644 (file)
@@ -30,9 +30,6 @@ pic-ccflag = -fpic
 # Make sure setjmp.c is compiled with a frame pointer
 CFLAGS-setjmp.c := -fno-omit-frame-pointer
 
-# The 68k `long double' is a distinct type we support.
-long-double-fcts = yes
-
 ifeq ($(subdir),elf)
 CFLAGS-rtld.c += -Wno-uninitialized -Wno-unused
 endif
index 89ff5ba..7d876a7 100644 (file)
@@ -31,6 +31,9 @@ __longjmp (__jmp_buf env, int val)
   /* Restore the floating-point registers.  */
   asm volatile("fmovem%.x %0, %/fp0-%/fp7" :
               /* No outputs.  */ : "g" (env[0].__fpregs[0]));
+#elif defined (__mcffpu__)
+  asm volatile("fmovem %0, %/fp0-%/fp7" :
+              /* No outputs.  */ : "m" (env[0].__fpregs[0]));
 #endif
 
   /* Put VAL in D0.  */
index 8e2a4ca..645e906 100644 (file)
@@ -93,7 +93,9 @@
 #define cmpl cmp.l
 #define orl or.l
 #define clrl clr.l
+#define andw and.w
 #define eorw eor.w
+#define andl and.l
 #define lsrl lsr.l
 #define lsll lsl.l
 #define roxrl roxr.l
 #define addql addq.l
 #define subl sub.l
 #define subxl subx.l
+#define subqw subq.w
 #define subql subq.l
 #define negl neg.l
 #define mulul mulu.l
+#define tstw tst.w
+#define tstl tst.l
 #endif
index 549d445..41b386b 100644 (file)
@@ -35,7 +35,7 @@
   ((((x) & 0xff000000) >> 24) | (((x) & 0x00ff0000) >>  8) | \
    (((x) & 0x0000ff00) <<  8) | (((x) & 0x000000ff) << 24))
 
-#if defined __GNUC__ && __GNUC__ >= 2
+#if defined __GNUC__ && __GNUC__ >= 2 && !defined(__mcoldfire__)
 # define __bswap_32(x) \
   __extension__                                                        \
   ({ unsigned int __bswap_32_v;                                        \
index 2d5a082..27ec051 100644 (file)
@@ -38,6 +38,8 @@ typedef struct
     /* There are eight floating point registers which
        are saved in IEEE 96-bit extended format.  */
     char __fpregs[8 * (96 / 8)];
+#elif defined __mcffpu__
+    char __fpregs[8 * (64 / 8)];
 #endif
 
   } __jmp_buf[1];
diff --git a/sysdeps/m68k/coldfire/bits/atomic.h b/sysdeps/m68k/coldfire/bits/atomic.h
new file mode 100644 (file)
index 0000000..8b5403e
--- /dev/null
@@ -0,0 +1,69 @@
+/* Copyright (C) 2003, 2006 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef _BITS_ATOMIC_H
+#define _BITS_ATOMIC_H 1
+
+#include <stdint.h>
+
+/* Coldfire has no atomic compare-and-exchange operation, and the
+   kernel provides no userspace atomicity operations.  Here we just
+   use generic non-atomic implementations instead.  */
+
+typedef int8_t atomic8_t;
+typedef uint8_t uatomic8_t;
+typedef int_fast8_t atomic_fast8_t;
+typedef uint_fast8_t uatomic_fast8_t;
+
+typedef int16_t atomic16_t;
+typedef uint16_t uatomic16_t;
+typedef int_fast16_t atomic_fast16_t;
+typedef uint_fast16_t uatomic_fast16_t;
+
+typedef int32_t atomic32_t;
+typedef uint32_t uatomic32_t;
+typedef int_fast32_t atomic_fast32_t;
+typedef uint_fast32_t uatomic_fast32_t;
+
+typedef int64_t atomic64_t;
+typedef uint64_t uatomic64_t;
+typedef int_fast64_t atomic_fast64_t;
+typedef uint_fast64_t uatomic_fast64_t;
+
+typedef intptr_t atomicptr_t;
+typedef uintptr_t uatomicptr_t;
+typedef intmax_t atomic_max_t;
+typedef uintmax_t uatomic_max_t;
+
+/* The only basic operation needed is compare and exchange.  */
+#define atomic_compare_and_exchange_val_acq(mem, newval, oldval) \
+  ({ __typeof (mem) __gmemp = (mem);                                 \
+     __typeof (*mem) __gret = *__gmemp;                                      \
+     __typeof (*mem) __gnewval = (newval);                           \
+                                                                     \
+     if (__gret == (oldval))                                         \
+       *__gmemp = __gnewval;                                         \
+     __gret; })
+
+#define atomic_compare_and_exchange_bool_acq(mem, newval, oldval) \
+  ({ __typeof (mem) __gmemp = (mem);                                 \
+     __typeof (*mem) __gnewval = (newval);                           \
+                                                                     \
+     *__gmemp == (oldval) ? (*__gmemp = __gnewval, 0) : 1; })
+
+#endif
diff --git a/sysdeps/m68k/coldfire/fpu/e_sqrt.c b/sysdeps/m68k/coldfire/fpu/e_sqrt.c
new file mode 100644 (file)
index 0000000..a160308
--- /dev/null
@@ -0,0 +1,24 @@
+/* Copyright (C) 2006 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+double
+__ieee754_sqrt (double x)
+{
+  asm ("fdsqrt.d %1,%0" : "=f" (x) : "fm" (x));
+  return x;
+}
diff --git a/sysdeps/m68k/coldfire/fpu/e_sqrtf.c b/sysdeps/m68k/coldfire/fpu/e_sqrtf.c
new file mode 100644 (file)
index 0000000..7cfc0dd
--- /dev/null
@@ -0,0 +1,25 @@
+/* Copyright (C) 2006 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+float
+__ieee754_sqrtf (float x)
+{
+  double result;
+  asm ("fssqrt.s %1,%0" : "=f" (result) : "dm" (x));
+  return result;
+}
diff --git a/sysdeps/m68k/coldfire/fpu/fraiseexcpt.c b/sysdeps/m68k/coldfire/fpu/fraiseexcpt.c
new file mode 100644 (file)
index 0000000..c62ddaa
--- /dev/null
@@ -0,0 +1,67 @@
+/* Raise given exceptions.
+   Copyright (C) 2006 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <fenv.h>
+#include <float.h>
+#include <math.h>
+
+int
+feraiseexcept (int excepts)
+{
+  /* Raise exceptions represented by EXCEPTS.  But we must raise only one
+     signal at a time.  It is important that if the overflow/underflow
+     exception and the divide by zero exception are given at the same
+     time, the overflow/underflow exception follows the divide by zero
+     exception.
+
+     The Coldfire FPU allows an exception to be raised by asserting
+     the associated EXC bit and then executing an arbitrary arithmetic
+     instruction.  fmove.l is classified as an arithmetic instruction
+     and suffices for this purpose.
+
+     We therefore raise an exception by setting both the EXC and AEXC
+     bit associated with the exception (the former being 6 bits to the
+     left of the latter) and then loading the longword at (%sp) into an
+     FP register.  */
+
+  inline void
+  raise_one_exception (int mask)
+  {
+    if (excepts & mask)
+      {
+       int fpsr;
+       double unused;
+
+       asm volatile ("fmove%.l %/fpsr,%0" : "=d" (fpsr));
+       fpsr |= (mask << 6) | mask;
+       asm volatile ("fmove%.l %0,%/fpsr" :: "d" (fpsr));
+       asm volatile ("fmove%.l (%%sp),%0" : "=f" (unused));
+      }
+  }
+
+  raise_one_exception (FE_INVALID);
+  raise_one_exception (FE_DIVBYZERO);
+  raise_one_exception (FE_OVERFLOW);
+  raise_one_exception (FE_UNDERFLOW);
+  raise_one_exception (FE_INEXACT);
+
+  /* Success.  */
+  return 0;
+}
+libm_hidden_def (feraiseexcept)
diff --git a/sysdeps/m68k/coldfire/fpu/libm-test-ulps b/sysdeps/m68k/coldfire/fpu/libm-test-ulps
new file mode 100644 (file)
index 0000000..8608c0d
--- /dev/null
@@ -0,0 +1,820 @@
+# Begin of automatic generation
+
+# atan2
+Test "atan2 (-0.75, -1.0) == -2.49809154479650885165983415456218025":
+float: 1
+ifloat: 1
+Test "atan2 (0.75, -1.0) == 2.49809154479650885165983415456218025":
+float: 1
+ifloat: 1
+Test "atan2 (1.390625, 0.9296875) == 0.981498387184244311516296577615519772":
+float: 1
+ifloat: 1
+
+# atanh
+Test "atanh (0.75) == 0.972955074527656652552676371721589865":
+float: 1
+ifloat: 1
+
+# cacosh
+Test "Imaginary part of: cacosh (-2 - 3 i) == 1.9833870299165354323470769028940395 - 2.1414491111159960199416055713254211 i":
+float: 1
+ifloat: 1
+
+# casin
+Test "Real part of: casin (0.75 + 1.25 i) == 0.453276177638793913448921196101971749 + 1.13239363160530819522266333696834467 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+
+# casinh
+Test "Real part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
+double: 5
+float: 1
+idouble: 5
+ifloat: 1
+Test "Imaginary part of: casinh (-2 - 3 i) == -1.9686379257930962917886650952454982 - 0.96465850440760279204541105949953237 i":
+double: 3
+float: 6
+idouble: 3
+ifloat: 6
+Test "Real part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: casinh (0.75 + 1.25 i) == 1.03171853444778027336364058631006594 + 0.911738290968487636358489564316731207 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+
+# catan
+Test "Imaginary part of: catan (-2 - 3 i) == -1.4099210495965755225306193844604208 - 0.22907268296853876629588180294200276 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+
+# catanh
+Test "Real part of: catanh (-2 - 3 i) == -0.14694666622552975204743278515471595 - 1.3389725222944935611241935759091443 i":
+double: 4
+idouble: 4
+Test "Real part of: catanh (0.75 + 1.25 i) == 0.261492138795671927078652057366532140 + 0.996825126463918666098902241310446708 i":
+double: 1
+idouble: 1
+
+# cbrt
+Test "cbrt (-27.0) == -3.0":
+double: 1
+idouble: 1
+Test "cbrt (0.75) == 0.908560296416069829445605878163630251":
+double: 1
+idouble: 1
+Test "cbrt (0.9921875) == 0.997389022060725270579075195353955217":
+double: 1
+idouble: 1
+
+# ccos
+Test "Imaginary part of: ccos (-2 - 3 i) == -4.18962569096880723013255501961597373 - 9.10922789375533659797919726277886212 i":
+float: 1
+ifloat: 1
+Test "Real part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: ccos (0.75 + 1.25 i) == 1.38173873063425888530729933139078645 - 1.09193013555397466170919531722024128 i":
+float: 1
+ifloat: 1
+
+# ccosh
+Test "Real part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: ccosh (-2 - 3 i) == -3.72454550491532256547397070325597253 + 0.511822569987384608834463849801875634 i":
+float: 1
+ifloat: 1
+Test "Real part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "Imaginary part of: ccosh (0.75 + 1.25 i) == 0.408242591877968807788852146397499084 + 0.780365930845853240391326216300863152 i":
+float: 1
+ifloat: 1
+
+# cexp
+Test "Imaginary part of: cexp (-2.0 - 3.0 i) == -0.13398091492954261346140525546115575 - 0.019098516261135196432576240858800925 i":
+float: 1
+ifloat: 1
+Test "Real part of: cexp (0.75 + 1.25 i) == 0.667537446429131586942201977015932112 + 2.00900045494094876258347228145863909 i":
+float: 1
+ifloat: 1
+
+# clog
+Test "Real part of: clog (0.75 + 1.25 i) == 0.376885901188190075998919126749298416 + 1.03037682652431246378774332703115153 i":
+float: 1
+ifloat: 1
+
+# clog10
+Test "Imaginary part of: clog10 (-0 + inf i) == inf + pi/2*log10(e) i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: clog10 (-0 - inf i) == inf - pi/2*log10(e) i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: clog10 (-2 - 3 i) == 0.556971676153418384603252578971164214 - 0.937554462986374708541507952140189646 i":
+double: 1
+idouble: 1
+Test "Imaginary part of: clog10 (-3 + inf i) == inf + pi/2*log10(e) i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: clog10 (-3 - inf i) == inf - pi/2*log10(e) i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: clog10 (-inf + 0 i) == inf + pi*log10(e) i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: clog10 (-inf + 1 i) == inf + pi*log10(e) i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: clog10 (-inf - 0 i) == inf - pi*log10(e) i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: clog10 (-inf - 1 i) == inf - pi*log10(e) i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: clog10 (0 + inf i) == inf + pi/2*log10(e) i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: clog10 (0 - inf i) == inf - pi/2*log10(e) i":
+float: 1
+ifloat: 1
+Test "Real part of: clog10 (0.75 + 1.25 i) == 0.163679467193165171449476605077428975 + 0.447486970040493067069984724340855636 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: clog10 (3 + inf i) == inf + pi/2*log10(e) i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: clog10 (3 - inf i) == inf - pi/2*log10(e) i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: clog10 (inf + inf i) == inf + pi/4*log10(e) i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: clog10 (inf - inf i) == inf - pi/4*log10(e) i":
+float: 1
+ifloat: 1
+
+# cos
+Test "cos (M_PI_6l * 2.0) == 0.5":
+double: 1
+idouble: 1
+Test "cos (M_PI_6l * 4.0) == -0.5":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+
+# cpow
+Test "Real part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: cpow (0.75 + 1.25 i, 0.0 + 1.0 i) == 0.331825439177608832276067945276730566 + 0.131338600281188544930936345230903032 i":
+float: 1
+ifloat: 1
+Test "Real part of: cpow (0.75 + 1.25 i, 0.75 + 1.25 i) == 0.117506293914473555420279832210420483 + 0.346552747708338676483025352060418001 i":
+double: 1
+float: 4
+idouble: 1
+ifloat: 4
+Test "Real part of: cpow (0.75 + 1.25 i, 1.0 + 1.0 i) == 0.0846958290317209430433805274189191353 + 0.513285749182902449043287190519090481 i":
+double: 2
+float: 3
+idouble: 2
+ifloat: 3
+Test "Real part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
+double: 1
+float: 4
+idouble: 1
+ifloat: 4
+Test "Imaginary part of: cpow (2 + 3 i, 4 + 0 i) == -119.0 - 120.0 i":
+float: 2
+ifloat: 2
+Test "Imaginary part of: cpow (e + 0 i, 0 + 2 * M_PIl i) == 1.0 + 0.0 i":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+
+# csinh
+Test "Imaginary part of: csinh (-2 - 3 i) == 3.59056458998577995201256544779481679 - 0.530921086248519805267040090660676560 i":
+double: 1
+idouble: 1
+Test "Real part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
+float: 1
+ifloat: 1
+Test "Imaginary part of: csinh (0.75 + 1.25 i) == 0.259294854551162779153349830618433028 + 1.22863452409509552219214606515777594 i":
+float: 1
+ifloat: 1
+
+# csqrt
+Test "Real part of: csqrt (-2 + 3 i) == 0.89597747612983812471573375529004348 + 1.6741492280355400404480393008490519 i":
+float: 1
+ifloat: 1
+Test "Real part of: csqrt (-2 - 3 i) == 0.89597747612983812471573375529004348 - 1.6741492280355400404480393008490519 i":
+float: 1
+ifloat: 1
+
+# ctan
+Test "Imaginary part of: ctan (0.75 + 1.25 i) == 0.160807785916206426725166058173438663 + 0.975363285031235646193581759755216379 i":
+double: 1
+idouble: 1
+
+# ctanh
+Test "Real part of: ctanh (-2 - 3 i) == -0.965385879022133124278480269394560686 + 0.988437503832249372031403430350121098e-2 i":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+Test "Imaginary part of: ctanh (0 + pi/4 i) == 0.0 + 1.0 i":
+float: 1
+ifloat: 1
+Test "Real part of: ctanh (0.75 + 1.25 i) == 1.37260757053378320258048606571226857 + 0.385795952609750664177596760720790220 i":
+double: 1
+idouble: 1
+
+# erf
+Test "erf (1.25) == 0.922900128256458230136523481197281140":
+double: 1
+idouble: 1
+
+# erfc
+Test "erfc (2.0) == 0.00467773498104726583793074363274707139":
+double: 1
+idouble: 1
+Test "erfc (4.125) == 0.542340079956506600531223408575531062e-8":
+double: 1
+idouble: 1
+
+# exp10
+Test "exp10 (-1) == 0.1":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+Test "exp10 (0.75) == 5.62341325190349080394951039776481231":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "exp10 (3) == 1000":
+double: 6
+float: 2
+idouble: 6
+ifloat: 2
+
+# expm1
+Test "expm1 (0.75) == 1.11700001661267466854536981983709561":
+double: 1
+idouble: 1
+Test "expm1 (1) == M_El - 1.0":
+float: 1
+ifloat: 1
+
+# hypot
+Test "hypot (-0.7, -12.4) == 12.419742348374220601176836866763271":
+float: 1
+ifloat: 1
+Test "hypot (-0.7, 12.4) == 12.419742348374220601176836866763271":
+float: 1
+ifloat: 1
+Test "hypot (-12.4, -0.7) == 12.419742348374220601176836866763271":
+float: 1
+ifloat: 1
+Test "hypot (-12.4, 0.7) == 12.419742348374220601176836866763271":
+float: 1
+ifloat: 1
+Test "hypot (0.7, -12.4) == 12.419742348374220601176836866763271":
+float: 1
+ifloat: 1
+Test "hypot (0.7, 12.4) == 12.419742348374220601176836866763271":
+float: 1
+ifloat: 1
+Test "hypot (12.4, -0.7) == 12.419742348374220601176836866763271":
+float: 1
+ifloat: 1
+Test "hypot (12.4, 0.7) == 12.419742348374220601176836866763271":
+float: 1
+ifloat: 1
+
+# j0
+Test "j0 (-4.0) == -3.9714980986384737228659076845169804197562E-1":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "j0 (0.75) == 0.864242275166648623555731103820923211":
+float: 1
+ifloat: 1
+Test "j0 (10.0) == -0.245935764451348335197760862485328754":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+Test "j0 (2.0) == 0.223890779141235668051827454649948626":
+float: 2
+ifloat: 2
+Test "j0 (4.0) == -3.9714980986384737228659076845169804197562E-1":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "j0 (8.0) == 0.171650807137553906090869407851972001":
+float: 1
+ifloat: 1
+
+# j1
+Test "j1 (10.0) == 0.0434727461688614366697487680258592883":
+float: 2
+ifloat: 2
+Test "j1 (2.0) == 0.576724807756873387202448242269137087":
+double: 1
+idouble: 1
+Test "j1 (8.0) == 0.234636346853914624381276651590454612":
+double: 1
+idouble: 1
+
+# jn
+Test "jn (0, -4.0) == -3.9714980986384737228659076845169804197562E-1":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "jn (0, 0.75) == 0.864242275166648623555731103820923211":
+float: 1
+ifloat: 1
+Test "jn (0, 10.0) == -0.245935764451348335197760862485328754":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+Test "jn (0, 2.0) == 0.223890779141235668051827454649948626":
+float: 2
+ifloat: 2
+Test "jn (0, 4.0) == -3.9714980986384737228659076845169804197562E-1":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "jn (0, 8.0) == 0.171650807137553906090869407851972001":
+float: 1
+ifloat: 1
+Test "jn (1, 10.0) == 0.0434727461688614366697487680258592883":
+float: 2
+ifloat: 2
+Test "jn (1, 2.0) == 0.576724807756873387202448242269137087":
+double: 1
+idouble: 1
+Test "jn (1, 8.0) == 0.234636346853914624381276651590454612":
+double: 1
+idouble: 1
+Test "jn (10, 0.125) == 0.250543369809369890173993791865771547e-18":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "jn (10, 0.75) == 0.149621713117596814698712483621682835e-10":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "jn (10, 10.0) == 0.207486106633358857697278723518753428":
+double: 4
+float: 3
+idouble: 4
+ifloat: 3
+Test "jn (10, 2.0) == 0.251538628271673670963516093751820639e-6":
+float: 4
+ifloat: 4
+Test "jn (3, 0.125) == 0.406503832554912875023029337653442868e-4":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "jn (3, 0.75) == 0.848438342327410884392755236884386804e-2":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "jn (3, 10.0) == 0.0583793793051868123429354784103409563":
+double: 3
+float: 1
+idouble: 3
+ifloat: 1
+Test "jn (3, 2.0) == 0.128943249474402051098793332969239835":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+
+# lgamma
+Test "lgamma (0.7) == 0.260867246531666514385732417016759578":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "lgamma (1.2) == -0.853740900033158497197028392998854470e-1":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+
+# log10
+Test "log10 (0.75) == -0.124938736608299953132449886193870744":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+Test "log10 (e) == log10(e)":
+float: 1
+ifloat: 1
+
+# log1p
+Test "log1p (-0.25) == -0.287682072451780927439219005993827432":
+float: 1
+ifloat: 1
+
+# sincos
+Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.5 in cos_res":
+double: 1
+idouble: 1
+Test "sincos (M_PI_6l*2.0, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in sin_res":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "sincos (pi/6, &sin_res, &cos_res) puts 0.86602540378443864676372317075293616 in cos_res":
+float: 1
+ifloat: 1
+
+# tgamma
+Test "tgamma (-0.5) == -2 sqrt (pi)":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "tgamma (0.5) == sqrt (pi)":
+float: 1
+ifloat: 1
+Test "tgamma (0.7) == 1.29805533264755778568117117915281162":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+
+# y0
+Test "y0 (1.0) == 0.0882569642156769579829267660235151628":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+Test "y0 (1.5) == 0.382448923797758843955068554978089862":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+Test "y0 (10.0) == 0.0556711672835993914244598774101900481":
+float: 1
+ifloat: 1
+Test "y0 (8.0) == 0.223521489387566220527323400498620359":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+
+# y1
+Test "y1 (0.125) == -5.19993611253477499595928744876579921":
+double: 1
+idouble: 1
+Test "y1 (1.5) == -0.412308626973911295952829820633445323":
+float: 1
+ifloat: 1
+Test "y1 (10.0) == 0.249015424206953883923283474663222803":
+double: 3
+float: 1
+idouble: 3
+ifloat: 1
+Test "y1 (2.0) == -0.107032431540937546888370772277476637":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "y1 (8.0) == -0.158060461731247494255555266187483550":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+
+# yn
+Test "yn (0, 1.0) == 0.0882569642156769579829267660235151628":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+Test "yn (0, 1.5) == 0.382448923797758843955068554978089862":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+Test "yn (0, 10.0) == 0.0556711672835993914244598774101900481":
+float: 1
+ifloat: 1
+Test "yn (0, 8.0) == 0.223521489387566220527323400498620359":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "yn (1, 0.125) == -5.19993611253477499595928744876579921":
+double: 1
+idouble: 1
+Test "yn (1, 1.5) == -0.412308626973911295952829820633445323":
+float: 1
+ifloat: 1
+Test "yn (1, 10.0) == 0.249015424206953883923283474663222803":
+double: 3
+float: 1
+idouble: 3
+ifloat: 1
+Test "yn (1, 2.0) == -0.107032431540937546888370772277476637":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "yn (1, 8.0) == -0.158060461731247494255555266187483550":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+Test "yn (10, 0.125) == -127057845771019398.252538486899753195":
+double: 1
+idouble: 1
+Test "yn (10, 0.75) == -2133501638.90573424452445412893839236":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "yn (10, 1.0) == -121618014.278689189288130426667971145":
+double: 1
+idouble: 1
+Test "yn (10, 10.0) == -0.359814152183402722051986577343560609":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "yn (10, 2.0) == -129184.542208039282635913145923304214":
+double: 2
+idouble: 2
+Test "yn (3, 0.125) == -2612.69757350066712600220955744091741":
+double: 1
+idouble: 1
+Test "yn (3, 0.75) == -12.9877176234475433186319774484809207":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "yn (3, 10.0) == -0.251362657183837329779204747654240998":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+Test "yn (3, 2.0) == -1.12778377684042778608158395773179238":
+double: 1
+idouble: 1
+
+# Maximal error of functions:
+Function: "atan2":
+float: 1
+ifloat: 1
+
+Function: "atanh":
+float: 1
+ifloat: 1
+
+Function: Imaginary part of "cacosh":
+float: 1
+ifloat: 1
+
+Function: Real part of "casin":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+
+Function: Real part of "casinh":
+double: 5
+float: 1
+idouble: 5
+ifloat: 1
+
+Function: Imaginary part of "casinh":
+double: 3
+float: 6
+idouble: 3
+ifloat: 6
+
+Function: Imaginary part of "catan":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+
+Function: Real part of "catanh":
+double: 4
+idouble: 4
+
+Function: "cbrt":
+double: 1
+idouble: 1
+
+Function: Real part of "ccos":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+
+Function: Imaginary part of "ccos":
+float: 1
+ifloat: 1
+
+Function: Real part of "ccosh":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+
+Function: Imaginary part of "ccosh":
+float: 1
+ifloat: 1
+
+Function: Real part of "cexp":
+float: 1
+ifloat: 1
+
+Function: Imaginary part of "cexp":
+float: 1
+ifloat: 1
+
+Function: Real part of "clog":
+float: 1
+ifloat: 1
+
+Function: Real part of "clog10":
+float: 1
+ifloat: 1
+
+Function: Imaginary part of "clog10":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+
+Function: "cos":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+
+Function: Real part of "cpow":
+double: 2
+float: 4
+idouble: 2
+ifloat: 4
+
+Function: Imaginary part of "cpow":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+
+Function: Real part of "csinh":
+float: 1
+ifloat: 1
+
+Function: Imaginary part of "csinh":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+
+Function: Real part of "csqrt":
+float: 1
+ifloat: 1
+
+Function: Imaginary part of "ctan":
+double: 1
+idouble: 1
+
+Function: Real part of "ctanh":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+
+Function: Imaginary part of "ctanh":
+float: 1
+ifloat: 1
+
+Function: "erf":
+double: 1
+idouble: 1
+
+Function: "erfc":
+double: 1
+idouble: 1
+
+Function: "exp10":
+double: 6
+float: 2
+idouble: 6
+ifloat: 2
+
+Function: "expm1":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+
+Function: "hypot":
+float: 1
+ifloat: 1
+
+Function: "j0":
+double: 2
+float: 2
+idouble: 2
+ifloat: 2
+
+Function: "j1":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+
+Function: "jn":
+double: 4
+float: 4
+idouble: 4
+ifloat: 4
+
+Function: "lgamma":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+
+Function: "log10":
+double: 1
+float: 2
+idouble: 1
+ifloat: 2
+
+Function: "log1p":
+float: 1
+ifloat: 1
+
+Function: "sincos":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+
+Function: "tan":
+double: 1
+idouble: 1
+
+Function: "tgamma":
+double: 1
+float: 1
+idouble: 1
+ifloat: 1
+
+Function: "y0":
+double: 2
+float: 1
+idouble: 2
+ifloat: 1
+
+Function: "y1":
+double: 3
+float: 2
+idouble: 3
+ifloat: 2
+
+Function: "yn":
+double: 3
+float: 2
+idouble: 3
+ifloat: 2
+
+# end of automatic generation
diff --git a/sysdeps/m68k/coldfire/fpu/s_fabs.c b/sysdeps/m68k/coldfire/fpu/s_fabs.c
new file mode 100644 (file)
index 0000000..45403cb
--- /dev/null
@@ -0,0 +1,29 @@
+/* Copyright (C) 2006 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+double
+__fabs (double x)
+{
+  asm ("fdabs.d %1,%0" : "=f" (x) : "fm" (x));
+  return x;
+}
+weak_alias (__fabs, fabs)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__fabs, __fabsl)
+weak_alias (__fabs, fabsl)
+#endif
diff --git a/sysdeps/m68k/coldfire/fpu/s_fabsf.c b/sysdeps/m68k/coldfire/fpu/s_fabsf.c
new file mode 100644 (file)
index 0000000..7622cc9
--- /dev/null
@@ -0,0 +1,25 @@
+/* Copyright (C) 2006 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+float
+__fabsf (float x)
+{
+  asm ("fsabs.s %1,%0" : "=f" (x) : "dm" (x));
+  return x;
+}
+weak_alias (__fabsf, fabsf)
diff --git a/sysdeps/m68k/coldfire/fpu/s_lrint.c b/sysdeps/m68k/coldfire/fpu/s_lrint.c
new file mode 100644 (file)
index 0000000..81fae95
--- /dev/null
@@ -0,0 +1,30 @@
+/* Copyright (C) 2006 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+long int
+__lrint (double x)
+{
+  long int result;
+  asm ("fmove.l %1,%0" : "=dm" (result) : "f" (x));
+  return result;
+}
+weak_alias (__lrint, lrint)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__lrint, __lrintl)
+weak_alias (__lrint, lrintl)
+#endif
diff --git a/sysdeps/m68k/coldfire/fpu/s_lrintf.c b/sysdeps/m68k/coldfire/fpu/s_lrintf.c
new file mode 100644 (file)
index 0000000..87ae5e0
--- /dev/null
@@ -0,0 +1,26 @@
+/* Copyright (C) 2006 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+long int
+__lrintf (float x)
+{
+  long int result;
+  asm ("fmove.l %1,%0" : "=dm" (result) : "f" (x));
+  return result;
+}
+weak_alias (__lrintf, lrintf)
diff --git a/sysdeps/m68k/coldfire/fpu/s_rint.c b/sysdeps/m68k/coldfire/fpu/s_rint.c
new file mode 100644 (file)
index 0000000..7be8bb6
--- /dev/null
@@ -0,0 +1,29 @@
+/* Copyright (C) 2006 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+double
+__rint (double x)
+{
+  asm ("fint.d %1,%0" : "=f" (x) : "fm" (x));
+  return x;
+}
+weak_alias (__rint, rint)
+#ifdef NO_LONG_DOUBLE
+strong_alias (__rint, __rintl)
+weak_alias (__rint, rintl)
+#endif
diff --git a/sysdeps/m68k/coldfire/fpu/s_rintf.c b/sysdeps/m68k/coldfire/fpu/s_rintf.c
new file mode 100644 (file)
index 0000000..2337d74
--- /dev/null
@@ -0,0 +1,26 @@
+/* Copyright (C) 2006 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+float
+__rintf (float x)
+{
+  double result;
+  asm ("fint.s %1,%0" : "=f" (result) : "dm" (x));
+  return (float) result;
+}
+weak_alias (__rintf, rintf)
diff --git a/sysdeps/m68k/coldfire/shlib-versions b/sysdeps/m68k/coldfire/shlib-versions
new file mode 100644 (file)
index 0000000..f4c68b2
--- /dev/null
@@ -0,0 +1 @@
+m68k-.*-linux.*         DEFAULT                 GLIBC_2.4
index f31b687..fad1ef9 100644 (file)
@@ -23,6 +23,7 @@
 #define ELF_MACHINE_NAME "m68k"
 
 #include <sys/param.h>
+#include <sysdep.h>
 
 /* Return nonzero iff ELF header is compatible with the running host.  */
 static inline int
@@ -48,7 +49,7 @@ static inline Elf32_Addr
 elf_machine_load_address (void)
 {
   Elf32_Addr addr;
-  asm ("lea _dl_start(%%pc), %0\n\t"
+  asm (PCREL_OP ("lea", "_dl_start", "%0", "%0", "%%pc") "\n\t"
        "sub.l _dl_start@GOT.w(%%a5), %0"
        : "=a" (addr));
   return addr;
@@ -130,7 +131,7 @@ _dl_start_user:\n\
        move.l %d0, %a4\n\
        | See if we were run as a command with the executable file\n\
        | name as an extra leading argument.\n\
-       move.l _dl_skip_args(%pc), %d0\n\
+       " PCREL_OP ("move.l", "_dl_skip_args", "%d0", "%d0", "%pc") "\n\
        | Pop the original argument count\n\
        move.l (%sp)+, %d1\n\
        | Subtract _dl_skip_args from it.\n\
@@ -143,12 +144,12 @@ _dl_start_user:\n\
        pea 8(%sp, %d1*4)\n\
        pea 8(%sp)\n\
        move.l %d1, -(%sp)\n\
-       move.l _rtld_local(%pc), -(%sp)\n\
+       " PCREL_OP ("move.l", "_rtld_local", "-(%sp)", "%d0", "%pc") "\n\
        jbsr _dl_init_internal@PLTPC\n\
        addq.l #8, %sp\n\
        addq.l #8, %sp\n\
        | Pass our finalizer function to the user in %a1.\n\
-       lea _dl_fini(%pc), %a1\n\
+       " PCREL_OP ("lea", "_dl_fini", "%a1", "%a1", "%pc") "\n\
        | Initialize %fp with the stack pointer.\n\
        move.l %sp, %fp\n\
        | Jump to the user's entry point.\n\
index 8791280..e324da1 100644 (file)
@@ -34,7 +34,12 @@ _dl_runtime_resolve:
        | Pop parameters
        addq.l #8, %sp
        | Call real function.
+#ifdef __mcoldfire__
+       move.l %d0,-(%sp)
+       rts
+#else
        jmp (%d0)
+#endif
        .size _dl_runtime_resolve, . - _dl_runtime_resolve
 
        .text
@@ -64,7 +69,12 @@ _dl_runtime_profile:
        move.l (%sp)+, %a1
        lea 12(%sp), %sp
        | Call real function.
+#ifdef __mcoldfire__
+       move.l %d0,-(%sp)
+       rts
+#else
        jmp (%d0)
+#endif
 
        /*
            +24     return address
@@ -79,15 +89,24 @@ _dl_runtime_profile:
        move.l %sp, %a2
        move.l %sp, %a0
        lea 28(%sp), %a1
-       | Round framesize up to even
-       addq.l #1, %d1
-       lsr #1, %d1
-       sub.l %d1, %a0
+       | Round framesize up to longword alignment
+       addq.l #3, %d1
+       and.l #-3, %d1
        sub.l %d1, %a0
        move.l %a0, %sp
+#ifdef __mcoldfire__
+       tst.l %d1
+       beq 2f
+1:     move.l (%a0)+, (%a1)+
+       subq.l #4,%d1
+       bne 1b
+2:
+#else
+       lsr.l #2,%d1
        jra 2f
-1:     move.w (%a1)+, (%a0)+
+1:     move.l (%a1)+, (%a0)+
 2:     dbra %d1,1b
+#endif
        /*
           %a2+24  return address
           %a2+20  PLT1
@@ -101,7 +120,14 @@ _dl_runtime_profile:
 
        move.l 4(%a2), %a0
        move.l 8(%a2), %a1
+#ifdef __mcoldfire__
+       pea 2f(%pc)
+       move.l %d0,-(%sp)
+       rts
+2:
+#else
        jsr (%d0)
+#endif
        move.l %a2, %sp
        move.l (%sp)+, %a2
        /*
@@ -112,18 +138,34 @@ _dl_runtime_profile:
            +4      %a1
           %sp      %a0
        */
+#ifdef __mcoldfire__
+       fmove.l %fp0, -(%sp)
+#else
        fmove.x %fp0, -(%sp)
+#endif
+       move.l %a0, -(%sp)
        move.l %d1, -(%sp)
        move.l %d0, -(%sp)
        pea (%sp)
-       pea 20(%sp)
+#ifdef __mcoldfire__
+       pea 24(%sp)
        move.l 40(%sp), -(%sp)
        move.l 40(%sp), -(%sp)
+#else
+       pea 28(%sp)
+       move.l 44(%sp), -(%sp)
+       move.l 44(%sp), -(%sp)
+#endif
        jbsr _dl_call_pltexit
        lea 16(%sp), %sp
        move.l (%sp)+, %d0
        move.l (%sp)+, %d1
+       move.l (%sp)+, %a0
+#ifdef __mcoldfire__
+       fmove.d (%sp)+, %fp0
+#else
        fmove.x (%sp)+, %fp0
+#endif
        lea 20(%sp), %sp
        rts
        .size _dl_runtime_profile, . - _dl_runtime_profile
index 6c94b07..6f23e8b 100644 (file)
 int
 __fegetenv (fenv_t *envp)
 {
+#ifdef __mcoldfire__
+  __asm__ ("fmove%.l %/fpcr,%0" : "=dm" (envp->__control_register));
+  __asm__ ("fmove%.l %/fpsr,%0" : "=dm" (envp->__status_register));
+  __asm__ ("fmove%.l %/fpiar,%0" : "=dm" (envp->__instruction_address));
+#else
   __asm__ ("fmovem%.l %/fpcr/%/fpsr/%/fpiar,%0" : "=m" (*envp));
+#endif
 
   /* Success.  */
   return 0;
index 88fb1c5..8f0d15f 100644 (file)
@@ -26,7 +26,13 @@ feholdexcept (fenv_t *envp)
   fexcept_t fpcr, fpsr;
 
   /* Store the environment.  */
+#ifdef __mcoldfire__
+  __asm__ ("fmove%.l %/fpcr,%0" : "=dm" (envp->__control_register));
+  __asm__ ("fmove%.l %/fpsr,%0" : "=dm" (envp->__status_register));
+  __asm__ ("fmove%.l %/fpiar,%0" : "=dm" (envp->__instruction_address));
+#else
   __asm__ ("fmovem%.l %/fpcr/%/fpsr/%/fpiar,%0" : "=m" (*envp));
+#endif
 
   /* Now clear all exceptions.  */
   fpsr = envp->__status_register & ~FE_ALL_EXCEPT;
@@ -37,3 +43,4 @@ feholdexcept (fenv_t *envp)
 
   return 0;
 }
+libm_hidden_def (feholdexcept);
index 20653f0..931b2e4 100644 (file)
@@ -29,7 +29,13 @@ __fesetenv (const fenv_t *envp)
      values which we do not want to come from the saved environment.
      Therefore, we get the current environment and replace the values
      we want to use from the environment specified by the parameter.  */
+#ifdef __mcoldfire__
+  __asm__ ("fmove%.l %/fpcr,%0" : "=dm" (temp.__control_register));
+  __asm__ ("fmove%.l %/fpsr,%0" : "=dm" (temp.__status_register));
+  __asm__ ("fmove%.l %/fpiar,%0" : "=dm" (temp.__instruction_address));
+#else
   __asm__ ("fmovem%.l %/fpcr/%/fpsr/%/fpiar,%0" : "=m" (*&temp));
+#endif
 
   temp.__status_register &= ~FE_ALL_EXCEPT;
   temp.__control_register &= ~((FE_ALL_EXCEPT << 6) | FE_UPWARD);
@@ -44,7 +50,16 @@ __fesetenv (const fenv_t *envp)
       temp.__status_register |= envp->__status_register & FE_ALL_EXCEPT;
     }
 
+#ifdef __mcoldfire__
+  __asm__ __volatile__ ("fmove%.l %0,%/fpiar"
+                       :: "dm" (temp.__instruction_address));
+  __asm__ __volatile__ ("fmove%.l %0,%/fpcr"
+                       :: "dm" (temp.__control_register));
+  __asm__ __volatile__ ("fmove%.l %0,%/fpsr"
+                       :: "dm" (temp.__status_register));
+#else
   __asm__ __volatile__ ("fmovem%.l %0,%/fpcr/%/fpsr/%/fpiar" : : "m" (*&temp));
+#endif
 
   /* Success.  */
   return 0;
index 956325d..f9c1da8 100644 (file)
@@ -36,3 +36,4 @@ fesetround (int round)
 
   return 0;
 }
+libm_hidden_def (fesetround);
index 86358e6..cef5625 100644 (file)
@@ -30,9 +30,9 @@
  * 12     -> enable trap for OVFL exception
  * 11     -> enable trap for UNFL exception
  * 10     -> enable trap for DZ exception
- *  9     -> enable trap for INEX2 exception
- *  8     -> enable trap for INEX1 exception
- *  7-6   -> Precision Control
+ *  9     -> enable trap for INEX2 exception (INEX on Coldfire)
+ *  8     -> enable trap for INEX1 exception (IDE on Coldfire)
+ *  7-6   -> Precision Control (only bit 6 is used on Coldfire)
  *  5-4   -> Rounding Control
  *  3-0   -> zero (read as 0, write as 0)
  *
 #define _FPU_MASK_INEX2 0x0100
 
 /* precision control */
+#ifdef __mcoldfire__
+#define _FPU_DOUBLE   0x00
+#else
 #define _FPU_EXTENDED 0x00   /* RECOMMENDED */
 #define _FPU_DOUBLE   0x80
+#endif
 #define _FPU_SINGLE   0x40     /* DO NOT USE */
 
 /* rounding control */
 #define _FPU_RC_DOWN    0x20
 #define _FPU_RC_UP      0x30
 
+#ifdef __mcoldfire__
+#define _FPU_RESERVED 0xFFFF800F
+#else
 #define _FPU_RESERVED 0xFFFF000F  /* Reserved bits in fpucr */
+#endif
 
 
 /* Now two recommended fpucr */
diff --git a/sysdeps/m68k/ldsodefs.h b/sysdeps/m68k/ldsodefs.h
new file mode 100644 (file)
index 0000000..2eda4a8
--- /dev/null
@@ -0,0 +1,43 @@
+/* Run-time dynamic linker data structures for loaded ELF shared objects.
+   Copyright (C) 2006 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#ifndef __LDSODEFS_H
+
+#include <elf.h>
+
+struct La_m68k_regs;
+struct La_m68k_retval;
+
+#define ARCH_PLTENTER_MEMBERS                                          \
+    Elf32_Addr (*m68k_gnu_pltenter) (Elf32_Sym *, unsigned int,                \
+                                    uintptr_t *, uintptr_t *,          \
+                                    const struct La_m68k_regs *,       \
+                                    unsigned int *, const char *name,  \
+                                    long int *framesizep);
+
+#define ARCH_PLTEXIT_MEMBERS                                           \
+    unsigned int (*m68k_gnu_pltexit) (Elf32_Sym *, unsigned int,       \
+                                     uintptr_t *, uintptr_t *,         \
+                                     const struct La_m68k_regs *,      \
+                                     struct La_m68k_retval *,          \
+                                     const char *);
+
+#include_next <ldsodefs.h>
+
+#endif
diff --git a/sysdeps/m68k/m680x0/Implies b/sysdeps/m68k/m680x0/Implies
new file mode 100644 (file)
index 0000000..abf356d
--- /dev/null
@@ -0,0 +1 @@
+ieee754/ldbl-96
diff --git a/sysdeps/m68k/m680x0/Makefile b/sysdeps/m68k/m680x0/Makefile
new file mode 100644 (file)
index 0000000..582fa6f
--- /dev/null
@@ -0,0 +1,2 @@
+# The 68k `long double' is a distinct type we support.
+long-double-fcts = yes
index fab65a9..77e86a3 100644 (file)
        TEXT
 ENTRY(__memchr)
        /* Save the callee-saved registers we use.  */
+#ifdef __mcoldfire__
+       movel   R(d2),MEM_PREDEC(sp)
+       movel   R(d3),MEM_PREDEC(sp)
+       movel   R(d4),MEM_PREDEC(sp)
+#else
        moveml  R(d2)-R(d4),MEM_PREDEC(sp)
+#endif
 
        /* Get string pointer, character and length.  */
        movel   MEM_DISP(sp,16),R(a0)
@@ -34,9 +40,15 @@ ENTRY(__memchr)
        movel   MEM_DISP(sp,24),R(d4)
 
        /* Check if at least four bytes left to search.  */
+#ifdef __mcoldfire__
+       subql   #4,R(d4)
+       bcs     L(L6)
+       addql   #4,R(d4)
+#else
        moveql  #4,R(d1)
        cmpl    R(d1),R(d4)
        bcs     L(L6)
+#endif
 
        /* Distribute the character to all bytes of a longword.  */
        movel   R(d0),R(d1)
@@ -49,7 +61,11 @@ ENTRY(__memchr)
        /* First search for the character one byte at a time until the
           pointer is aligned to a longword boundary.  */
        movel   R(a0),R(d1)
+#ifdef __mcoldfire__
+       andl    #3,R(d1)
+#else
        andw    #3,R(d1)
+#endif
        beq     L(L1)
        cmpb    MEM(a0),R(d0)
        beq     L(L9)
@@ -57,8 +73,11 @@ ENTRY(__memchr)
        subql   #1,R(d4)
        beq     L(L7)
 
-       movel   R(a0),R(d1)
-       andw    #3,R(d1)
+#ifdef __mcoldfire__
+       subql   #3,R(d1)
+#else
+       subqw   #3,R(d1)
+#endif
        beq     L(L1)
        cmpb    MEM(a0),R(d0)
        beq     L(L9)
@@ -66,8 +85,11 @@ ENTRY(__memchr)
        subql   #1,R(d4)
        beq     L(L7)
 
-       movel   R(a0),R(d1)
-       andw    #3,R(d1)
+#ifdef __mcoldfire__
+       addql   #1,R(d1)
+#else
+       addqw   #1,R(d1)
+#endif
        beq     L(L1)
        cmpb    MEM(a0),R(d0)
        beq     L(L9)
@@ -177,19 +199,31 @@ L(L2:)
 
 L(L6:)
        /* Search one byte at a time in the remaining less than 4 bytes.  */
+#ifdef __mcoldfire__
+       addql   #4,R(d4)
+#else
        andw    #3,R(d4)
+#endif
        beq     L(L7)
        cmpb    MEM(a0),R(d0)
        beq     L(L9)
        addql   #1,R(a0)
 
+#ifdef __mcoldfire__
+       subql   #1,R(d4)
+#else
        subqw   #1,R(d4)
+#endif
        beq     L(L7)
        cmpb    MEM(a0),R(d0)
        beq     L(L9)
        addql   #1,R(a0)
 
+#ifdef __mcoldfire__
+       subql   #1,R(d4)
+#else
        subqw   #1,R(d4)
+#endif
        beq     L(L7)
        cmpb    MEM(a0),R(d0)
        beq     L(L9)
@@ -198,7 +232,13 @@ L(L7:)
        /* Return NULL.  */
        clrl    R(d0)
        movel   R(d0),R(a0)
+#ifdef __mcoldfire__
+       movel   MEM_POSTINC(sp),R(d4)
+       movel   MEM_POSTINC(sp),R(d3)
+       movel   MEM_POSTINC(sp),R(d2)
+#else
        moveml  MEM_POSTINC(sp),R(d2)-R(d4)
+#endif
        rts
 
 L(L8:)
@@ -221,7 +261,13 @@ L(L8:)
        /* Otherwise the fourth byte must equal C.  */
 L(L9:)
        movel   R(a0),R(d0)
+#ifdef __mcoldfire__
+       movel   MEM_POSTINC(sp),R(d4)
+       movel   MEM_POSTINC(sp),R(d3)
+       movel   MEM_POSTINC(sp),R(d2)
+#else
        moveml  MEM_POSTINC(sp),R(d2)-R(d4)
+#endif
        rts
 END(__memchr)
 
index 35dcea4..94fc1aa 100644 (file)
@@ -1,6 +1,17 @@
 # This fragment canonicalizes the machine names for m68k variants.
 
 case "$machine" in
-m680?0)                base_machine=m68k machine=m68k/$machine ;;
-m68k)          base_machine=m68k machine=m68k/m68020 ;;
+m680?0)                base_machine=m68k machine=m68k/m680x0/$machine ;;
+m68k)          variant=`(echo "#ifdef __mcoldfire__"
+                         echo "coldfire"
+                         echo "#else"
+                         echo "m680x0/m68020"
+                         echo "#endif") |
+                        $CC $CFLAGS $CPPFLAGS -E - |
+                        grep '^[a-z]'`
+               if test -z "$variant"; then
+                 echo >&2 "Cannot determine m68k processor variant"
+                 exit 1
+               fi
+               base_machine=m68k machine=m68k/$variant ;;
 esac
index acd8f76..97735f6 100644 (file)
@@ -43,21 +43,31 @@ ENTRY(__rawmemchr)
        /* First search for the character one byte at a time until the
           pointer is aligned to a longword boundary.  */
        movel   R(a0),R(d1)
+#ifdef __mcoldfire__
+       andl    #3,R(d1)
+#else
        andw    #3,R(d1)
+#endif
        beq     L(L1)
        cmpb    MEM(a0),R(d0)
        beq     L(L9)
        addql   #1,R(a0)
 
-       movel   R(a0),R(d1)
-       andw    #3,R(d1)
+#ifdef __mcoldfire__
+       subql   #3,R(d1)
+#else
+       subqw   #3,R(d1)
+#endif
        beq     L(L1)
        cmpb    MEM(a0),R(d0)
        beq     L(L9)
        addql   #1,R(a0)
 
-       movel   R(a0),R(d1)
-       andw    #3,R(d1)
+#ifdef __mcoldfire__
+       addql   #1,R(d1)
+#else
+       addqw   #1,R(d1)
+#endif
        beq     L(L1)
        cmpb    MEM(a0),R(d0)
        beq     L(L9)
index 8a6c3f9..e2ba0e7 100644 (file)
@@ -53,11 +53,14 @@ __sigsetjmp (jmp_buf env, int savemask)
   /* Save floating-point (68881) registers FP0 through FP7.  */
   asm volatile ("fmovem%.x %/fp0-%/fp7, %0"
                : : "m" (env[0].__jmpbuf[0].__fpregs[0]));
+#elif defined (__mcffpu__)
+  asm volatile ("fmovem %/fp0-%/fp7, %0"
+               : : "m" (env[0].__jmpbuf[0].__fpregs[0]));
 #endif
 
   /* Save the signal mask if requested.  */
   return __sigjmp_save (env, savemask);
 }
 #if !defined BSD_SETJMP && !defined BSD__SETJMP
-hidden_def (__sigsetjmp)
+libc_hidden_def (__sigsetjmp)
 #endif
index 04626ff..2e1e324 100644 (file)
@@ -43,32 +43,42 @@ ENTRY(strchr)
        /* First search for the character one byte at a time until the
           pointer is aligned to a longword boundary.  */
        movel   R(a0),R(d1)
+#ifdef __mcoldfire__
+       andl    #3,R(d1)
+#else
        andw    #3,R(d1)
+#endif
        beq     L(L1)
-       moveb   MEM(a0),R(d1)
-       cmpb    R(d0),R(d1)
+       moveb   MEM(a0),R(d2)
+       cmpb    R(d0),R(d2)
        beq     L(L9)
-       tstb    R(d1)
+       tstb    R(d2)
        beq     L(L3)
        addql   #1,R(a0)
 
-       movel   R(a0),R(d1)
-       andw    #3,R(d1)
+#ifdef __mcoldfire__
+       subql   #3,R(d1)
+#else
+       subqw   #3,R(d1)
+#endif
        beq     L(L1)
-       moveb   MEM(a0),R(d1)
-       cmpb    R(d0),R(d1)
+       moveb   MEM(a0),R(d2)
+       cmpb    R(d0),R(d2)
        beq     L(L9)
-       tstb    R(d1)
+       tstb    R(d2)
        beq     L(L3)
        addql   #1,R(a0)
 
-       movel   R(a0),R(d1)
-       andw    #3,R(d1)
+#ifdef __mcoldfire__
+       addql   #1,R(d1)
+#else
+       addqw   #1,R(d1)
+#endif
        beq     L(L1)
-       moveb   MEM(a0),R(d1)
-       cmpb    R(d0),R(d1)
+       moveb   MEM(a0),R(d2)
+       cmpb    R(d0),R(d2)
        beq     L(L9)
-       tstb    R(d1)
+       tstb    R(d2)
        beq     L(L3)
        addql   #1,R(a0)
 
index 3fee2b2..9d13ec1 100644 (file)
@@ -44,32 +44,42 @@ ENTRY(__strchrnul)
        /* First search for the character one byte at a time until the
           pointer is aligned to a longword boundary.  */
        movel   R(a0),R(d1)
+#ifdef __mcoldfire__
+       andl    #3,R(d1)
+#else
        andw    #3,R(d1)
+#endif
        beq     L(L1)
-       moveb   MEM(a0),R(d1)
-       cmpb    R(d0),R(d1)
+       moveb   MEM(a0),R(d2)
+       cmpb    R(d0),R(d2)
        beq     L(L9)
-       tstb    R(d1)
+       tstb    R(d2)
        beq     L(L9)
        addql   #1,R(a0)
 
-       movel   R(a0),R(d1)
-       andw    #3,R(d1)
+#ifdef __mcoldfire__
+       subql   #3,R(d1)
+#else
+       subqw   #3,R(d1)
+#endif
        beq     L(L1)
-       moveb   MEM(a0),R(d1)
-       cmpb    R(d0),R(d1)
+       moveb   MEM(a0),R(d2)
+       cmpb    R(d0),R(d2)
        beq     L(L9)
-       tstb    R(d1)
+       tstb    R(d2)
        beq     L(L9)
        addql   #1,R(a0)
 
-       movel   R(a0),R(d1)
-       andw    #3,R(d1)
+#ifdef __mcoldfire__
+       addql   #1,R(d1)
+#else
+       addqw   #1,R(d1)
+#endif
        beq     L(L1)
-       moveb   MEM(a0),R(d1)
-       cmpb    R(d0),R(d1)
+       moveb   MEM(a0),R(d2)
+       cmpb    R(d0),R(d2)
        beq     L(L9)
-       tstb    R(d1)
+       tstb    R(d2)
        beq     L(L9)
        addql   #1,R(a0)
 
index f492ff6..3698628 100644 (file)
 #  define JUMPTARGET(name)     name
 # endif
 
+/* Perform operation OP with PC-relative SRC as the first operand and
+   DST as the second.  TMP is available as a temporary if needed.  */
+#ifdef __mcoldfire__
+#define PCREL_OP(OP, SRC, DST, TMP) \
+  move.l &SRC - ., TMP; OP (-8, %pc, TMP), DST
+#else
+#define PCREL_OP(OP, SRC, DST, TMP) \
+  OP SRC(%pc), DST
+#endif
+
+#else
+
+/* As above, but PC is the spelling of the PC register.  We need this
+   so that the macro can be used in both normal and extended asms.  */
+#ifdef __mcoldfire__
+#define PCREL_OP(OP, SRC, DST, TMP, PC) \
+  "move.l #" SRC " - ., " TMP "\n\t" OP " (-8, " PC ", " TMP "), " DST
+#else
+#define PCREL_OP(OP, SRC, DST, TMP, PC) \
+  OP " " SRC "(" PC "), " DST
+#endif
+
 #endif /* __ASSEMBLER__ */
diff --git a/sysdeps/m68k/tst-audit.h b/sysdeps/m68k/tst-audit.h
new file mode 100644 (file)
index 0000000..5254ab3
--- /dev/null
@@ -0,0 +1,25 @@
+/* Definitions for testing PLT entry/exit auditing.  m68k version.
+   Copyright (C) 2006 Free Software Foundation, Inc.
+
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#define pltenter la_m68k_gnu_pltenter
+#define pltexit la_m68k_gnu_pltexit
+#define La_regs La_m68k_regs
+#define La_retval La_m68k_retval
+#define int_retval lrv_d0
diff --git a/sysdeps/m68k/wcpcpy.c b/sysdeps/m68k/wcpcpy.c
new file mode 100644 (file)
index 0000000..c838af1
--- /dev/null
@@ -0,0 +1,37 @@
+/* Copyright (C) 1996, 1997, 2006 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+/* The generic version of this file assumes that __alignof__(wchar_t) ==
+   sizeof (wchar_t).  We therefore use this port-specific implementation
+   instead.  */
+#include <wchar.h>
+
+/* Copy SRC to DEST, returning the address of the terminating L'\0' in
+   DEST.  */
+wchar_t *
+__wcpcpy (wchar_t *dest, const wchar_t *src)
+{
+  do
+    ;
+  while ((*dest++ = *src++));
+
+  return dest - 1;
+}
+
+weak_alias (__wcpcpy, wcpcpy)
diff --git a/sysdeps/m68k/wcpcpy_chk.c b/sysdeps/m68k/wcpcpy_chk.c
new file mode 100644 (file)
index 0000000..525c1d5
--- /dev/null
@@ -0,0 +1,36 @@
+/* Copyright (C) 1996, 1997, 2005, 2006 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1996.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+/* The generic version of this file assumes that __alignof__(wchar_t) ==
+   sizeof (wchar_t).  We therefore use this port-specific implementation
+   instead.  */
+#include <wchar.h>
+
+/* Copy SRC to DEST, returning the address of the terminating L'\0' in
+   DEST.  Check for overflows.  */
+wchar_t *
+__wcpcpy_chk (wchar_t *dest, const wchar_t *src, size_t destlen)
+{
+  do
+    if (destlen-- == 0)
+      __chk_fail ();
+  while ((*dest++ = *src++));
+
+  return dest - 1;
+}
diff --git a/sysdeps/unix/sysv/linux/m68k/bits/sigcontext.h b/sysdeps/unix/sysv/linux/m68k/bits/sigcontext.h
new file mode 100644 (file)
index 0000000..8ad0c96
--- /dev/null
@@ -0,0 +1,62 @@
+/* Copyright (C) 2006 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#if !defined _SIGNAL_H && !defined _SYS_UCONTEXT_H
+# error "Never use <bits/sigcontext.h> directly; include <signal.h> instead."
+#endif
+
+#ifndef _BITS_SIGCONTEXT_H
+#define _BITS_SIGCONTEXT_H 1
+
+struct sigcontext {
+  unsigned long sc_mask;
+  unsigned long sc_usp;
+  unsigned long sc_d0;
+  unsigned long sc_d1;
+#ifdef __mcoldfire__
+  unsigned long sc_d2;
+  unsigned long sc_d3;
+  unsigned long sc_d4;
+  unsigned long sc_d5;
+  unsigned long sc_d6;
+  unsigned long sc_d7;
+#endif
+  unsigned long sc_a0;
+  unsigned long sc_a1;
+#ifdef __mcoldfire__
+  unsigned long sc_a2;
+  unsigned long sc_a3;
+  unsigned long sc_a4;
+  unsigned long sc_a5;
+  unsigned long sc_a6;
+#endif
+  unsigned short sc_sr;
+  unsigned long sc_pc;
+  unsigned short sc_formatvec;
+#ifdef __mcoldfire__
+  unsigned long sc_fpregs[8][2];
+  unsigned long sc_fpcntl[3];
+  unsigned char sc_fpstate[16];
+#else
+  unsigned long sc_fpregs[2*3];
+  unsigned long sc_fpcntl[3];
+  unsigned char sc_fpstate[216];
+#endif
+};
+
+#endif
diff --git a/sysdeps/unix/sysv/linux/m68k/bits/siginfo.h b/sysdeps/unix/sysv/linux/m68k/bits/siginfo.h
new file mode 100644 (file)
index 0000000..1ded1c2
--- /dev/null
@@ -0,0 +1,316 @@
+/* siginfo_t, sigevent and constants.  m68k linux version.
+   Copyright (C) 1997-2002, 2003 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#if !defined _SIGNAL_H && !defined __need_siginfo_t \
+    && !defined __need_sigevent_t
+# error "Never include this file directly.  Use <signal.h> instead"
+#endif
+
+#include <bits/wordsize.h>
+
+#if (!defined __have_sigval_t \
+     && (defined _SIGNAL_H || defined __need_siginfo_t \
+        || defined __need_sigevent_t))
+# define __have_sigval_t       1
+
+/* Type for data associated with a signal.  */
+typedef union sigval
+  {
+    int sival_int;
+    void *sival_ptr;
+  } sigval_t;
+#endif
+
+#if (!defined __have_siginfo_t \
+     && (defined _SIGNAL_H || defined __need_siginfo_t))
+# define __have_siginfo_t      1
+
+# define __SI_MAX_SIZE     128
+# if __WORDSIZE == 64
+#  define __SI_PAD_SIZE     ((__SI_MAX_SIZE / sizeof (int)) - 4)
+# else
+#  define __SI_PAD_SIZE     ((__SI_MAX_SIZE / sizeof (int)) - 3)
+# endif
+
+typedef struct siginfo
+  {
+    int si_signo;              /* Signal number.  */
+    int si_errno;              /* If non-zero, an errno value associated with
+                                  this signal, as defined in <errno.h>.  */
+    int si_code;               /* Signal code.  */
+
+    union
+      {
+       int _pad[__SI_PAD_SIZE];
+
+        /* kill().  */
+       struct
+         {
+           __pid_t si_pid;     /* Sending process ID.  */
+           unsigned short __pad; /* 16-bit version of si_uid.  */
+           __uid_t si_uid;     /* Real user ID of sending process.  */
+         } _kill;
+
+       /* POSIX.1b timers.  */
+       struct
+         {
+           int si_tid;         /* Timer ID.  */
+           int si_overrun;     /* Overrun count.  */
+           sigval_t si_sigval; /* Signal value.  */
+         } _timer;
+
+       /* POSIX.1b signals.  */
+       struct
+         {
+           __pid_t si_pid;     /* Sending process ID.  */
+           unsigned short __pad; /* 16-bit version of si_uid.  */
+           sigval_t si_sigval; /* Signal value.  */
+           __uid_t si_uid;     /* Real user ID of sending process.  */
+         } _rt;
+
+       /* SIGCHLD.  */
+       struct
+         {
+           __pid_t si_pid;     /* Which child.  */
+           unsigned short __pad; /* 16-bit version of si_uid.  */
+           int si_status;      /* Exit value or signal.  */
+           __clock_t si_utime;
+           __clock_t si_stime;
+           __uid_t si_uid;     /* Real user ID of sending process.  */
+         } _sigchld;
+
+       /* SIGILL, SIGFPE, SIGSEGV, SIGBUS.  */
+       struct
+         {
+           void *si_addr;      /* Faulting insn/memory ref.  */
+         } _sigfault;
+
+       /* SIGPOLL.  */
+       struct
+         {
+           long int si_band;   /* Band event for SIGPOLL.  */
+           int si_fd;
+         } _sigpoll;
+      } _sifields;
+  } siginfo_t;
+
+
+/* X/Open requires some more fields with fixed names.  */
+# define si_pid                _sifields._kill.si_pid
+# define si_uid                _sifields._kill.si_uid
+# define si_timerid    _sifields._timer.si_tid
+# define si_overrun    _sifields._timer.si_overrun
+# define si_status     _sifields._sigchld.si_status
+# define si_utime      _sifields._sigchld.si_utime
+# define si_stime      _sifields._sigchld.si_stime
+# define si_value      _sifields._rt.si_sigval
+# define si_int                _sifields._rt.si_sigval.sival_int
+# define si_ptr                _sifields._rt.si_sigval.sival_ptr
+# define si_addr       _sifields._sigfault.si_addr
+# define si_band       _sifields._sigpoll.si_band
+# define si_fd         _sifields._sigpoll.si_fd
+
+
+/* Values for `si_code'.  Positive values are reserved for kernel-generated
+   signals.  */
+enum
+{
+  SI_ASYNCNL = -60,            /* Sent by asynch name lookup completion.  */
+# define SI_ASYNCNL    SI_ASYNCNL
+  SI_TKILL = -6,               /* Sent by tkill.  */
+# define SI_TKILL      SI_TKILL
+  SI_SIGIO,                    /* Sent by queued SIGIO. */
+# define SI_SIGIO      SI_SIGIO
+  SI_ASYNCIO,                  /* Sent by AIO completion.  */
+# define SI_ASYNCIO    SI_ASYNCIO
+  SI_MESGQ,                    /* Sent by real time mesq state change.  */
+# define SI_MESGQ      SI_MESGQ
+  SI_TIMER,                    /* Sent by timer expiration.  */
+# define SI_TIMER      SI_TIMER
+  SI_QUEUE,                    /* Sent by sigqueue.  */
+# define SI_QUEUE      SI_QUEUE
+  SI_USER,                     /* Sent by kill, sigsend, raise.  */
+# define SI_USER       SI_USER
+  SI_KERNEL = 0x80             /* Send by kernel.  */
+#define SI_KERNEL      SI_KERNEL
+};
+
+
+/* `si_code' values for SIGILL signal.  */
+enum
+{
+  ILL_ILLOPC = 1,              /* Illegal opcode.  */
+# define ILL_ILLOPC    ILL_ILLOPC
+  ILL_ILLOPN,                  /* Illegal operand.  */
+# define ILL_ILLOPN    ILL_ILLOPN
+  ILL_ILLADR,                  /* Illegal addressing mode.  */
+# define ILL_ILLADR    ILL_ILLADR
+  ILL_ILLTRP,                  /* Illegal trap. */
+# define ILL_ILLTRP    ILL_ILLTRP
+  ILL_PRVOPC,                  /* Privileged opcode.  */
+# define ILL_PRVOPC    ILL_PRVOPC
+  ILL_PRVREG,                  /* Privileged register.  */
+# define ILL_PRVREG    ILL_PRVREG
+  ILL_COPROC,                  /* Coprocessor error.  */
+# define ILL_COPROC    ILL_COPROC
+  ILL_BADSTK                   /* Internal stack error.  */
+# define ILL_BADSTK    ILL_BADSTK
+};
+
+/* `si_code' values for SIGFPE signal.  */
+enum
+{
+  FPE_INTDIV = 1,              /* Integer divide by zero.  */
+# define FPE_INTDIV    FPE_INTDIV
+  FPE_INTOVF,                  /* Integer overflow.  */
+# define FPE_INTOVF    FPE_INTOVF
+  FPE_FLTDIV,                  /* Floating point divide by zero.  */
+# define FPE_FLTDIV    FPE_FLTDIV
+  FPE_FLTOVF,                  /* Floating point overflow.  */
+# define FPE_FLTOVF    FPE_FLTOVF
+  FPE_FLTUND,                  /* Floating point underflow.  */
+# define FPE_FLTUND    FPE_FLTUND
+  FPE_FLTRES,                  /* Floating point inexact result.  */
+# define FPE_FLTRES    FPE_FLTRES
+  FPE_FLTINV,                  /* Floating point invalid operation.  */
+# define FPE_FLTINV    FPE_FLTINV
+  FPE_FLTSUB                   /* Subscript out of range.  */
+# define FPE_FLTSUB    FPE_FLTSUB
+};
+
+/* `si_code' values for SIGSEGV signal.  */
+enum
+{
+  SEGV_MAPERR = 1,             /* Address not mapped to object.  */
+# define SEGV_MAPERR   SEGV_MAPERR
+  SEGV_ACCERR                  /* Invalid permissions for mapped object.  */
+# define SEGV_ACCERR   SEGV_ACCERR
+};
+
+/* `si_code' values for SIGBUS signal.  */
+enum
+{
+  BUS_ADRALN = 1,              /* Invalid address alignment.  */
+# define BUS_ADRALN    BUS_ADRALN
+  BUS_ADRERR,                  /* Non-existant physical address.  */
+# define BUS_ADRERR    BUS_ADRERR
+  BUS_OBJERR                   /* Object specific hardware error.  */
+# define BUS_OBJERR    BUS_OBJERR
+};
+
+/* `si_code' values for SIGTRAP signal.  */
+enum
+{
+  TRAP_BRKPT = 1,              /* Process breakpoint.  */
+# define TRAP_BRKPT    TRAP_BRKPT
+  TRAP_TRACE                   /* Process trace trap.  */
+# define TRAP_TRACE    TRAP_TRACE
+};
+
+/* `si_code' values for SIGCHLD signal.  */
+enum
+{
+  CLD_EXITED = 1,              /* Child has exited.  */
+# define CLD_EXITED    CLD_EXITED
+  CLD_KILLED,                  /* Child was killed.  */
+# define CLD_KILLED    CLD_KILLED
+  CLD_DUMPED,                  /* Child terminated abnormally.  */
+# define CLD_DUMPED    CLD_DUMPED
+  CLD_TRAPPED,                 /* Traced child has trapped.  */
+# define CLD_TRAPPED   CLD_TRAPPED
+  CLD_STOPPED,                 /* Child has stopped.  */
+# define CLD_STOPPED   CLD_STOPPED
+  CLD_CONTINUED                        /* Stopped child has continued.  */
+# define CLD_CONTINUED CLD_CONTINUED
+};
+
+/* `si_code' values for SIGPOLL signal.  */
+enum
+{
+  POLL_IN = 1,                 /* Data input available.  */
+# define POLL_IN       POLL_IN
+  POLL_OUT,                    /* Output buffers available.  */
+# define POLL_OUT      POLL_OUT
+  POLL_MSG,                    /* Input message available.   */
+# define POLL_MSG      POLL_MSG
+  POLL_ERR,                    /* I/O error.  */
+# define POLL_ERR      POLL_ERR
+  POLL_PRI,                    /* High priority input available.  */
+# define POLL_PRI      POLL_PRI
+  POLL_HUP                     /* Device disconnected.  */
+# define POLL_HUP      POLL_HUP
+};
+
+# undef __need_siginfo_t
+#endif /* !have siginfo_t && (have _SIGNAL_H || need siginfo_t).  */
+
+
+#if (defined _SIGNAL_H || defined __need_sigevent_t) \
+    && !defined __have_sigevent_t
+# define __have_sigevent_t     1
+
+/* Structure to transport application-defined values with signals.  */
+# define __SIGEV_MAX_SIZE      64
+# if __WORDSIZE == 64
+#  define __SIGEV_PAD_SIZE     ((__SIGEV_MAX_SIZE / sizeof (int)) - 4)
+# else
+#  define __SIGEV_PAD_SIZE     ((__SIGEV_MAX_SIZE / sizeof (int)) - 3)
+# endif
+
+typedef struct sigevent
+  {
+    sigval_t sigev_value;
+    int sigev_signo;
+    int sigev_notify;
+
+    union
+      {
+       int _pad[__SIGEV_PAD_SIZE];
+
+       /* When SIGEV_SIGNAL and SIGEV_THREAD_ID set, LWP ID of the
+          thread to receive the signal.  */
+       __pid_t _tid;
+
+       struct
+         {
+           void (*_function) (sigval_t);       /* Function to start.  */
+           void *_attribute;                   /* Really pthread_attr_t.  */
+         } _sigev_thread;
+      } _sigev_un;
+  } sigevent_t;
+
+/* POSIX names to access some of the members.  */
+# define sigev_notify_function   _sigev_un._sigev_thread._function
+# define sigev_notify_attributes _sigev_un._sigev_thread._attribute
+
+/* `sigev_notify' values.  */
+enum
+{
+  SIGEV_SIGNAL = 0,            /* Notify via signal.  */
+# define SIGEV_SIGNAL  SIGEV_SIGNAL
+  SIGEV_NONE,                  /* Other notification: meaningless.  */
+# define SIGEV_NONE    SIGEV_NONE
+  SIGEV_THREAD,                        /* Deliver via thread creation.  */
+# define SIGEV_THREAD  SIGEV_THREAD
+
+  SIGEV_THREAD_ID = 4          /* Send signal to specific thread.  */
+#define SIGEV_THREAD_ID        SIGEV_THREAD_ID
+};
+
+#endif /* have _SIGNAL_H.  */
index 6baf723..a179f8e 100644 (file)
@@ -42,11 +42,21 @@ ENTRY (__clone)
        movel   16(%sp), -(%a1)
 
        /* Do the system call */
-       exg     %d2, %a1                /* save %d2 and get stack pointer */
        movel   12(%sp), %d1            /* get flags */
+#ifdef __mcoldfire__
+       movel   %d2, -(%a1)
+       movel   %d2, -(%sp)
+       movel   %a1, %d2
+#else
+       exg     %d2, %a1                /* save %d2 and get stack pointer */
+#endif
        movel   #SYS_ify (clone), %d0
        trap    #0
+#ifdef __mcoldfire__
+       movel   (%sp)+, %d2
+#else
        exg     %d2, %a1                /* restore %d2 */
+#endif
 
        tstl    %d0
        jmi     SYSCALL_ERROR_LABEL
diff --git a/sysdeps/unix/sysv/linux/m68k/configure b/sysdeps/unix/sysv/linux/m68k/configure
new file mode 100644 (file)
index 0000000..94ccc50
--- /dev/null
@@ -0,0 +1,6 @@
+# This file is generated from configure.in by Autoconf.  DO NOT EDIT!
+ case $machine in
+m68k/coldfire)
+  arch_minimum_kernel=2.6.10
+  ;;
+esac
diff --git a/sysdeps/unix/sysv/linux/m68k/configure.in b/sysdeps/unix/sysv/linux/m68k/configure.in
new file mode 100644 (file)
index 0000000..285b81f
--- /dev/null
@@ -0,0 +1,7 @@
+sinclude(./aclocal.m4)dnl Autoconf lossage
+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
+case $machine in
+m68k/coldfire)
+  arch_minimum_kernel=2.6.10
+  ;;
+esac
diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/syscalls.list b/sysdeps/unix/sysv/linux/m68k/m680x0/syscalls.list
new file mode 100644 (file)
index 0000000..913f051
--- /dev/null
@@ -0,0 +1,4 @@
+# File name    Caller  Syscall name    Args    Strong name     Weak names
+
+oldgetrlimit   EXTRA   getrlimit       i:ip    __old_getrlimit getrlimit@GLIBC_2.0
+oldsetrlimit   EXTRA   setrlimit       i:ip    __old_setrlimit setrlimit@GLIBC_2.0
index a7ac3ca..391902f 100644 (file)
@@ -40,6 +40,7 @@
 
 */
 
+#ifndef __mcoldfire__
 /* Linux saves only the call-clobbered registers in the sigcontext.  We
    need to use a trampoline that saves the rest so that the C code can
    access them.  We use the sc_fpstate field, since the handler is not
@@ -65,6 +66,7 @@ catch_segfault:\n\
 }
 #define catch_segfault(a,b) \
   __attribute_used__ real_catch_segfault(a,b)
+#endif
 
 static void
 hexvalue (unsigned long int value, char *buf, size_t len)
@@ -81,6 +83,8 @@ register_dump (int fd, struct sigcontext *ctx)
   char fpregs[11][24];
   struct iovec iov[63], *next_iov = iov;
   unsigned long *p = (unsigned long *) ctx->sc_fpstate + 1;
+  unsigned long *pfp = (unsigned long *) ctx->sc_fpregs;
+  int i, j, fpreg_size;
 
 #define ADD_STRING(str) \
   next_iov->iov_base = (char *) (str); \
@@ -91,51 +95,59 @@ register_dump (int fd, struct sigcontext *ctx)
   next_iov->iov_len = (len); \
   ++next_iov
 
+#ifdef __mcoldfire__
+  fpreg_size = 16;
+#else
+  fpreg_size = 24;
+#endif
+
   /* Generate strings of register contents.  */
   hexvalue (ctx->sc_d0, regs[0], 8);
   hexvalue (ctx->sc_d1, regs[1], 8);
+#ifdef __mcoldfire__
+  hexvalue (ctx->sc_d2, regs[2], 8);
+  hexvalue (ctx->sc_d3, regs[3], 8);
+  hexvalue (ctx->sc_d4, regs[4], 8);
+  hexvalue (ctx->sc_d5, regs[5], 8);
+  hexvalue (ctx->sc_d6, regs[6], 8);
+  hexvalue (ctx->sc_d7, regs[7], 8);
+#else
   hexvalue (*p++, regs[2], 8);
   hexvalue (*p++, regs[3], 8);
   hexvalue (*p++, regs[4], 8);
   hexvalue (*p++, regs[5], 8);
   hexvalue (*p++, regs[6], 8);
   hexvalue (*p++, regs[7], 8);
+#endif
   hexvalue (ctx->sc_a0, regs[8], 8);
   hexvalue (ctx->sc_a1, regs[9], 8);
+#ifdef __mcoldfire__
+  hexvalue (ctx->sc_a2, regs[10], 8);
+  hexvalue (ctx->sc_a3, regs[11], 8);
+  hexvalue (ctx->sc_a4, regs[12], 8);
+  hexvalue (ctx->sc_a5, regs[13], 8);
+  hexvalue (ctx->sc_a6, regs[14], 8);
+#else
   hexvalue (*p++, regs[10], 8);
   hexvalue (*p++, regs[11], 8);
   hexvalue (*p++, regs[12], 8);
   hexvalue (*p++, regs[13], 8);
   hexvalue (*p++, regs[14], 8);
+#endif
   hexvalue (ctx->sc_usp, regs[15], 8);
   hexvalue (ctx->sc_pc, regs[16], 8);
   hexvalue (ctx->sc_sr, regs[17], 4);
   hexvalue (ctx->sc_mask, regs[18], 8);
   hexvalue (ctx->sc_formatvec & 0xfff, regs[19], 4);
-  hexvalue (ctx->sc_fpregs[0], fpregs[0], 8);
-  hexvalue (ctx->sc_fpregs[1], fpregs[0] + 8, 8);
-  hexvalue (ctx->sc_fpregs[2], fpregs[0] + 16, 8);
-  hexvalue (ctx->sc_fpregs[3], fpregs[1], 8);
-  hexvalue (ctx->sc_fpregs[4], fpregs[1] + 8, 8);
-  hexvalue (ctx->sc_fpregs[5], fpregs[1] + 16, 8);
-  hexvalue (*p++, fpregs[2], 8);
-  hexvalue (*p++, fpregs[2] + 8, 8);
-  hexvalue (*p++, fpregs[2] + 16, 8);
-  hexvalue (*p++, fpregs[3], 8);
-  hexvalue (*p++, fpregs[3] + 8, 8);
-  hexvalue (*p++, fpregs[3] + 16, 8);
-  hexvalue (*p++, fpregs[4], 8);
-  hexvalue (*p++, fpregs[4] + 8, 8);
-  hexvalue (*p++, fpregs[4] + 16, 8);
-  hexvalue (*p++, fpregs[5], 8);
-  hexvalue (*p++, fpregs[5] + 8, 8);
-  hexvalue (*p++, fpregs[5] + 16, 8);
-  hexvalue (*p++, fpregs[6], 8);
-  hexvalue (*p++, fpregs[6] + 8, 8);
-  hexvalue (*p++, fpregs[6] + 16, 8);
-  hexvalue (*p++, fpregs[7], 8);
-  hexvalue (*p++, fpregs[7] + 8, 8);
-  hexvalue (*p++, fpregs[7] + 16, 8);
+  for (i = 0; i < 2; i++)
+    for (j = 0; j < fpreg_size; j += 8)
+      hexvalue (*pfp++, fpregs[i] + j, 8);
+#ifdef __mcoldfire__
+  p = pfp;
+#endif
+  for (i = 2; i < 8; i++)
+    for (j = 0; j < fpreg_size; j += 8)
+      hexvalue (*p++, fpregs[i] + j, 8);
   hexvalue (ctx->sc_fpcntl[0], fpregs[8], 8);
   hexvalue (ctx->sc_fpcntl[1], fpregs[9], 8);
   hexvalue (ctx->sc_fpcntl[2], fpregs[10], 8);
@@ -184,21 +196,21 @@ register_dump (int fd, struct sigcontext *ctx)
   ADD_MEM (regs[19], 4);
 
   ADD_STRING ("\n\n  FP0: ");
-  ADD_MEM (fpregs[0], 24);
+  ADD_MEM (fpregs[0], fpreg_size);
   ADD_STRING ("  FP1: ");
-  ADD_MEM (fpregs[1], 24);
+  ADD_MEM (fpregs[1], fpreg_size);
   ADD_STRING ("\n  FP2: ");
-  ADD_MEM (fpregs[2], 24);
+  ADD_MEM (fpregs[2], fpreg_size);
   ADD_STRING ("  FP3: ");
-  ADD_MEM (fpregs[3], 24);
+  ADD_MEM (fpregs[3], fpreg_size);
   ADD_STRING ("\n  FP4: ");
-  ADD_MEM (fpregs[4], 24);
+  ADD_MEM (fpregs[4], fpreg_size);
   ADD_STRING ("  FP5: ");
-  ADD_MEM (fpregs[5], 24);
+  ADD_MEM (fpregs[5], fpreg_size);
   ADD_STRING ("\n  FP6: ");
-  ADD_MEM (fpregs[6], 24);
+  ADD_MEM (fpregs[6], fpreg_size);
   ADD_STRING ("  FP7: ");
-  ADD_MEM (fpregs[7], 24);
+  ADD_MEM (fpregs[7], fpreg_size);
   ADD_STRING ("\n  FPCR: ");
   ADD_MEM (fpregs[8], 8);
   ADD_STRING ("  FPSR: ");
index 1d10f33..2690f18 100644 (file)
@@ -42,7 +42,7 @@
 .globl __socket
 ENTRY (__socket)
 #if defined NEED_CANCELLATION && defined CENABLE
-       SINGLE_THREAD_P
+       SINGLE_THREAD_P (%a0)
        jne 1f
 #endif
 
index 418f832..230fd2d 100644 (file)
@@ -62,22 +62,35 @@ enum
 #define PT_SR PT_SR
   PT_PC = 18,
 #define PT_PC PT_PC
+
+#ifdef __mcoldfire__
+  PT_FP0 = 21,
+  PT_FP1 = 23,
+  PT_FP2 = 25,
+  PT_FP3 = 27,
+  PT_FP4 = 29,
+  PT_FP5 = 31,
+  PT_FP6 = 33,
+  PT_FP7 = 35,
+#else
   PT_FP0 = 21,
-#define PT_FP0 PT_FP0
   PT_FP1 = 24,
-#define PT_FP1 PT_FP1
   PT_FP2 = 27,
-#define PT_FP2 PT_FP2
   PT_FP3 = 30,
-#define PT_FP3 PT_FP3
   PT_FP4 = 33,
-#define PT_FP4 PT_FP4
   PT_FP5 = 36,
-#define PT_FP5 PT_FP5
   PT_FP6 = 39,
-#define PT_FP6 PT_FP6
   PT_FP7 = 42,
+#endif
+#define PT_FP0 PT_FP0
+#define PT_FP1 PT_FP1
+#define PT_FP2 PT_FP2
+#define PT_FP3 PT_FP3
+#define PT_FP4 PT_FP4
+#define PT_FP5 PT_FP5
+#define PT_FP6 PT_FP6
 #define PT_FP7 PT_FP7
+
   PT_FPCR = 45,
 #define PT_FPCR PT_FPCR
   PT_FPSR = 46,
index 3c441dc..776466b 100644 (file)
@@ -79,10 +79,14 @@ enum
 /* Structure to describe FPU registers.  */
 typedef struct fpregset
 {
-  int f_fpregs[8][3];
   int f_pcr;
   int f_psr;
   int f_fpiaddr;
+#ifdef __mcoldfire__
+  int f_fpregs[8][2];
+#else
+  int f_fpregs[8][3];
+#endif
 } fpregset_t;
 
 /* Context to describe whole processor state.  */
@@ -98,12 +102,12 @@ typedef struct
 /* Userlevel context.  */
 typedef struct ucontext
 {
-  unsigned long int uc_flags;
+  unsigned long uc_flags;
   struct ucontext *uc_link;
-  __sigset_t uc_sigmask;
   stack_t uc_stack;
   mcontext_t uc_mcontext;
-  long int uc_filler[174];
+  unsigned long uc_filler[80];
+  __sigset_t uc_sigmask;
 } ucontext_t;
 
 #endif /* sys/ucontext.h */
index 98d3066..5367ef0 100644 (file)
@@ -1,5 +1,3 @@
 # File name    Caller  Syscall name    Args    Strong name     Weak names
 
 cacheflush     EXTRA   cacheflush      i:iiii  __cacheflush    cacheflush
-oldgetrlimit   EXTRA   getrlimit       i:ip    __old_getrlimit getrlimit@GLIBC_2.0
-oldsetrlimit   EXTRA   setrlimit       i:ip    __old_setrlimit setrlimit@GLIBC_2.0
index 091dfc9..be37c89 100644 (file)
@@ -18,6 +18,9 @@
    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    02111-1307 USA.  */
 
+#ifndef _LINUX_M68K_SYSDEP_H
+#define _LINUX_M68K_SYSDEP_H 1
+
 #include <sysdeps/unix/sysdep.h>
 #include <sysdeps/m68k/sysdep.h>
 
 # if RTLD_PRIVATE_ERRNO
 #  define SYSCALL_ERROR_HANDLER                                                      \
 SYSCALL_ERROR_LABEL:                                                         \
-    lea (rtld_errno, %pc), %a0;                                                      \
+    PCREL_OP (lea, rtld_errno, %a0, %a0);                                    \
     neg.l %d0;                                                               \
     move.l %d0, (%a0);                                                       \
     move.l &-1, %d0;                                                         \
@@ -293,3 +296,4 @@ SYSCALL_ERROR_LABEL:                                                              \
 #define ASM_ARGS_6     ASM_ARGS_5, "a" (_a0)
 
 #endif /* not __ASSEMBLER__ */
+#endif