From: Andreas Schwab Date: Tue, 3 Oct 2006 14:44:27 +0000 (+0000) Subject: 2006-10-03 Richard Sandiford X-Git-Tag: glibc-2.16-ports-before-merge~822 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=9c986f878af1392b02170336a52e5a59e7fe55ed;p=thirdparty%2Fglibc.git 2006-10-03 Richard Sandiford * 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. --- diff --git a/ChangeLog.m68k b/ChangeLog.m68k index 328f858c8e3..b12f7f42ab0 100644 --- a/ChangeLog.m68k +++ b/ChangeLog.m68k @@ -1,3 +1,304 @@ +2006-10-03 Richard Sandiford + + * 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 * sysdeps/m68k/preconfigure: New file. diff --git a/sysdeps/m68k/Implies b/sysdeps/m68k/Implies index 5c778d4fbc6..beaba937de0 100644 --- a/sysdeps/m68k/Implies +++ b/sysdeps/m68k/Implies @@ -1,5 +1,4 @@ wordsize-32 # 68k uses IEEE 754 floating point. -ieee754/ldbl-96 ieee754/dbl-64 ieee754/flt-32 diff --git a/sysdeps/m68k/Makefile b/sysdeps/m68k/Makefile index fab6bd58371..ca0d5002958 100644 --- a/sysdeps/m68k/Makefile +++ b/sysdeps/m68k/Makefile @@ -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 diff --git a/sysdeps/m68k/__longjmp.c b/sysdeps/m68k/__longjmp.c index 89ff5bab564..7d876a7a144 100644 --- a/sysdeps/m68k/__longjmp.c +++ b/sysdeps/m68k/__longjmp.c @@ -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. */ diff --git a/sysdeps/m68k/asm-syntax.h b/sysdeps/m68k/asm-syntax.h index 8e2a4ca2ca6..645e9067626 100644 --- a/sysdeps/m68k/asm-syntax.h +++ b/sysdeps/m68k/asm-syntax.h @@ -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 @@ -103,7 +105,10 @@ #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 diff --git a/sysdeps/m68k/bits/byteswap.h b/sysdeps/m68k/bits/byteswap.h index 549d4452efe..41b386b313c 100644 --- a/sysdeps/m68k/bits/byteswap.h +++ b/sysdeps/m68k/bits/byteswap.h @@ -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; \ diff --git a/sysdeps/m68k/bits/setjmp.h b/sysdeps/m68k/bits/setjmp.h index 2d5a08227d1..27ec051e5be 100644 --- a/sysdeps/m68k/bits/setjmp.h +++ b/sysdeps/m68k/bits/setjmp.h @@ -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 index 00000000000..8b5403e0094 --- /dev/null +++ b/sysdeps/m68k/coldfire/bits/atomic.h @@ -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 + +/* 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 index 00000000000..a160308bf29 --- /dev/null +++ b/sysdeps/m68k/coldfire/fpu/e_sqrt.c @@ -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 index 00000000000..7cfc0dd6557 --- /dev/null +++ b/sysdeps/m68k/coldfire/fpu/e_sqrtf.c @@ -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 index 00000000000..c62ddaa0163 --- /dev/null +++ b/sysdeps/m68k/coldfire/fpu/fraiseexcpt.c @@ -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 +#include +#include + +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 index 00000000000..8608c0d3909 --- /dev/null +++ b/sysdeps/m68k/coldfire/fpu/libm-test-ulps @@ -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 index 00000000000..45403cb1728 --- /dev/null +++ b/sysdeps/m68k/coldfire/fpu/s_fabs.c @@ -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 index 00000000000..7622cc96589 --- /dev/null +++ b/sysdeps/m68k/coldfire/fpu/s_fabsf.c @@ -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 index 00000000000..81fae959bed --- /dev/null +++ b/sysdeps/m68k/coldfire/fpu/s_lrint.c @@ -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 index 00000000000..87ae5e0b975 --- /dev/null +++ b/sysdeps/m68k/coldfire/fpu/s_lrintf.c @@ -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 index 00000000000..7be8bb6e2a1 --- /dev/null +++ b/sysdeps/m68k/coldfire/fpu/s_rint.c @@ -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 index 00000000000..2337d74404d --- /dev/null +++ b/sysdeps/m68k/coldfire/fpu/s_rintf.c @@ -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 index 00000000000..f4c68b2a51a --- /dev/null +++ b/sysdeps/m68k/coldfire/shlib-versions @@ -0,0 +1 @@ +m68k-.*-linux.* DEFAULT GLIBC_2.4 diff --git a/sysdeps/m68k/dl-machine.h b/sysdeps/m68k/dl-machine.h index f31b68772d3..fad1ef9e086 100644 --- a/sysdeps/m68k/dl-machine.h +++ b/sysdeps/m68k/dl-machine.h @@ -23,6 +23,7 @@ #define ELF_MACHINE_NAME "m68k" #include +#include /* 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\ diff --git a/sysdeps/m68k/dl-trampoline.S b/sysdeps/m68k/dl-trampoline.S index 8791280371e..e324da1085f 100644 --- a/sysdeps/m68k/dl-trampoline.S +++ b/sysdeps/m68k/dl-trampoline.S @@ -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 diff --git a/sysdeps/m68k/fpu/fegetenv.c b/sysdeps/m68k/fpu/fegetenv.c index 6c94b073182..6f23e8b7492 100644 --- a/sysdeps/m68k/fpu/fegetenv.c +++ b/sysdeps/m68k/fpu/fegetenv.c @@ -23,7 +23,13 @@ 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; diff --git a/sysdeps/m68k/fpu/feholdexcpt.c b/sysdeps/m68k/fpu/feholdexcpt.c index 88fb1c59ac1..8f0d15f617f 100644 --- a/sysdeps/m68k/fpu/feholdexcpt.c +++ b/sysdeps/m68k/fpu/feholdexcpt.c @@ -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); diff --git a/sysdeps/m68k/fpu/fesetenv.c b/sysdeps/m68k/fpu/fesetenv.c index 20653f0ddc6..931b2e4bd3c 100644 --- a/sysdeps/m68k/fpu/fesetenv.c +++ b/sysdeps/m68k/fpu/fesetenv.c @@ -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; diff --git a/sysdeps/m68k/fpu/fesetround.c b/sysdeps/m68k/fpu/fesetround.c index 956325de8a8..f9c1da85930 100644 --- a/sysdeps/m68k/fpu/fesetround.c +++ b/sysdeps/m68k/fpu/fesetround.c @@ -36,3 +36,4 @@ fesetround (int round) return 0; } +libm_hidden_def (fesetround); diff --git a/sysdeps/m68k/fpu_control.h b/sysdeps/m68k/fpu_control.h index 86358e6559b..cef5625fa72 100644 --- a/sysdeps/m68k/fpu_control.h +++ b/sysdeps/m68k/fpu_control.h @@ -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) * @@ -65,8 +65,12 @@ #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 */ @@ -75,7 +79,11 @@ #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 index 00000000000..2eda4a85793 --- /dev/null +++ b/sysdeps/m68k/ldsodefs.h @@ -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 + +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 + +#endif diff --git a/sysdeps/m68k/m680x0/Implies b/sysdeps/m68k/m680x0/Implies new file mode 100644 index 00000000000..abf356d9e8b --- /dev/null +++ b/sysdeps/m68k/m680x0/Implies @@ -0,0 +1 @@ +ieee754/ldbl-96 diff --git a/sysdeps/m68k/m680x0/Makefile b/sysdeps/m68k/m680x0/Makefile new file mode 100644 index 00000000000..582fa6f900f --- /dev/null +++ b/sysdeps/m68k/m680x0/Makefile @@ -0,0 +1,2 @@ +# The 68k `long double' is a distinct type we support. +long-double-fcts = yes diff --git a/sysdeps/m68k/add_n.S b/sysdeps/m68k/m680x0/add_n.S similarity index 100% rename from sysdeps/m68k/add_n.S rename to sysdeps/m68k/m680x0/add_n.S diff --git a/sysdeps/m68k/bits/huge_vall.h b/sysdeps/m68k/m680x0/bits/huge_vall.h similarity index 100% rename from sysdeps/m68k/bits/huge_vall.h rename to sysdeps/m68k/m680x0/bits/huge_vall.h diff --git a/sysdeps/m68k/bits/mathdef.h b/sysdeps/m68k/m680x0/bits/mathdef.h similarity index 100% rename from sysdeps/m68k/bits/mathdef.h rename to sysdeps/m68k/m680x0/bits/mathdef.h diff --git a/sysdeps/m68k/fpu/Makefile b/sysdeps/m68k/m680x0/fpu/Makefile similarity index 100% rename from sysdeps/m68k/fpu/Makefile rename to sysdeps/m68k/m680x0/fpu/Makefile diff --git a/sysdeps/m68k/fpu/bits/mathinline.h b/sysdeps/m68k/m680x0/fpu/bits/mathinline.h similarity index 100% rename from sysdeps/m68k/fpu/bits/mathinline.h rename to sysdeps/m68k/m680x0/fpu/bits/mathinline.h diff --git a/sysdeps/m68k/fpu/branred.c b/sysdeps/m68k/m680x0/fpu/branred.c similarity index 100% rename from sysdeps/m68k/fpu/branred.c rename to sysdeps/m68k/m680x0/fpu/branred.c diff --git a/sysdeps/m68k/fpu/doasin.c b/sysdeps/m68k/m680x0/fpu/doasin.c similarity index 100% rename from sysdeps/m68k/fpu/doasin.c rename to sysdeps/m68k/m680x0/fpu/doasin.c diff --git a/sysdeps/m68k/fpu/dosincos.c b/sysdeps/m68k/m680x0/fpu/dosincos.c similarity index 100% rename from sysdeps/m68k/fpu/dosincos.c rename to sysdeps/m68k/m680x0/fpu/dosincos.c diff --git a/sysdeps/m68k/fpu/e_acos.c b/sysdeps/m68k/m680x0/fpu/e_acos.c similarity index 100% rename from sysdeps/m68k/fpu/e_acos.c rename to sysdeps/m68k/m680x0/fpu/e_acos.c diff --git a/sysdeps/m68k/fpu/e_acosf.c b/sysdeps/m68k/m680x0/fpu/e_acosf.c similarity index 100% rename from sysdeps/m68k/fpu/e_acosf.c rename to sysdeps/m68k/m680x0/fpu/e_acosf.c diff --git a/sysdeps/m68k/fpu/e_acosl.c b/sysdeps/m68k/m680x0/fpu/e_acosl.c similarity index 100% rename from sysdeps/m68k/fpu/e_acosl.c rename to sysdeps/m68k/m680x0/fpu/e_acosl.c diff --git a/sysdeps/m68k/fpu/e_asin.c b/sysdeps/m68k/m680x0/fpu/e_asin.c similarity index 100% rename from sysdeps/m68k/fpu/e_asin.c rename to sysdeps/m68k/m680x0/fpu/e_asin.c diff --git a/sysdeps/m68k/fpu/e_asinf.c b/sysdeps/m68k/m680x0/fpu/e_asinf.c similarity index 100% rename from sysdeps/m68k/fpu/e_asinf.c rename to sysdeps/m68k/m680x0/fpu/e_asinf.c diff --git a/sysdeps/m68k/fpu/e_asinl.c b/sysdeps/m68k/m680x0/fpu/e_asinl.c similarity index 100% rename from sysdeps/m68k/fpu/e_asinl.c rename to sysdeps/m68k/m680x0/fpu/e_asinl.c diff --git a/sysdeps/m68k/fpu/e_atan2.c b/sysdeps/m68k/m680x0/fpu/e_atan2.c similarity index 100% rename from sysdeps/m68k/fpu/e_atan2.c rename to sysdeps/m68k/m680x0/fpu/e_atan2.c diff --git a/sysdeps/m68k/fpu/e_atan2f.c b/sysdeps/m68k/m680x0/fpu/e_atan2f.c similarity index 100% rename from sysdeps/m68k/fpu/e_atan2f.c rename to sysdeps/m68k/m680x0/fpu/e_atan2f.c diff --git a/sysdeps/m68k/fpu/e_atan2l.c b/sysdeps/m68k/m680x0/fpu/e_atan2l.c similarity index 100% rename from sysdeps/m68k/fpu/e_atan2l.c rename to sysdeps/m68k/m680x0/fpu/e_atan2l.c diff --git a/sysdeps/m68k/fpu/e_atanh.c b/sysdeps/m68k/m680x0/fpu/e_atanh.c similarity index 100% rename from sysdeps/m68k/fpu/e_atanh.c rename to sysdeps/m68k/m680x0/fpu/e_atanh.c diff --git a/sysdeps/m68k/fpu/e_atanhf.c b/sysdeps/m68k/m680x0/fpu/e_atanhf.c similarity index 100% rename from sysdeps/m68k/fpu/e_atanhf.c rename to sysdeps/m68k/m680x0/fpu/e_atanhf.c diff --git a/sysdeps/m68k/fpu/e_atanhl.c b/sysdeps/m68k/m680x0/fpu/e_atanhl.c similarity index 100% rename from sysdeps/m68k/fpu/e_atanhl.c rename to sysdeps/m68k/m680x0/fpu/e_atanhl.c diff --git a/sysdeps/m68k/fpu/e_cosh.c b/sysdeps/m68k/m680x0/fpu/e_cosh.c similarity index 100% rename from sysdeps/m68k/fpu/e_cosh.c rename to sysdeps/m68k/m680x0/fpu/e_cosh.c diff --git a/sysdeps/m68k/fpu/e_coshf.c b/sysdeps/m68k/m680x0/fpu/e_coshf.c similarity index 100% rename from sysdeps/m68k/fpu/e_coshf.c rename to sysdeps/m68k/m680x0/fpu/e_coshf.c diff --git a/sysdeps/m68k/fpu/e_coshl.c b/sysdeps/m68k/m680x0/fpu/e_coshl.c similarity index 100% rename from sysdeps/m68k/fpu/e_coshl.c rename to sysdeps/m68k/m680x0/fpu/e_coshl.c diff --git a/sysdeps/m68k/fpu/e_exp.c b/sysdeps/m68k/m680x0/fpu/e_exp.c similarity index 100% rename from sysdeps/m68k/fpu/e_exp.c rename to sysdeps/m68k/m680x0/fpu/e_exp.c diff --git a/sysdeps/m68k/fpu/e_exp10.c b/sysdeps/m68k/m680x0/fpu/e_exp10.c similarity index 100% rename from sysdeps/m68k/fpu/e_exp10.c rename to sysdeps/m68k/m680x0/fpu/e_exp10.c diff --git a/sysdeps/m68k/fpu/e_exp10f.c b/sysdeps/m68k/m680x0/fpu/e_exp10f.c similarity index 100% rename from sysdeps/m68k/fpu/e_exp10f.c rename to sysdeps/m68k/m680x0/fpu/e_exp10f.c diff --git a/sysdeps/m68k/fpu/e_exp10l.c b/sysdeps/m68k/m680x0/fpu/e_exp10l.c similarity index 100% rename from sysdeps/m68k/fpu/e_exp10l.c rename to sysdeps/m68k/m680x0/fpu/e_exp10l.c diff --git a/sysdeps/m68k/fpu/e_exp2.c b/sysdeps/m68k/m680x0/fpu/e_exp2.c similarity index 100% rename from sysdeps/m68k/fpu/e_exp2.c rename to sysdeps/m68k/m680x0/fpu/e_exp2.c diff --git a/sysdeps/m68k/fpu/e_exp2f.c b/sysdeps/m68k/m680x0/fpu/e_exp2f.c similarity index 100% rename from sysdeps/m68k/fpu/e_exp2f.c rename to sysdeps/m68k/m680x0/fpu/e_exp2f.c diff --git a/sysdeps/m68k/fpu/e_exp2l.c b/sysdeps/m68k/m680x0/fpu/e_exp2l.c similarity index 100% rename from sysdeps/m68k/fpu/e_exp2l.c rename to sysdeps/m68k/m680x0/fpu/e_exp2l.c diff --git a/sysdeps/m68k/fpu/e_expf.c b/sysdeps/m68k/m680x0/fpu/e_expf.c similarity index 100% rename from sysdeps/m68k/fpu/e_expf.c rename to sysdeps/m68k/m680x0/fpu/e_expf.c diff --git a/sysdeps/m68k/fpu/e_expl.c b/sysdeps/m68k/m680x0/fpu/e_expl.c similarity index 100% rename from sysdeps/m68k/fpu/e_expl.c rename to sysdeps/m68k/m680x0/fpu/e_expl.c diff --git a/sysdeps/m68k/fpu/e_fmod.c b/sysdeps/m68k/m680x0/fpu/e_fmod.c similarity index 100% rename from sysdeps/m68k/fpu/e_fmod.c rename to sysdeps/m68k/m680x0/fpu/e_fmod.c diff --git a/sysdeps/m68k/fpu/e_fmodf.c b/sysdeps/m68k/m680x0/fpu/e_fmodf.c similarity index 100% rename from sysdeps/m68k/fpu/e_fmodf.c rename to sysdeps/m68k/m680x0/fpu/e_fmodf.c diff --git a/sysdeps/m68k/fpu/e_fmodl.c b/sysdeps/m68k/m680x0/fpu/e_fmodl.c similarity index 100% rename from sysdeps/m68k/fpu/e_fmodl.c rename to sysdeps/m68k/m680x0/fpu/e_fmodl.c diff --git a/sysdeps/m68k/fpu/e_log.c b/sysdeps/m68k/m680x0/fpu/e_log.c similarity index 100% rename from sysdeps/m68k/fpu/e_log.c rename to sysdeps/m68k/m680x0/fpu/e_log.c diff --git a/sysdeps/m68k/fpu/e_log10.c b/sysdeps/m68k/m680x0/fpu/e_log10.c similarity index 100% rename from sysdeps/m68k/fpu/e_log10.c rename to sysdeps/m68k/m680x0/fpu/e_log10.c diff --git a/sysdeps/m68k/fpu/e_log10f.c b/sysdeps/m68k/m680x0/fpu/e_log10f.c similarity index 100% rename from sysdeps/m68k/fpu/e_log10f.c rename to sysdeps/m68k/m680x0/fpu/e_log10f.c diff --git a/sysdeps/m68k/fpu/e_log10l.c b/sysdeps/m68k/m680x0/fpu/e_log10l.c similarity index 100% rename from sysdeps/m68k/fpu/e_log10l.c rename to sysdeps/m68k/m680x0/fpu/e_log10l.c diff --git a/sysdeps/m68k/fpu/e_log2.c b/sysdeps/m68k/m680x0/fpu/e_log2.c similarity index 100% rename from sysdeps/m68k/fpu/e_log2.c rename to sysdeps/m68k/m680x0/fpu/e_log2.c diff --git a/sysdeps/m68k/fpu/e_log2f.c b/sysdeps/m68k/m680x0/fpu/e_log2f.c similarity index 100% rename from sysdeps/m68k/fpu/e_log2f.c rename to sysdeps/m68k/m680x0/fpu/e_log2f.c diff --git a/sysdeps/m68k/fpu/e_log2l.c b/sysdeps/m68k/m680x0/fpu/e_log2l.c similarity index 100% rename from sysdeps/m68k/fpu/e_log2l.c rename to sysdeps/m68k/m680x0/fpu/e_log2l.c diff --git a/sysdeps/m68k/fpu/e_logf.c b/sysdeps/m68k/m680x0/fpu/e_logf.c similarity index 100% rename from sysdeps/m68k/fpu/e_logf.c rename to sysdeps/m68k/m680x0/fpu/e_logf.c diff --git a/sysdeps/m68k/fpu/e_logl.c b/sysdeps/m68k/m680x0/fpu/e_logl.c similarity index 100% rename from sysdeps/m68k/fpu/e_logl.c rename to sysdeps/m68k/m680x0/fpu/e_logl.c diff --git a/sysdeps/m68k/fpu/e_pow.c b/sysdeps/m68k/m680x0/fpu/e_pow.c similarity index 100% rename from sysdeps/m68k/fpu/e_pow.c rename to sysdeps/m68k/m680x0/fpu/e_pow.c diff --git a/sysdeps/m68k/fpu/e_powf.c b/sysdeps/m68k/m680x0/fpu/e_powf.c similarity index 100% rename from sysdeps/m68k/fpu/e_powf.c rename to sysdeps/m68k/m680x0/fpu/e_powf.c diff --git a/sysdeps/m68k/fpu/e_powl.c b/sysdeps/m68k/m680x0/fpu/e_powl.c similarity index 100% rename from sysdeps/m68k/fpu/e_powl.c rename to sysdeps/m68k/m680x0/fpu/e_powl.c diff --git a/sysdeps/m68k/fpu/e_rem_pio2.c b/sysdeps/m68k/m680x0/fpu/e_rem_pio2.c similarity index 100% rename from sysdeps/m68k/fpu/e_rem_pio2.c rename to sysdeps/m68k/m680x0/fpu/e_rem_pio2.c diff --git a/sysdeps/m68k/fpu/e_rem_pio2f.c b/sysdeps/m68k/m680x0/fpu/e_rem_pio2f.c similarity index 100% rename from sysdeps/m68k/fpu/e_rem_pio2f.c rename to sysdeps/m68k/m680x0/fpu/e_rem_pio2f.c diff --git a/sysdeps/m68k/fpu/e_rem_pio2l.c b/sysdeps/m68k/m680x0/fpu/e_rem_pio2l.c similarity index 100% rename from sysdeps/m68k/fpu/e_rem_pio2l.c rename to sysdeps/m68k/m680x0/fpu/e_rem_pio2l.c diff --git a/sysdeps/m68k/fpu/e_remainder.c b/sysdeps/m68k/m680x0/fpu/e_remainder.c similarity index 100% rename from sysdeps/m68k/fpu/e_remainder.c rename to sysdeps/m68k/m680x0/fpu/e_remainder.c diff --git a/sysdeps/m68k/fpu/e_remainderf.c b/sysdeps/m68k/m680x0/fpu/e_remainderf.c similarity index 100% rename from sysdeps/m68k/fpu/e_remainderf.c rename to sysdeps/m68k/m680x0/fpu/e_remainderf.c diff --git a/sysdeps/m68k/fpu/e_remainderl.c b/sysdeps/m68k/m680x0/fpu/e_remainderl.c similarity index 100% rename from sysdeps/m68k/fpu/e_remainderl.c rename to sysdeps/m68k/m680x0/fpu/e_remainderl.c diff --git a/sysdeps/m68k/fpu/e_scalb.c b/sysdeps/m68k/m680x0/fpu/e_scalb.c similarity index 100% rename from sysdeps/m68k/fpu/e_scalb.c rename to sysdeps/m68k/m680x0/fpu/e_scalb.c diff --git a/sysdeps/m68k/fpu/e_scalbf.c b/sysdeps/m68k/m680x0/fpu/e_scalbf.c similarity index 100% rename from sysdeps/m68k/fpu/e_scalbf.c rename to sysdeps/m68k/m680x0/fpu/e_scalbf.c diff --git a/sysdeps/m68k/fpu/e_scalbl.c b/sysdeps/m68k/m680x0/fpu/e_scalbl.c similarity index 100% rename from sysdeps/m68k/fpu/e_scalbl.c rename to sysdeps/m68k/m680x0/fpu/e_scalbl.c diff --git a/sysdeps/m68k/fpu/e_sinh.c b/sysdeps/m68k/m680x0/fpu/e_sinh.c similarity index 100% rename from sysdeps/m68k/fpu/e_sinh.c rename to sysdeps/m68k/m680x0/fpu/e_sinh.c diff --git a/sysdeps/m68k/fpu/e_sinhf.c b/sysdeps/m68k/m680x0/fpu/e_sinhf.c similarity index 100% rename from sysdeps/m68k/fpu/e_sinhf.c rename to sysdeps/m68k/m680x0/fpu/e_sinhf.c diff --git a/sysdeps/m68k/fpu/e_sinhl.c b/sysdeps/m68k/m680x0/fpu/e_sinhl.c similarity index 100% rename from sysdeps/m68k/fpu/e_sinhl.c rename to sysdeps/m68k/m680x0/fpu/e_sinhl.c diff --git a/sysdeps/m68k/fpu/e_sqrt.c b/sysdeps/m68k/m680x0/fpu/e_sqrt.c similarity index 100% rename from sysdeps/m68k/fpu/e_sqrt.c rename to sysdeps/m68k/m680x0/fpu/e_sqrt.c diff --git a/sysdeps/m68k/fpu/e_sqrtf.c b/sysdeps/m68k/m680x0/fpu/e_sqrtf.c similarity index 100% rename from sysdeps/m68k/fpu/e_sqrtf.c rename to sysdeps/m68k/m680x0/fpu/e_sqrtf.c diff --git a/sysdeps/m68k/fpu/e_sqrtl.c b/sysdeps/m68k/m680x0/fpu/e_sqrtl.c similarity index 100% rename from sysdeps/m68k/fpu/e_sqrtl.c rename to sysdeps/m68k/m680x0/fpu/e_sqrtl.c diff --git a/sysdeps/m68k/fpu/fraiseexcpt.c b/sysdeps/m68k/m680x0/fpu/fraiseexcpt.c similarity index 100% rename from sysdeps/m68k/fpu/fraiseexcpt.c rename to sysdeps/m68k/m680x0/fpu/fraiseexcpt.c diff --git a/sysdeps/m68k/fpu/halfulp.c b/sysdeps/m68k/m680x0/fpu/halfulp.c similarity index 100% rename from sysdeps/m68k/fpu/halfulp.c rename to sysdeps/m68k/m680x0/fpu/halfulp.c diff --git a/sysdeps/m68k/fpu/k_cos.c b/sysdeps/m68k/m680x0/fpu/k_cos.c similarity index 100% rename from sysdeps/m68k/fpu/k_cos.c rename to sysdeps/m68k/m680x0/fpu/k_cos.c diff --git a/sysdeps/m68k/fpu/k_cosf.c b/sysdeps/m68k/m680x0/fpu/k_cosf.c similarity index 100% rename from sysdeps/m68k/fpu/k_cosf.c rename to sysdeps/m68k/m680x0/fpu/k_cosf.c diff --git a/sysdeps/m68k/fpu/k_cosl.c b/sysdeps/m68k/m680x0/fpu/k_cosl.c similarity index 100% rename from sysdeps/m68k/fpu/k_cosl.c rename to sysdeps/m68k/m680x0/fpu/k_cosl.c diff --git a/sysdeps/m68k/fpu/k_rem_pio2.c b/sysdeps/m68k/m680x0/fpu/k_rem_pio2.c similarity index 100% rename from sysdeps/m68k/fpu/k_rem_pio2.c rename to sysdeps/m68k/m680x0/fpu/k_rem_pio2.c diff --git a/sysdeps/m68k/fpu/k_rem_pio2f.c b/sysdeps/m68k/m680x0/fpu/k_rem_pio2f.c similarity index 100% rename from sysdeps/m68k/fpu/k_rem_pio2f.c rename to sysdeps/m68k/m680x0/fpu/k_rem_pio2f.c diff --git a/sysdeps/m68k/fpu/k_rem_pio2l.c b/sysdeps/m68k/m680x0/fpu/k_rem_pio2l.c similarity index 100% rename from sysdeps/m68k/fpu/k_rem_pio2l.c rename to sysdeps/m68k/m680x0/fpu/k_rem_pio2l.c diff --git a/sysdeps/m68k/fpu/k_sin.c b/sysdeps/m68k/m680x0/fpu/k_sin.c similarity index 100% rename from sysdeps/m68k/fpu/k_sin.c rename to sysdeps/m68k/m680x0/fpu/k_sin.c diff --git a/sysdeps/m68k/fpu/k_sinf.c b/sysdeps/m68k/m680x0/fpu/k_sinf.c similarity index 100% rename from sysdeps/m68k/fpu/k_sinf.c rename to sysdeps/m68k/m680x0/fpu/k_sinf.c diff --git a/sysdeps/m68k/fpu/k_sinl.c b/sysdeps/m68k/m680x0/fpu/k_sinl.c similarity index 100% rename from sysdeps/m68k/fpu/k_sinl.c rename to sysdeps/m68k/m680x0/fpu/k_sinl.c diff --git a/sysdeps/m68k/fpu/k_tan.c b/sysdeps/m68k/m680x0/fpu/k_tan.c similarity index 100% rename from sysdeps/m68k/fpu/k_tan.c rename to sysdeps/m68k/m680x0/fpu/k_tan.c diff --git a/sysdeps/m68k/fpu/k_tanf.c b/sysdeps/m68k/m680x0/fpu/k_tanf.c similarity index 100% rename from sysdeps/m68k/fpu/k_tanf.c rename to sysdeps/m68k/m680x0/fpu/k_tanf.c diff --git a/sysdeps/m68k/fpu/k_tanl.c b/sysdeps/m68k/m680x0/fpu/k_tanl.c similarity index 100% rename from sysdeps/m68k/fpu/k_tanl.c rename to sysdeps/m68k/m680x0/fpu/k_tanl.c diff --git a/sysdeps/m68k/fpu/libm-test-ulps b/sysdeps/m68k/m680x0/fpu/libm-test-ulps similarity index 100% rename from sysdeps/m68k/fpu/libm-test-ulps rename to sysdeps/m68k/m680x0/fpu/libm-test-ulps diff --git a/sysdeps/m68k/fpu/mathimpl.h b/sysdeps/m68k/m680x0/fpu/mathimpl.h similarity index 100% rename from sysdeps/m68k/fpu/mathimpl.h rename to sysdeps/m68k/m680x0/fpu/mathimpl.h diff --git a/sysdeps/m68k/fpu/mpa.c b/sysdeps/m68k/m680x0/fpu/mpa.c similarity index 100% rename from sysdeps/m68k/fpu/mpa.c rename to sysdeps/m68k/m680x0/fpu/mpa.c diff --git a/sysdeps/m68k/fpu/mpatan.c b/sysdeps/m68k/m680x0/fpu/mpatan.c similarity index 100% rename from sysdeps/m68k/fpu/mpatan.c rename to sysdeps/m68k/m680x0/fpu/mpatan.c diff --git a/sysdeps/m68k/fpu/mpatan2.c b/sysdeps/m68k/m680x0/fpu/mpatan2.c similarity index 100% rename from sysdeps/m68k/fpu/mpatan2.c rename to sysdeps/m68k/m680x0/fpu/mpatan2.c diff --git a/sysdeps/m68k/fpu/mpexp.c b/sysdeps/m68k/m680x0/fpu/mpexp.c similarity index 100% rename from sysdeps/m68k/fpu/mpexp.c rename to sysdeps/m68k/m680x0/fpu/mpexp.c diff --git a/sysdeps/m68k/fpu/mplog.c b/sysdeps/m68k/m680x0/fpu/mplog.c similarity index 100% rename from sysdeps/m68k/fpu/mplog.c rename to sysdeps/m68k/m680x0/fpu/mplog.c diff --git a/sysdeps/m68k/fpu/mpsqrt.c b/sysdeps/m68k/m680x0/fpu/mpsqrt.c similarity index 100% rename from sysdeps/m68k/fpu/mpsqrt.c rename to sysdeps/m68k/m680x0/fpu/mpsqrt.c diff --git a/sysdeps/m68k/fpu/mptan.c b/sysdeps/m68k/m680x0/fpu/mptan.c similarity index 100% rename from sysdeps/m68k/fpu/mptan.c rename to sysdeps/m68k/m680x0/fpu/mptan.c diff --git a/sysdeps/m68k/fpu/s_atan.c b/sysdeps/m68k/m680x0/fpu/s_atan.c similarity index 100% rename from sysdeps/m68k/fpu/s_atan.c rename to sysdeps/m68k/m680x0/fpu/s_atan.c diff --git a/sysdeps/m68k/fpu/s_atanf.c b/sysdeps/m68k/m680x0/fpu/s_atanf.c similarity index 100% rename from sysdeps/m68k/fpu/s_atanf.c rename to sysdeps/m68k/m680x0/fpu/s_atanf.c diff --git a/sysdeps/m68k/fpu/s_atanl.c b/sysdeps/m68k/m680x0/fpu/s_atanl.c similarity index 100% rename from sysdeps/m68k/fpu/s_atanl.c rename to sysdeps/m68k/m680x0/fpu/s_atanl.c diff --git a/sysdeps/m68k/fpu/s_ccos.c b/sysdeps/m68k/m680x0/fpu/s_ccos.c similarity index 100% rename from sysdeps/m68k/fpu/s_ccos.c rename to sysdeps/m68k/m680x0/fpu/s_ccos.c diff --git a/sysdeps/m68k/fpu/s_ccosf.c b/sysdeps/m68k/m680x0/fpu/s_ccosf.c similarity index 100% rename from sysdeps/m68k/fpu/s_ccosf.c rename to sysdeps/m68k/m680x0/fpu/s_ccosf.c diff --git a/sysdeps/m68k/fpu/s_ccosh.c b/sysdeps/m68k/m680x0/fpu/s_ccosh.c similarity index 100% rename from sysdeps/m68k/fpu/s_ccosh.c rename to sysdeps/m68k/m680x0/fpu/s_ccosh.c diff --git a/sysdeps/m68k/fpu/s_ccoshf.c b/sysdeps/m68k/m680x0/fpu/s_ccoshf.c similarity index 100% rename from sysdeps/m68k/fpu/s_ccoshf.c rename to sysdeps/m68k/m680x0/fpu/s_ccoshf.c diff --git a/sysdeps/m68k/fpu/s_ccoshl.c b/sysdeps/m68k/m680x0/fpu/s_ccoshl.c similarity index 100% rename from sysdeps/m68k/fpu/s_ccoshl.c rename to sysdeps/m68k/m680x0/fpu/s_ccoshl.c diff --git a/sysdeps/m68k/fpu/s_ccosl.c b/sysdeps/m68k/m680x0/fpu/s_ccosl.c similarity index 100% rename from sysdeps/m68k/fpu/s_ccosl.c rename to sysdeps/m68k/m680x0/fpu/s_ccosl.c diff --git a/sysdeps/m68k/fpu/s_ceil.c b/sysdeps/m68k/m680x0/fpu/s_ceil.c similarity index 100% rename from sysdeps/m68k/fpu/s_ceil.c rename to sysdeps/m68k/m680x0/fpu/s_ceil.c diff --git a/sysdeps/m68k/fpu/s_ceilf.c b/sysdeps/m68k/m680x0/fpu/s_ceilf.c similarity index 100% rename from sysdeps/m68k/fpu/s_ceilf.c rename to sysdeps/m68k/m680x0/fpu/s_ceilf.c diff --git a/sysdeps/m68k/fpu/s_ceill.c b/sysdeps/m68k/m680x0/fpu/s_ceill.c similarity index 100% rename from sysdeps/m68k/fpu/s_ceill.c rename to sysdeps/m68k/m680x0/fpu/s_ceill.c diff --git a/sysdeps/m68k/fpu/s_cexp.c b/sysdeps/m68k/m680x0/fpu/s_cexp.c similarity index 100% rename from sysdeps/m68k/fpu/s_cexp.c rename to sysdeps/m68k/m680x0/fpu/s_cexp.c diff --git a/sysdeps/m68k/fpu/s_cexpf.c b/sysdeps/m68k/m680x0/fpu/s_cexpf.c similarity index 100% rename from sysdeps/m68k/fpu/s_cexpf.c rename to sysdeps/m68k/m680x0/fpu/s_cexpf.c diff --git a/sysdeps/m68k/fpu/s_cexpl.c b/sysdeps/m68k/m680x0/fpu/s_cexpl.c similarity index 100% rename from sysdeps/m68k/fpu/s_cexpl.c rename to sysdeps/m68k/m680x0/fpu/s_cexpl.c diff --git a/sysdeps/m68k/fpu/s_cos.c b/sysdeps/m68k/m680x0/fpu/s_cos.c similarity index 100% rename from sysdeps/m68k/fpu/s_cos.c rename to sysdeps/m68k/m680x0/fpu/s_cos.c diff --git a/sysdeps/m68k/fpu/s_cosf.c b/sysdeps/m68k/m680x0/fpu/s_cosf.c similarity index 100% rename from sysdeps/m68k/fpu/s_cosf.c rename to sysdeps/m68k/m680x0/fpu/s_cosf.c diff --git a/sysdeps/m68k/fpu/s_cosl.c b/sysdeps/m68k/m680x0/fpu/s_cosl.c similarity index 100% rename from sysdeps/m68k/fpu/s_cosl.c rename to sysdeps/m68k/m680x0/fpu/s_cosl.c diff --git a/sysdeps/m68k/fpu/s_csin.c b/sysdeps/m68k/m680x0/fpu/s_csin.c similarity index 100% rename from sysdeps/m68k/fpu/s_csin.c rename to sysdeps/m68k/m680x0/fpu/s_csin.c diff --git a/sysdeps/m68k/fpu/s_csinf.c b/sysdeps/m68k/m680x0/fpu/s_csinf.c similarity index 100% rename from sysdeps/m68k/fpu/s_csinf.c rename to sysdeps/m68k/m680x0/fpu/s_csinf.c diff --git a/sysdeps/m68k/fpu/s_csinh.c b/sysdeps/m68k/m680x0/fpu/s_csinh.c similarity index 100% rename from sysdeps/m68k/fpu/s_csinh.c rename to sysdeps/m68k/m680x0/fpu/s_csinh.c diff --git a/sysdeps/m68k/fpu/s_csinhf.c b/sysdeps/m68k/m680x0/fpu/s_csinhf.c similarity index 100% rename from sysdeps/m68k/fpu/s_csinhf.c rename to sysdeps/m68k/m680x0/fpu/s_csinhf.c diff --git a/sysdeps/m68k/fpu/s_csinhl.c b/sysdeps/m68k/m680x0/fpu/s_csinhl.c similarity index 100% rename from sysdeps/m68k/fpu/s_csinhl.c rename to sysdeps/m68k/m680x0/fpu/s_csinhl.c diff --git a/sysdeps/m68k/fpu/s_csinl.c b/sysdeps/m68k/m680x0/fpu/s_csinl.c similarity index 100% rename from sysdeps/m68k/fpu/s_csinl.c rename to sysdeps/m68k/m680x0/fpu/s_csinl.c diff --git a/sysdeps/m68k/fpu/s_expm1.c b/sysdeps/m68k/m680x0/fpu/s_expm1.c similarity index 100% rename from sysdeps/m68k/fpu/s_expm1.c rename to sysdeps/m68k/m680x0/fpu/s_expm1.c diff --git a/sysdeps/m68k/fpu/s_expm1f.c b/sysdeps/m68k/m680x0/fpu/s_expm1f.c similarity index 100% rename from sysdeps/m68k/fpu/s_expm1f.c rename to sysdeps/m68k/m680x0/fpu/s_expm1f.c diff --git a/sysdeps/m68k/fpu/s_expm1l.c b/sysdeps/m68k/m680x0/fpu/s_expm1l.c similarity index 100% rename from sysdeps/m68k/fpu/s_expm1l.c rename to sysdeps/m68k/m680x0/fpu/s_expm1l.c diff --git a/sysdeps/m68k/fpu/s_fabs.c b/sysdeps/m68k/m680x0/fpu/s_fabs.c similarity index 100% rename from sysdeps/m68k/fpu/s_fabs.c rename to sysdeps/m68k/m680x0/fpu/s_fabs.c diff --git a/sysdeps/m68k/fpu/s_fabsf.c b/sysdeps/m68k/m680x0/fpu/s_fabsf.c similarity index 100% rename from sysdeps/m68k/fpu/s_fabsf.c rename to sysdeps/m68k/m680x0/fpu/s_fabsf.c diff --git a/sysdeps/m68k/fpu/s_fabsl.c b/sysdeps/m68k/m680x0/fpu/s_fabsl.c similarity index 100% rename from sysdeps/m68k/fpu/s_fabsl.c rename to sysdeps/m68k/m680x0/fpu/s_fabsl.c diff --git a/sysdeps/m68k/fpu/s_finite.c b/sysdeps/m68k/m680x0/fpu/s_finite.c similarity index 100% rename from sysdeps/m68k/fpu/s_finite.c rename to sysdeps/m68k/m680x0/fpu/s_finite.c diff --git a/sysdeps/m68k/fpu/s_finitef.c b/sysdeps/m68k/m680x0/fpu/s_finitef.c similarity index 100% rename from sysdeps/m68k/fpu/s_finitef.c rename to sysdeps/m68k/m680x0/fpu/s_finitef.c diff --git a/sysdeps/m68k/fpu/s_finitel.c b/sysdeps/m68k/m680x0/fpu/s_finitel.c similarity index 100% rename from sysdeps/m68k/fpu/s_finitel.c rename to sysdeps/m68k/m680x0/fpu/s_finitel.c diff --git a/sysdeps/m68k/fpu/s_floor.c b/sysdeps/m68k/m680x0/fpu/s_floor.c similarity index 100% rename from sysdeps/m68k/fpu/s_floor.c rename to sysdeps/m68k/m680x0/fpu/s_floor.c diff --git a/sysdeps/m68k/fpu/s_floorf.c b/sysdeps/m68k/m680x0/fpu/s_floorf.c similarity index 100% rename from sysdeps/m68k/fpu/s_floorf.c rename to sysdeps/m68k/m680x0/fpu/s_floorf.c diff --git a/sysdeps/m68k/fpu/s_floorl.c b/sysdeps/m68k/m680x0/fpu/s_floorl.c similarity index 100% rename from sysdeps/m68k/fpu/s_floorl.c rename to sysdeps/m68k/m680x0/fpu/s_floorl.c diff --git a/sysdeps/m68k/fpu/s_fpclassifyl.c b/sysdeps/m68k/m680x0/fpu/s_fpclassifyl.c similarity index 100% rename from sysdeps/m68k/fpu/s_fpclassifyl.c rename to sysdeps/m68k/m680x0/fpu/s_fpclassifyl.c diff --git a/sysdeps/m68k/fpu/s_frexp.c b/sysdeps/m68k/m680x0/fpu/s_frexp.c similarity index 100% rename from sysdeps/m68k/fpu/s_frexp.c rename to sysdeps/m68k/m680x0/fpu/s_frexp.c diff --git a/sysdeps/m68k/fpu/s_frexpf.c b/sysdeps/m68k/m680x0/fpu/s_frexpf.c similarity index 100% rename from sysdeps/m68k/fpu/s_frexpf.c rename to sysdeps/m68k/m680x0/fpu/s_frexpf.c diff --git a/sysdeps/m68k/fpu/s_frexpl.c b/sysdeps/m68k/m680x0/fpu/s_frexpl.c similarity index 100% rename from sysdeps/m68k/fpu/s_frexpl.c rename to sysdeps/m68k/m680x0/fpu/s_frexpl.c diff --git a/sysdeps/m68k/fpu/s_ilogb.c b/sysdeps/m68k/m680x0/fpu/s_ilogb.c similarity index 100% rename from sysdeps/m68k/fpu/s_ilogb.c rename to sysdeps/m68k/m680x0/fpu/s_ilogb.c diff --git a/sysdeps/m68k/fpu/s_ilogbf.c b/sysdeps/m68k/m680x0/fpu/s_ilogbf.c similarity index 100% rename from sysdeps/m68k/fpu/s_ilogbf.c rename to sysdeps/m68k/m680x0/fpu/s_ilogbf.c diff --git a/sysdeps/m68k/fpu/s_ilogbl.c b/sysdeps/m68k/m680x0/fpu/s_ilogbl.c similarity index 100% rename from sysdeps/m68k/fpu/s_ilogbl.c rename to sysdeps/m68k/m680x0/fpu/s_ilogbl.c diff --git a/sysdeps/m68k/fpu/s_isinf.c b/sysdeps/m68k/m680x0/fpu/s_isinf.c similarity index 100% rename from sysdeps/m68k/fpu/s_isinf.c rename to sysdeps/m68k/m680x0/fpu/s_isinf.c diff --git a/sysdeps/m68k/fpu/s_isinff.c b/sysdeps/m68k/m680x0/fpu/s_isinff.c similarity index 100% rename from sysdeps/m68k/fpu/s_isinff.c rename to sysdeps/m68k/m680x0/fpu/s_isinff.c diff --git a/sysdeps/m68k/fpu/s_isinfl.c b/sysdeps/m68k/m680x0/fpu/s_isinfl.c similarity index 100% rename from sysdeps/m68k/fpu/s_isinfl.c rename to sysdeps/m68k/m680x0/fpu/s_isinfl.c diff --git a/sysdeps/m68k/fpu/s_isnan.c b/sysdeps/m68k/m680x0/fpu/s_isnan.c similarity index 100% rename from sysdeps/m68k/fpu/s_isnan.c rename to sysdeps/m68k/m680x0/fpu/s_isnan.c diff --git a/sysdeps/m68k/fpu/s_isnanf.c b/sysdeps/m68k/m680x0/fpu/s_isnanf.c similarity index 100% rename from sysdeps/m68k/fpu/s_isnanf.c rename to sysdeps/m68k/m680x0/fpu/s_isnanf.c diff --git a/sysdeps/m68k/fpu/s_isnanl.c b/sysdeps/m68k/m680x0/fpu/s_isnanl.c similarity index 100% rename from sysdeps/m68k/fpu/s_isnanl.c rename to sysdeps/m68k/m680x0/fpu/s_isnanl.c diff --git a/sysdeps/m68k/fpu/s_llrint.c b/sysdeps/m68k/m680x0/fpu/s_llrint.c similarity index 100% rename from sysdeps/m68k/fpu/s_llrint.c rename to sysdeps/m68k/m680x0/fpu/s_llrint.c diff --git a/sysdeps/m68k/fpu/s_llrintf.c b/sysdeps/m68k/m680x0/fpu/s_llrintf.c similarity index 100% rename from sysdeps/m68k/fpu/s_llrintf.c rename to sysdeps/m68k/m680x0/fpu/s_llrintf.c diff --git a/sysdeps/m68k/fpu/s_llrintl.c b/sysdeps/m68k/m680x0/fpu/s_llrintl.c similarity index 100% rename from sysdeps/m68k/fpu/s_llrintl.c rename to sysdeps/m68k/m680x0/fpu/s_llrintl.c diff --git a/sysdeps/m68k/fpu/s_log1p.c b/sysdeps/m68k/m680x0/fpu/s_log1p.c similarity index 100% rename from sysdeps/m68k/fpu/s_log1p.c rename to sysdeps/m68k/m680x0/fpu/s_log1p.c diff --git a/sysdeps/m68k/fpu/s_log1pf.c b/sysdeps/m68k/m680x0/fpu/s_log1pf.c similarity index 100% rename from sysdeps/m68k/fpu/s_log1pf.c rename to sysdeps/m68k/m680x0/fpu/s_log1pf.c diff --git a/sysdeps/m68k/fpu/s_log1pl.c b/sysdeps/m68k/m680x0/fpu/s_log1pl.c similarity index 100% rename from sysdeps/m68k/fpu/s_log1pl.c rename to sysdeps/m68k/m680x0/fpu/s_log1pl.c diff --git a/sysdeps/m68k/fpu/s_lrint.c b/sysdeps/m68k/m680x0/fpu/s_lrint.c similarity index 100% rename from sysdeps/m68k/fpu/s_lrint.c rename to sysdeps/m68k/m680x0/fpu/s_lrint.c diff --git a/sysdeps/m68k/fpu/s_lrintf.c b/sysdeps/m68k/m680x0/fpu/s_lrintf.c similarity index 100% rename from sysdeps/m68k/fpu/s_lrintf.c rename to sysdeps/m68k/m680x0/fpu/s_lrintf.c diff --git a/sysdeps/m68k/fpu/s_lrintl.c b/sysdeps/m68k/m680x0/fpu/s_lrintl.c similarity index 100% rename from sysdeps/m68k/fpu/s_lrintl.c rename to sysdeps/m68k/m680x0/fpu/s_lrintl.c diff --git a/sysdeps/m68k/fpu/s_modf.c b/sysdeps/m68k/m680x0/fpu/s_modf.c similarity index 100% rename from sysdeps/m68k/fpu/s_modf.c rename to sysdeps/m68k/m680x0/fpu/s_modf.c diff --git a/sysdeps/m68k/fpu/s_modff.c b/sysdeps/m68k/m680x0/fpu/s_modff.c similarity index 100% rename from sysdeps/m68k/fpu/s_modff.c rename to sysdeps/m68k/m680x0/fpu/s_modff.c diff --git a/sysdeps/m68k/fpu/s_modfl.c b/sysdeps/m68k/m680x0/fpu/s_modfl.c similarity index 100% rename from sysdeps/m68k/fpu/s_modfl.c rename to sysdeps/m68k/m680x0/fpu/s_modfl.c diff --git a/sysdeps/m68k/fpu/s_nearbyint.c b/sysdeps/m68k/m680x0/fpu/s_nearbyint.c similarity index 100% rename from sysdeps/m68k/fpu/s_nearbyint.c rename to sysdeps/m68k/m680x0/fpu/s_nearbyint.c diff --git a/sysdeps/m68k/fpu/s_nearbyintf.c b/sysdeps/m68k/m680x0/fpu/s_nearbyintf.c similarity index 100% rename from sysdeps/m68k/fpu/s_nearbyintf.c rename to sysdeps/m68k/m680x0/fpu/s_nearbyintf.c diff --git a/sysdeps/m68k/fpu/s_nearbyintl.c b/sysdeps/m68k/m680x0/fpu/s_nearbyintl.c similarity index 100% rename from sysdeps/m68k/fpu/s_nearbyintl.c rename to sysdeps/m68k/m680x0/fpu/s_nearbyintl.c diff --git a/sysdeps/m68k/fpu/s_nextafterl.c b/sysdeps/m68k/m680x0/fpu/s_nextafterl.c similarity index 100% rename from sysdeps/m68k/fpu/s_nextafterl.c rename to sysdeps/m68k/m680x0/fpu/s_nextafterl.c diff --git a/sysdeps/m68k/fpu/s_remquo.c b/sysdeps/m68k/m680x0/fpu/s_remquo.c similarity index 100% rename from sysdeps/m68k/fpu/s_remquo.c rename to sysdeps/m68k/m680x0/fpu/s_remquo.c diff --git a/sysdeps/m68k/fpu/s_remquof.c b/sysdeps/m68k/m680x0/fpu/s_remquof.c similarity index 100% rename from sysdeps/m68k/fpu/s_remquof.c rename to sysdeps/m68k/m680x0/fpu/s_remquof.c diff --git a/sysdeps/m68k/fpu/s_remquol.c b/sysdeps/m68k/m680x0/fpu/s_remquol.c similarity index 100% rename from sysdeps/m68k/fpu/s_remquol.c rename to sysdeps/m68k/m680x0/fpu/s_remquol.c diff --git a/sysdeps/m68k/fpu/s_rint.c b/sysdeps/m68k/m680x0/fpu/s_rint.c similarity index 100% rename from sysdeps/m68k/fpu/s_rint.c rename to sysdeps/m68k/m680x0/fpu/s_rint.c diff --git a/sysdeps/m68k/fpu/s_rintf.c b/sysdeps/m68k/m680x0/fpu/s_rintf.c similarity index 100% rename from sysdeps/m68k/fpu/s_rintf.c rename to sysdeps/m68k/m680x0/fpu/s_rintf.c diff --git a/sysdeps/m68k/fpu/s_rintl.c b/sysdeps/m68k/m680x0/fpu/s_rintl.c similarity index 100% rename from sysdeps/m68k/fpu/s_rintl.c rename to sysdeps/m68k/m680x0/fpu/s_rintl.c diff --git a/sysdeps/m68k/fpu/s_scalbln.c b/sysdeps/m68k/m680x0/fpu/s_scalbln.c similarity index 100% rename from sysdeps/m68k/fpu/s_scalbln.c rename to sysdeps/m68k/m680x0/fpu/s_scalbln.c diff --git a/sysdeps/m68k/fpu/s_scalblnf.c b/sysdeps/m68k/m680x0/fpu/s_scalblnf.c similarity index 100% rename from sysdeps/m68k/fpu/s_scalblnf.c rename to sysdeps/m68k/m680x0/fpu/s_scalblnf.c diff --git a/sysdeps/m68k/fpu/s_scalblnl.c b/sysdeps/m68k/m680x0/fpu/s_scalblnl.c similarity index 100% rename from sysdeps/m68k/fpu/s_scalblnl.c rename to sysdeps/m68k/m680x0/fpu/s_scalblnl.c diff --git a/sysdeps/m68k/fpu/s_scalbn.c b/sysdeps/m68k/m680x0/fpu/s_scalbn.c similarity index 100% rename from sysdeps/m68k/fpu/s_scalbn.c rename to sysdeps/m68k/m680x0/fpu/s_scalbn.c diff --git a/sysdeps/m68k/fpu/s_scalbnf.c b/sysdeps/m68k/m680x0/fpu/s_scalbnf.c similarity index 100% rename from sysdeps/m68k/fpu/s_scalbnf.c rename to sysdeps/m68k/m680x0/fpu/s_scalbnf.c diff --git a/sysdeps/m68k/fpu/s_scalbnl.c b/sysdeps/m68k/m680x0/fpu/s_scalbnl.c similarity index 100% rename from sysdeps/m68k/fpu/s_scalbnl.c rename to sysdeps/m68k/m680x0/fpu/s_scalbnl.c diff --git a/sysdeps/m68k/fpu/s_significand.c b/sysdeps/m68k/m680x0/fpu/s_significand.c similarity index 100% rename from sysdeps/m68k/fpu/s_significand.c rename to sysdeps/m68k/m680x0/fpu/s_significand.c diff --git a/sysdeps/m68k/fpu/s_significandf.c b/sysdeps/m68k/m680x0/fpu/s_significandf.c similarity index 100% rename from sysdeps/m68k/fpu/s_significandf.c rename to sysdeps/m68k/m680x0/fpu/s_significandf.c diff --git a/sysdeps/m68k/fpu/s_significandl.c b/sysdeps/m68k/m680x0/fpu/s_significandl.c similarity index 100% rename from sysdeps/m68k/fpu/s_significandl.c rename to sysdeps/m68k/m680x0/fpu/s_significandl.c diff --git a/sysdeps/m68k/fpu/s_sin.c b/sysdeps/m68k/m680x0/fpu/s_sin.c similarity index 100% rename from sysdeps/m68k/fpu/s_sin.c rename to sysdeps/m68k/m680x0/fpu/s_sin.c diff --git a/sysdeps/m68k/fpu/s_sincos.c b/sysdeps/m68k/m680x0/fpu/s_sincos.c similarity index 100% rename from sysdeps/m68k/fpu/s_sincos.c rename to sysdeps/m68k/m680x0/fpu/s_sincos.c diff --git a/sysdeps/m68k/fpu/s_sincosf.c b/sysdeps/m68k/m680x0/fpu/s_sincosf.c similarity index 100% rename from sysdeps/m68k/fpu/s_sincosf.c rename to sysdeps/m68k/m680x0/fpu/s_sincosf.c diff --git a/sysdeps/m68k/fpu/s_sincosl.c b/sysdeps/m68k/m680x0/fpu/s_sincosl.c similarity index 100% rename from sysdeps/m68k/fpu/s_sincosl.c rename to sysdeps/m68k/m680x0/fpu/s_sincosl.c diff --git a/sysdeps/m68k/fpu/s_sinf.c b/sysdeps/m68k/m680x0/fpu/s_sinf.c similarity index 100% rename from sysdeps/m68k/fpu/s_sinf.c rename to sysdeps/m68k/m680x0/fpu/s_sinf.c diff --git a/sysdeps/m68k/fpu/s_sinl.c b/sysdeps/m68k/m680x0/fpu/s_sinl.c similarity index 100% rename from sysdeps/m68k/fpu/s_sinl.c rename to sysdeps/m68k/m680x0/fpu/s_sinl.c diff --git a/sysdeps/m68k/fpu/s_tan.c b/sysdeps/m68k/m680x0/fpu/s_tan.c similarity index 100% rename from sysdeps/m68k/fpu/s_tan.c rename to sysdeps/m68k/m680x0/fpu/s_tan.c diff --git a/sysdeps/m68k/fpu/s_tanf.c b/sysdeps/m68k/m680x0/fpu/s_tanf.c similarity index 100% rename from sysdeps/m68k/fpu/s_tanf.c rename to sysdeps/m68k/m680x0/fpu/s_tanf.c diff --git a/sysdeps/m68k/fpu/s_tanh.c b/sysdeps/m68k/m680x0/fpu/s_tanh.c similarity index 100% rename from sysdeps/m68k/fpu/s_tanh.c rename to sysdeps/m68k/m680x0/fpu/s_tanh.c diff --git a/sysdeps/m68k/fpu/s_tanhf.c b/sysdeps/m68k/m680x0/fpu/s_tanhf.c similarity index 100% rename from sysdeps/m68k/fpu/s_tanhf.c rename to sysdeps/m68k/m680x0/fpu/s_tanhf.c diff --git a/sysdeps/m68k/fpu/s_tanhl.c b/sysdeps/m68k/m680x0/fpu/s_tanhl.c similarity index 100% rename from sysdeps/m68k/fpu/s_tanhl.c rename to sysdeps/m68k/m680x0/fpu/s_tanhl.c diff --git a/sysdeps/m68k/fpu/s_tanl.c b/sysdeps/m68k/m680x0/fpu/s_tanl.c similarity index 100% rename from sysdeps/m68k/fpu/s_tanl.c rename to sysdeps/m68k/m680x0/fpu/s_tanl.c diff --git a/sysdeps/m68k/fpu/s_trunc.c b/sysdeps/m68k/m680x0/fpu/s_trunc.c similarity index 100% rename from sysdeps/m68k/fpu/s_trunc.c rename to sysdeps/m68k/m680x0/fpu/s_trunc.c diff --git a/sysdeps/m68k/fpu/s_truncf.c b/sysdeps/m68k/m680x0/fpu/s_truncf.c similarity index 100% rename from sysdeps/m68k/fpu/s_truncf.c rename to sysdeps/m68k/m680x0/fpu/s_truncf.c diff --git a/sysdeps/m68k/fpu/s_truncl.c b/sysdeps/m68k/m680x0/fpu/s_truncl.c similarity index 100% rename from sysdeps/m68k/fpu/s_truncl.c rename to sysdeps/m68k/m680x0/fpu/s_truncl.c diff --git a/sysdeps/m68k/fpu/sincos32.c b/sysdeps/m68k/m680x0/fpu/sincos32.c similarity index 100% rename from sysdeps/m68k/fpu/sincos32.c rename to sysdeps/m68k/m680x0/fpu/sincos32.c diff --git a/sysdeps/m68k/fpu/slowexp.c b/sysdeps/m68k/m680x0/fpu/slowexp.c similarity index 100% rename from sysdeps/m68k/fpu/slowexp.c rename to sysdeps/m68k/m680x0/fpu/slowexp.c diff --git a/sysdeps/m68k/fpu/slowpow.c b/sysdeps/m68k/m680x0/fpu/slowpow.c similarity index 100% rename from sysdeps/m68k/fpu/slowpow.c rename to sysdeps/m68k/m680x0/fpu/slowpow.c diff --git a/sysdeps/m68k/fpu/switch/68881-sw.h b/sysdeps/m68k/m680x0/fpu/switch/68881-sw.h similarity index 100% rename from sysdeps/m68k/fpu/switch/68881-sw.h rename to sysdeps/m68k/m680x0/fpu/switch/68881-sw.h diff --git a/sysdeps/m68k/fpu/switch/Makefile b/sysdeps/m68k/m680x0/fpu/switch/Makefile similarity index 100% rename from sysdeps/m68k/fpu/switch/Makefile rename to sysdeps/m68k/m680x0/fpu/switch/Makefile diff --git a/sysdeps/m68k/fpu/switch/bits/mathinline.h b/sysdeps/m68k/m680x0/fpu/switch/bits/mathinline.h similarity index 100% rename from sysdeps/m68k/fpu/switch/bits/mathinline.h rename to sysdeps/m68k/m680x0/fpu/switch/bits/mathinline.h diff --git a/sysdeps/m68k/fpu/switch/switch.c b/sysdeps/m68k/m680x0/fpu/switch/switch.c similarity index 100% rename from sysdeps/m68k/fpu/switch/switch.c rename to sysdeps/m68k/m680x0/fpu/switch/switch.c diff --git a/sysdeps/m68k/fpu/t_exp.c b/sysdeps/m68k/m680x0/fpu/t_exp.c similarity index 100% rename from sysdeps/m68k/fpu/t_exp.c rename to sysdeps/m68k/m680x0/fpu/t_exp.c diff --git a/sysdeps/m68k/lshift.S b/sysdeps/m68k/m680x0/lshift.S similarity index 100% rename from sysdeps/m68k/lshift.S rename to sysdeps/m68k/m680x0/lshift.S diff --git a/sysdeps/m68k/m68020/Makefile b/sysdeps/m68k/m680x0/m68020/Makefile similarity index 100% rename from sysdeps/m68k/m68020/Makefile rename to sysdeps/m68k/m680x0/m68020/Makefile diff --git a/sysdeps/m68k/m68020/addmul_1.S b/sysdeps/m68k/m680x0/m68020/addmul_1.S similarity index 100% rename from sysdeps/m68k/m68020/addmul_1.S rename to sysdeps/m68k/m680x0/m68020/addmul_1.S diff --git a/sysdeps/m68k/m68020/bits/atomic.h b/sysdeps/m68k/m680x0/m68020/bits/atomic.h similarity index 100% rename from sysdeps/m68k/m68020/bits/atomic.h rename to sysdeps/m68k/m680x0/m68020/bits/atomic.h diff --git a/sysdeps/m68k/m68020/bits/string.h b/sysdeps/m68k/m680x0/m68020/bits/string.h similarity index 100% rename from sysdeps/m68k/m68020/bits/string.h rename to sysdeps/m68k/m680x0/m68020/bits/string.h diff --git a/sysdeps/m68k/m68020/mul_1.S b/sysdeps/m68k/m680x0/m68020/mul_1.S similarity index 100% rename from sysdeps/m68k/m68020/mul_1.S rename to sysdeps/m68k/m680x0/m68020/mul_1.S diff --git a/sysdeps/m68k/m68020/submul_1.S b/sysdeps/m68k/m680x0/m68020/submul_1.S similarity index 100% rename from sysdeps/m68k/m68020/submul_1.S rename to sysdeps/m68k/m680x0/m68020/submul_1.S diff --git a/sysdeps/m68k/m68020/wordcopy.S b/sysdeps/m68k/m680x0/m68020/wordcopy.S similarity index 100% rename from sysdeps/m68k/m68020/wordcopy.S rename to sysdeps/m68k/m680x0/m68020/wordcopy.S diff --git a/sysdeps/m68k/printf_fphex.c b/sysdeps/m68k/m680x0/printf_fphex.c similarity index 100% rename from sysdeps/m68k/printf_fphex.c rename to sysdeps/m68k/m680x0/printf_fphex.c diff --git a/sysdeps/m68k/rshift.S b/sysdeps/m68k/m680x0/rshift.S similarity index 100% rename from sysdeps/m68k/rshift.S rename to sysdeps/m68k/m680x0/rshift.S diff --git a/sysdeps/m68k/s_isinfl.c b/sysdeps/m68k/m680x0/s_isinfl.c similarity index 100% rename from sysdeps/m68k/s_isinfl.c rename to sysdeps/m68k/m680x0/s_isinfl.c diff --git a/sysdeps/m68k/s_isnanl.c b/sysdeps/m68k/m680x0/s_isnanl.c similarity index 100% rename from sysdeps/m68k/s_isnanl.c rename to sysdeps/m68k/m680x0/s_isnanl.c diff --git a/sysdeps/m68k/strtold_l.c b/sysdeps/m68k/m680x0/strtold_l.c similarity index 100% rename from sysdeps/m68k/strtold_l.c rename to sysdeps/m68k/m680x0/strtold_l.c diff --git a/sysdeps/m68k/sub_n.S b/sysdeps/m68k/m680x0/sub_n.S similarity index 100% rename from sysdeps/m68k/sub_n.S rename to sysdeps/m68k/m680x0/sub_n.S diff --git a/sysdeps/m68k/memchr.S b/sysdeps/m68k/memchr.S index fab65a9aea5..77e86a32bd6 100644 --- a/sysdeps/m68k/memchr.S +++ b/sysdeps/m68k/memchr.S @@ -26,7 +26,13 @@ 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) diff --git a/sysdeps/m68k/preconfigure b/sysdeps/m68k/preconfigure index 35dcea4be19..94fc1aabc2a 100644 --- a/sysdeps/m68k/preconfigure +++ b/sysdeps/m68k/preconfigure @@ -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 diff --git a/sysdeps/m68k/rawmemchr.S b/sysdeps/m68k/rawmemchr.S index acd8f76e444..97735f669df 100644 --- a/sysdeps/m68k/rawmemchr.S +++ b/sysdeps/m68k/rawmemchr.S @@ -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) diff --git a/sysdeps/m68k/setjmp.c b/sysdeps/m68k/setjmp.c index 8a6c3f9a0b5..e2ba0e700d3 100644 --- a/sysdeps/m68k/setjmp.c +++ b/sysdeps/m68k/setjmp.c @@ -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 diff --git a/sysdeps/m68k/strchr.S b/sysdeps/m68k/strchr.S index 04626ffd64b..2e1e3249f6c 100644 --- a/sysdeps/m68k/strchr.S +++ b/sysdeps/m68k/strchr.S @@ -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) diff --git a/sysdeps/m68k/strchrnul.S b/sysdeps/m68k/strchrnul.S index 3fee2b236c5..9d13ec16a0d 100644 --- a/sysdeps/m68k/strchrnul.S +++ b/sysdeps/m68k/strchrnul.S @@ -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) diff --git a/sysdeps/m68k/sysdep.h b/sysdeps/m68k/sysdep.h index f492ff617c8..3698628c30a 100644 --- a/sysdeps/m68k/sysdep.h +++ b/sysdeps/m68k/sysdep.h @@ -97,4 +97,26 @@ # 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 index 00000000000..5254ab3b123 --- /dev/null +++ b/sysdeps/m68k/tst-audit.h @@ -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 index 00000000000..c838af1fd5b --- /dev/null +++ b/sysdeps/m68k/wcpcpy.c @@ -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 , 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 + +/* 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 index 00000000000..525c1d5baab --- /dev/null +++ b/sysdeps/m68k/wcpcpy_chk.c @@ -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 , 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 + +/* 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 index 00000000000..8ad0c965637 --- /dev/null +++ b/sysdeps/unix/sysv/linux/m68k/bits/sigcontext.h @@ -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 directly; include 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 index 00000000000..1ded1c2a4af --- /dev/null +++ b/sysdeps/unix/sysv/linux/m68k/bits/siginfo.h @@ -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 instead" +#endif + +#include + +#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 . */ + 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. */ diff --git a/sysdeps/unix/sysv/linux/m68k/clone.S b/sysdeps/unix/sysv/linux/m68k/clone.S index 6baf723d9b1..a179f8e0fab 100644 --- a/sysdeps/unix/sysv/linux/m68k/clone.S +++ b/sysdeps/unix/sysv/linux/m68k/clone.S @@ -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 index 00000000000..94ccc508cc3 --- /dev/null +++ b/sysdeps/unix/sysv/linux/m68k/configure @@ -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 index 00000000000..285b81f4754 --- /dev/null +++ b/sysdeps/unix/sysv/linux/m68k/configure.in @@ -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 index 00000000000..913f051ff4c --- /dev/null +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/syscalls.list @@ -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 diff --git a/sysdeps/unix/sysv/linux/m68k/register-dump.h b/sysdeps/unix/sysv/linux/m68k/register-dump.h index a7ac3ca01c5..391902f494d 100644 --- a/sysdeps/unix/sysv/linux/m68k/register-dump.h +++ b/sysdeps/unix/sysv/linux/m68k/register-dump.h @@ -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: "); diff --git a/sysdeps/unix/sysv/linux/m68k/socket.S b/sysdeps/unix/sysv/linux/m68k/socket.S index 1d10f33e172..2690f182a82 100644 --- a/sysdeps/unix/sysv/linux/m68k/socket.S +++ b/sysdeps/unix/sysv/linux/m68k/socket.S @@ -42,7 +42,7 @@ .globl __socket ENTRY (__socket) #if defined NEED_CANCELLATION && defined CENABLE - SINGLE_THREAD_P + SINGLE_THREAD_P (%a0) jne 1f #endif diff --git a/sysdeps/unix/sysv/linux/m68k/sys/reg.h b/sysdeps/unix/sysv/linux/m68k/sys/reg.h index 418f8323f19..230fd2d05e4 100644 --- a/sysdeps/unix/sysv/linux/m68k/sys/reg.h +++ b/sysdeps/unix/sysv/linux/m68k/sys/reg.h @@ -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, diff --git a/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h b/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h index 3c441dc5ce4..776466b75db 100644 --- a/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h +++ b/sysdeps/unix/sysv/linux/m68k/sys/ucontext.h @@ -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 */ diff --git a/sysdeps/unix/sysv/linux/m68k/syscalls.list b/sysdeps/unix/sysv/linux/m68k/syscalls.list index 98d30667bd3..5367ef0d0b6 100644 --- a/sysdeps/unix/sysv/linux/m68k/syscalls.list +++ b/sysdeps/unix/sysv/linux/m68k/syscalls.list @@ -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 diff --git a/sysdeps/unix/sysv/linux/m68k/sysdep.h b/sysdeps/unix/sysv/linux/m68k/sysdep.h index 091dfc9c7d3..be37c894a1b 100644 --- a/sysdeps/unix/sysv/linux/m68k/sysdep.h +++ b/sysdeps/unix/sysv/linux/m68k/sysdep.h @@ -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 #include @@ -98,7 +101,7 @@ # 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