summaryrefslogtreecommitdiffstats
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog329
-rw-r--r--gcc/Makefile.in74
-rw-r--r--gcc/config.gcc52
-rw-r--r--gcc/config/alpha/qrnnd.asm163
-rw-r--r--gcc/config/alpha/t-alpha2
-rw-r--r--gcc/config/alpha/t-ieee2
-rw-r--r--gcc/config/alpha/t-vms4
-rw-r--r--gcc/config/alpha/vms-gcc_shell_handler.c124
-rw-r--r--gcc/config/arm/bpabi.c56
-rw-r--r--gcc/config/arm/fp16.c145
-rw-r--r--gcc/config/arm/linux-atomic-64bit.c166
-rw-r--r--gcc/config/arm/linux-atomic.c279
-rw-r--r--gcc/config/arm/t-arm-elf8
-rw-r--r--gcc/config/arm/t-bpabi24
-rw-r--r--gcc/config/arm/t-linux28
-rw-r--r--gcc/config/arm/t-linux-eabi6
-rw-r--r--gcc/config/arm/t-netbsd24
-rw-r--r--gcc/config/arm/t-strongarm-elf8
-rw-r--r--gcc/config/arm/t-symbian2
-rw-r--r--gcc/config/arm/t-wince-pe4
-rw-r--r--gcc/config/arm/unaligned-funcs.c57
-rw-r--r--gcc/config/avr/t-avr11
-rw-r--r--gcc/config/bfin/t-bfin-elf2
-rw-r--r--gcc/config/bfin/t-bfin-linux2
-rw-r--r--gcc/config/bfin/t-bfin-uclinux2
-rw-r--r--gcc/config/c6x/eqd.c47
-rw-r--r--gcc/config/c6x/eqf.c47
-rw-r--r--gcc/config/c6x/ged.c47
-rw-r--r--gcc/config/c6x/gef.c47
-rw-r--r--gcc/config/c6x/gtd.c47
-rw-r--r--gcc/config/c6x/gtf.c47
-rw-r--r--gcc/config/c6x/led.c47
-rw-r--r--gcc/config/c6x/lef.c47
-rw-r--r--gcc/config/c6x/ltd.c47
-rw-r--r--gcc/config/c6x/ltf.c47
-rw-r--r--gcc/config/c6x/t-c6x-elf15
-rw-r--r--gcc/config/c6x/t-c6x-uclinux2
-rw-r--r--gcc/config/cris/arit.c304
-rw-r--r--gcc/config/cris/cris.h6
-rw-r--r--gcc/config/cris/cris_abi_symbol.c45
-rw-r--r--gcc/config/cris/mulsi3.asm255
-rw-r--r--gcc/config/cris/t-cris12
-rw-r--r--gcc/config/cris/t-elfmulti3
-rw-r--r--gcc/config/cris/t-linux2
-rw-r--r--gcc/config/darwin-64.c72
-rw-r--r--gcc/config/divmod.c73
-rw-r--r--gcc/config/floatunsidf.c15
-rw-r--r--gcc/config/floatunsisf.c18
-rw-r--r--gcc/config/floatunsitf.c15
-rw-r--r--gcc/config/floatunsixf.c15
-rw-r--r--gcc/config/fr30/t-fr3034
-rw-r--r--gcc/config/frv/cmovd.c51
-rw-r--r--gcc/config/frv/cmovh.c47
-rw-r--r--gcc/config/frv/cmovw.c51
-rw-r--r--gcc/config/frv/modi.c4
-rw-r--r--gcc/config/frv/t-frv35
-rw-r--r--gcc/config/frv/t-linux2
-rw-r--r--gcc/config/frv/uitod.c4
-rw-r--r--gcc/config/frv/uitof.c4
-rw-r--r--gcc/config/frv/ulltod.c4
-rw-r--r--gcc/config/frv/ulltof.c4
-rw-r--r--gcc/config/frv/umodi.c4
-rw-r--r--gcc/config/h8300/clzhi2.c35
-rw-r--r--gcc/config/h8300/ctzhi2.c35
-rw-r--r--gcc/config/h8300/fixunssfsi.c41
-rw-r--r--gcc/config/h8300/parityhi2.c36
-rw-r--r--gcc/config/h8300/popcounthi2.c36
-rw-r--r--gcc/config/h8300/t-h830013
-rw-r--r--gcc/config/i386/gthr-win32.c260
-rw-r--r--gcc/config/i386/t-cygming5
-rw-r--r--gcc/config/i386/t-cygwin24
-rw-r--r--gcc/config/i386/t-darwin3
-rw-r--r--gcc/config/i386/t-darwin646
-rw-r--r--gcc/config/i386/t-gthr-win322
-rw-r--r--gcc/config/i386/t-linux643
-rw-r--r--gcc/config/i386/t-mingw-w323
-rw-r--r--gcc/config/i386/t-mingw-w643
-rw-r--r--gcc/config/i386/t-nto1
-rw-r--r--gcc/config/i386/t-openbsd2
-rw-r--r--gcc/config/ia64/quadlib.c78
-rw-r--r--gcc/config/ia64/t-hpux10
-rw-r--r--gcc/config/ia64/t-ia647
-rw-r--r--gcc/config/iq2000/lib2extra-funcs.c40
-rw-r--r--gcc/config/iq2000/t-iq200033
-rw-r--r--gcc/config/m32c/m32c-lib2-trapv.c43
-rw-r--r--gcc/config/m32c/m32c-lib2.c134
-rw-r--r--gcc/config/m32c/t-m32c2
-rw-r--r--gcc/config/m32r/t-linux5
-rw-r--r--gcc/config/m32r/t-m32r8
-rw-r--r--gcc/config/m68k/fpgnulib.c595
-rw-r--r--gcc/config/m68k/t-floatlib25
-rw-r--r--gcc/config/m68k/t-mlibs3
-rw-r--r--gcc/config/mcore/t-mcore10
-rw-r--r--gcc/config/memcmp.c16
-rw-r--r--gcc/config/memcpy.c12
-rw-r--r--gcc/config/memmove.c20
-rw-r--r--gcc/config/memset.c11
-rw-r--r--gcc/config/mep/mep-lib2.c139
-rw-r--r--gcc/config/mep/mep-tramp.c103
-rw-r--r--gcc/config/mep/t-mep6
-rw-r--r--gcc/config/mips/t-elf7
-rw-r--r--gcc/config/mips/t-isa32647
-rw-r--r--gcc/config/mips/t-mips2
-rw-r--r--gcc/config/mips/t-r39007
-rw-r--r--gcc/config/mips/t-sde4
-rw-r--r--gcc/config/mips/t-sr71k8
-rw-r--r--gcc/config/mips/t-vr11
-rw-r--r--gcc/config/mips/vr4120-div.S74
-rw-r--r--gcc/config/mmix/t-mmix4
-rw-r--r--gcc/config/mn10300/t-mn103003
-rw-r--r--gcc/config/pa/fptr.c131
-rw-r--r--gcc/config/pa/lib2funcs.asm74
-rw-r--r--gcc/config/pa/linux-atomic.c305
-rw-r--r--gcc/config/pa/quadlib.c245
-rw-r--r--gcc/config/pa/t-dce-thr3
-rw-r--r--gcc/config/pa/t-linux27
-rw-r--r--gcc/config/pa/t-linux6422
-rw-r--r--gcc/config/pa/t-pa-hpux7
-rw-r--r--gcc/config/pa/t-pa-hpux102
-rw-r--r--gcc/config/pa/t-pa-hpux112
-rw-r--r--gcc/config/pa/t-pa6421
-rw-r--r--gcc/config/pdp11/t-pdp115
-rw-r--r--gcc/config/picochip/libgccExtras/adddi3.asm194
-rw-r--r--gcc/config/picochip/libgccExtras/ashlsi3.asm193
-rw-r--r--gcc/config/picochip/libgccExtras/ashlsi3.c82
-rw-r--r--gcc/config/picochip/libgccExtras/ashrsi3.asm202
-rw-r--r--gcc/config/picochip/libgccExtras/ashrsi3.c113
-rw-r--r--gcc/config/picochip/libgccExtras/clzsi2.asm189
-rw-r--r--gcc/config/picochip/libgccExtras/cmpsi2.asm212
-rw-r--r--gcc/config/picochip/libgccExtras/divmod15.asm261
-rw-r--r--gcc/config/picochip/libgccExtras/divmodhi4.asm246
-rw-r--r--gcc/config/picochip/libgccExtras/divmodsi4.asm233
-rw-r--r--gcc/config/picochip/libgccExtras/longjmp.asm182
-rw-r--r--gcc/config/picochip/libgccExtras/lshrsi3.asm190
-rw-r--r--gcc/config/picochip/libgccExtras/lshrsi3.c76
-rw-r--r--gcc/config/picochip/libgccExtras/parityhi2.asm179
-rw-r--r--gcc/config/picochip/libgccExtras/popcounthi2.asm201
-rw-r--r--gcc/config/picochip/libgccExtras/setjmp.asm182
-rw-r--r--gcc/config/picochip/libgccExtras/subdi3.asm191
-rw-r--r--gcc/config/picochip/libgccExtras/ucmpsi2.asm209
-rw-r--r--gcc/config/picochip/libgccExtras/udivmodhi4.asm238
-rw-r--r--gcc/config/picochip/libgccExtras/udivmodsi4.asm318
-rw-r--r--gcc/config/picochip/t-picochip31
-rw-r--r--gcc/config/rs6000/crtresfpr.asm81
-rw-r--r--gcc/config/rs6000/crtresgpr.asm81
-rw-r--r--gcc/config/rs6000/crtresxfpr.asm126
-rw-r--r--gcc/config/rs6000/crtresxgpr.asm124
-rw-r--r--gcc/config/rs6000/crtsavfpr.asm81
-rw-r--r--gcc/config/rs6000/crtsavgpr.asm81
-rw-r--r--gcc/config/rs6000/darwin-asm.h51
-rw-r--r--gcc/config/rs6000/darwin-fpsave.asm92
-rw-r--r--gcc/config/rs6000/darwin-gpsave.asm118
-rw-r--r--gcc/config/rs6000/darwin-tramp.asm125
-rw-r--r--gcc/config/rs6000/darwin-vecsave.asm155
-rw-r--r--gcc/config/rs6000/darwin-world.asm259
-rw-r--r--gcc/config/rs6000/e500crtres32gpr.asm73
-rw-r--r--gcc/config/rs6000/e500crtres64gpr.asm73
-rw-r--r--gcc/config/rs6000/e500crtres64gprctr.asm90
-rw-r--r--gcc/config/rs6000/e500crtrest32gpr.asm75
-rw-r--r--gcc/config/rs6000/e500crtrest64gpr.asm74
-rw-r--r--gcc/config/rs6000/e500crtresx32gpr.asm75
-rw-r--r--gcc/config/rs6000/e500crtresx64gpr.asm75
-rw-r--r--gcc/config/rs6000/e500crtsav32gpr.asm73
-rw-r--r--gcc/config/rs6000/e500crtsav64gpr.asm72
-rw-r--r--gcc/config/rs6000/e500crtsav64gprctr.asm91
-rw-r--r--gcc/config/rs6000/e500crtsavg32gpr.asm73
-rw-r--r--gcc/config/rs6000/e500crtsavg64gpr.asm73
-rw-r--r--gcc/config/rs6000/e500crtsavg64gprctr.asm90
-rw-r--r--gcc/config/rs6000/eabi.asm289
-rw-r--r--gcc/config/rs6000/t-aix433
-rw-r--r--gcc/config/rs6000/t-aix523
-rw-r--r--gcc/config/rs6000/t-darwin39
-rw-r--r--gcc/config/rs6000/t-darwin649
-rw-r--r--gcc/config/rs6000/t-fprules5
-rw-r--r--gcc/config/rs6000/t-linux642
-rw-r--r--gcc/config/rs6000/t-lynx8
-rw-r--r--gcc/config/rs6000/t-netbsd48
-rw-r--r--gcc/config/rs6000/t-ppccomm11
-rw-r--r--gcc/config/rs6000/t-spe3
-rw-r--r--gcc/config/rs6000/t-vxworks7
-rw-r--r--gcc/config/rs6000/tramp.asm107
-rw-r--r--gcc/config/rx/t-rx3
-rw-r--r--gcc/config/sh/linux-atomic.asm223
-rw-r--r--gcc/config/sh/t-linux2
-rw-r--r--gcc/config/sh/t-netbsd21
-rw-r--r--gcc/config/sh/t-sh5
-rw-r--r--gcc/config/sparc/t-elf3
-rw-r--r--gcc/config/sparc/t-leon3
-rw-r--r--gcc/config/sparc/t-leon33
-rw-r--r--gcc/config/sparc/t-linux643
-rw-r--r--gcc/config/sparc/t-netbsd645
-rw-r--r--gcc/config/spu/divmodti4.c188
-rw-r--r--gcc/config/spu/divv2df3.c195
-rw-r--r--gcc/config/spu/float_disf.c31
-rw-r--r--gcc/config/spu/float_unsdidf.c54
-rw-r--r--gcc/config/spu/float_unsdisf.c31
-rw-r--r--gcc/config/spu/float_unssidf.c45
-rw-r--r--gcc/config/spu/mfc_multi_tag_release.c72
-rw-r--r--gcc/config/spu/mfc_multi_tag_reserve.c84
-rw-r--r--gcc/config/spu/mfc_tag_release.c59
-rw-r--r--gcc/config/spu/mfc_tag_reserve.c51
-rw-r--r--gcc/config/spu/mfc_tag_table.c39
-rw-r--r--gcc/config/spu/multi3.c119
-rw-r--r--gcc/config/spu/t-spu-elf27
-rw-r--r--gcc/config/stormy16/stormy16-lib2-ashlsi3.c2
-rw-r--r--gcc/config/stormy16/stormy16-lib2-ashrsi3.c2
-rw-r--r--gcc/config/stormy16/stormy16-lib2-clzhi2.c2
-rw-r--r--gcc/config/stormy16/stormy16-lib2-cmpsi2.c2
-rw-r--r--gcc/config/stormy16/stormy16-lib2-ctzhi2.c2
-rw-r--r--gcc/config/stormy16/stormy16-lib2-divsi3.c2
-rw-r--r--gcc/config/stormy16/stormy16-lib2-ffshi2.c2
-rw-r--r--gcc/config/stormy16/stormy16-lib2-lshrsi3.c2
-rw-r--r--gcc/config/stormy16/stormy16-lib2-modsi3.c2
-rw-r--r--gcc/config/stormy16/stormy16-lib2-parityhi2.c2
-rw-r--r--gcc/config/stormy16/stormy16-lib2-popcounthi2.c2
-rw-r--r--gcc/config/stormy16/stormy16-lib2-ucmpsi2.c2
-rw-r--r--gcc/config/stormy16/stormy16-lib2-udivmodsi4.c2
-rw-r--r--gcc/config/stormy16/stormy16-lib2-udivsi3.c2
-rw-r--r--gcc/config/stormy16/stormy16-lib2-umodsi3.c2
-rw-r--r--gcc/config/stormy16/stormy16-lib2.c357
-rw-r--r--gcc/config/stormy16/t-stormy1639
-rw-r--r--gcc/config/t-darwin6
-rw-r--r--gcc/config/t-freebsd2
-rw-r--r--gcc/config/t-freebsd-thread2
-rw-r--r--gcc/config/t-libgcc-pic2
-rw-r--r--gcc/config/t-libunwind1
-rw-r--r--gcc/config/t-linux21
-rw-r--r--gcc/config/t-lynx6
-rw-r--r--gcc/config/t-openbsd-thread3
-rw-r--r--gcc/config/t-rtems5
-rw-r--r--gcc/config/t-sol23
-rw-r--r--gcc/config/t-svr47
-rw-r--r--gcc/config/t-vxworks22
-rw-r--r--gcc/config/udivmod.c37
-rw-r--r--gcc/config/udivmodsi4.c47
-rw-r--r--gcc/config/v850/t-v8501
-rw-r--r--gcc/config/vxlib-tls.c362
-rw-r--r--gcc/config/vxlib.c95
-rw-r--r--gcc/config/xtensa/lib2funcs.S186
-rw-r--r--gcc/config/xtensa/t-elf1
-rw-r--r--gcc/config/xtensa/t-xtensa2
-rw-r--r--gcc/gbl-ctors.h87
-rw-r--r--gcc/gthr-posix.c264
-rw-r--r--gcc/libgcc2.c2252
-rw-r--r--gcc/libgcc2.h530
-rw-r--r--gcc/longlong.h1660
-rw-r--r--gcc/po/ChangeLog5
-rw-r--r--gcc/po/EXCLUDES5
248 files changed, 359 insertions, 19703 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 071cce6c29c..ec7a91205ba 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,334 @@
2011-11-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+ * Makefile.in (LIBGCC2_DEBUG_CFLAGS LIBGCC2_CFLAGS)
+ (LIBGCC2_INCLUDES, TARGET_LIBGCC2_CFLAGS, LIB2FUNCS_EXTRA)
+ (LIB2FUNCS_STATIC_EXTRA, LIB2FUNCS_EXCLUDE, T, T_TARGET)
+ (INCLUDES_FOR_TARGET): Remove.
+ (LIBGCC2_CFLAGS): Don't export.
+ (LIB2FUNCS_ST, LIB2_DIVMOD_FUNCS, LIB2ADD, LIB2ADD_ST, srcdirify):
+ Remove.
+ (libgcc-support): Remove $(LIB2ADD), $(LIB2ADD_ST) dependencies.
+ (libgcc.mvars): Likewise.
+ Don't emit LIB2FUNCS_ST, LIB2FUNCS_EXCLUDE, LIB2ADD, LIB2ADD_ST,
+ LIB2_SIDITI_CONV_FUNCS, LIB2_DIVMOD_FUNCS, LIBGCC2_CFLAGS,
+ TARGET_LIBGCC2_CFLAGS.
+ Emit GTHREAD_FLAGS.
+ * libgcc2.c, libgcc2.h, gbl-ctors.h, longlong.h: Move to ../libgcc.
+ * config/darwin-64.c: Move to ../libgcc/config.
+ * config/divmod.c, config/floatunsidf.c, config/floatunsisf.c,
+ config/floatunsitf.c, config/floatunsixf.c, config/udivmod.c,
+ config/udivmodsi4.c: Move to ../libgcc/config.
+ * config/gthr-posix.c: Move to ../libgcc/config/alpha.
+ * config/memcmp.c, config/memcpy.c, config/memmove.c,
+ config/memset.c: Move to ../libgcc/config.
+ * config/t-darwin (TARGET_LIBGCC2_CFLAGS): Remove.
+ * config/t-freebsd: Remove.
+ * config/t-freebsd-thread: Move to ../libgcc/config.
+ * config/t-libgcc-pic: Move to ../libgcc/config.
+ * config/t-libunwind (TARGET_LIBGCC2_CFLAGS): Remove.
+ * config/t-linux: Remove.
+ * config/t-lynx (TARGET_LIBGCC2_CFLAGS, LIBGCC, INSTALL_LIBGCC):
+ Remove
+ * config/t-openbsd-thread: Move to ../libgcc/config.
+ * config/t-rtems (LIBGCC2_INCLUDES): Remove.
+ * config/t-sol2 (TARGET_LIBGCC2_CFLAGS): Remove.
+ * config/t-svr4: Remove.
+ * config/t-vxworks (LIBGCC, INSTALL_LIBGCC, TARGET_LIBGCC2_CFLAGS)
+ (LIBGCC2_DEBUG_CFLAGS, LIB2FUNCS_EXTRA, LIBGCC2_INCLUDES): Remove.
+ * config/vxlib.c, config/vxlib-tls.c: Move to ../libgcc/config.
+ * config/alpha/qrnnd.asm: Move to ../libgcc/config/alpha/qrnnd.S.
+ * config/alpha/t-alpha, config/alpha/t-ieee: Remove.
+ * config/alpha/t-vms (LIB2FUNCS_EXTRA, LIBGCC, INSTALL_LIBGCC):
+ Remove.
+ * config/alpha/vms-gcc_shell_handler.c: Move to ../libgcc/config/alpha.
+ * config/arm/bpabi.c, config/arm/unaligned-funcs.c,
+ config/arm/fp16.c, config/arm/linux-atomic.c,
+ config/arm/linux-atomic-64bit.c: Move to ../libgcc/config/arm.
+ * config/arm/t-arm-elf (LIBGCC, INSTALL_LIBGCC)
+ (TARGET_LIBGCC2_CFLAGS): Remove.
+ * config/arm/t-bpabi, config/arm/t-linux: Remove.
+ * config/arm/t-linux-eabi (TARGET_LIBGCC2_CFLAGS)
+ (LIB2FUNCS_STATIC_EXTRA): Remove.
+ * config/arm/t-netbsd: Remove.
+ * config/arm/t-strongarm-elf (LIBGCC, INSTALL_LIBGCC)
+ (TARGET_LIBGCC2_CFLAGS): Remove.
+ * config/arm/t-symbian (LIB2FUNCS_STATIC_EXTRA): Remove.
+ * config/arm/t-wince-pe (LIBGCC, INSTALL_LIBGCC)
+ (TARGET_LIBGCC2_CFLAGS): Remove.
+ * config/avr/t-avr (LIB2FUNCS_EXCLUDE, TARGET_LIBGCC2_CFLAGS)
+ (LIBGCC, INSTALL_LIBGCC): Remove.
+ * config/bfin/t-bfin-elf (TARGET_LIBGCC2_CFLAGS): Remove.
+ * config/bfin/t-bfin-linux: Likewise.
+ * config/bfin/t-bfin-uclinux: Likewise.
+ * config/c6x/eqd.c, config/c6x/eqf.c, config/c6x/ged.c,
+ config/c6x/gef.c, config/c6x/gtd.c, config/c6x/gtf.c,
+ config/c6x/led.c, config/c6x/lef.c, config/c6x/ltd.c,
+ config/c6x/ltf.c: Move to ../libgcc/config/c6x.
+ * config/c6x/t-c6x-elf (LIB2FUNCS_EXCLUDE, LIB2FUNCS_EXTRA):
+ Remove.
+ * config/c6x/t-c6x-uclinux (TARGET_LIBGCC2_CFLAGS): Remove.
+ * config/cris/arit.c: Move to ../libgcc/config/cris.
+ * config/cris/cris_abi_symbol.c: Remove.
+ * config/cris/cris.h: Remove obsolete comment.
+ * config/cris/mulsi3.asm: Move to ../libgcc/config/cris/mulsi3.S.
+ * config/cris/t-cris (LIB2FUNCS_EXTRA, CRIS_LIB1CSRC)
+ ($(LIB2FUNCS_EXTRA)): Remove.
+ * config/cris/t-elfmulti (LIB2FUNCS_STATIC_EXTRA, INSTALL_LIBGCC)
+ (LIBGCC): Remove.
+ * config/cris/t-linux (TARGET_LIBGCC2_CFLAGS): Remove.
+ * config/fr30/t-fr30: Remove.
+ * config/frv/cmovd.c, config/frv/cmovh.c, config/frv/cmovw.c,
+ config/frv/modi.c, config/frv/uitod.c, config/frv/uitof.c,
+ config/frv/ulltod.c, config/frv/ulltof.c, config/frv/umodi.c: Move
+ to ../libgcc/config/frv.
+ * config/frv/t-frv (LIB2FUNCS_EXTRA, TARGET_LIBGCC2_CFLAGS)
+ (cmovh.c, cmovw.c, cmovd.c, modi.c, umodi.c, uitof.c, uitod.c)
+ (ulltof.c, LIBGCC, INSTALL_LIBGCC): Remove.
+ * config/frv/t-linux (TARGET_LIBGCC2_CFLAGS): Remove.
+ * config/h8300/clzhi2.c, config/h8300/ctzhi2.c,
+ config/h8300/fixunssfsi.c, config/h8300/parityhi2.c,
+ config/h8300/popcounthi2.c: Move to ../libgcc/config/h8300.
+ * config/h8300/t-h8300 (LIB2FUNCS_EXTRA, TARGET_LIBGCC2_CFLAGS)
+ (LIBGCC, INSTALL_LIBGCC): Remove.
+ * config/i386/gthr-win32.c: Move to ../libgcc/config/i386.
+ * config/i386/t-cygming (LIBGCC2_INCLUDES): Remove.
+ * config/i386/t-cygwin: Remove.
+ * config/i386/t-darwin (LIB2_SIDITI_CONV_FUNCS, LIB2FUNCS_EXTRA)
+ (LIB2FUNCS_EXCLUDE): Remove.
+ * config/i386/t-darwin64 (LIB2_SIDITI_CONV_FUNCS, LIB2FUNCS_EXTRA)
+ (LIBGCC, INSTALL_LIBGCC): Remove.
+ * config/i386/t-gthr-win32: Move to ../libgcc/config/i386.
+ * config/i386/t-linux64 (LIBGCC, INSTALL_LIBGCC): Remove.
+ * config/i386/t-mingw-w32: Likewise.
+ * config/i386/t-mingw-w64: Likewise.
+ * config/i386/t-openbsd: Likewise.
+ * config/i386/t-nto: Remove.
+ * config/ia64/quadlib.c: Move to ../libgcc/config/ia64.
+ * config/ia64/t-hpux (LIBGCC, INSTALL_LIBGCC, LIB2FUNCS_EXTRA)
+ (quadlib.c): Remove.
+ * config/ia64/t-ia64: Remove comment.
+ * config/iq2000/lib2extra-funcs.c: Move to
+ ../libgcc/config/iq2000/lib2funcs.c.
+ * config/iq2000/t-iq2000: Remove.
+ * config/m32c/m32c-lib2.c: Move to ../libgcc/config/m32c/lib2funcs.c.
+ * config/m32c/m32c-lib2-trapv.c: Move to ../libgcc/config/m32c/trapv.c.
+ * config/m32r/t-linux (TARGET_LIBGCC2_CFLAGS): Remove.
+ * config/m32c/t-m32c (LIB2FUNCS_EXTRA): Remove.
+ * config/m32r/t-m32r (TARGET_LIBGCC2_CFLAGS, LIBGCC)
+ (INSTALL_LIBGCC): Remove.
+ * config/m68k/fpgnulib.c: Move to ../libgcc/config/m68k.
+ * config/m68k/t-floatlib: Remove.
+ * config/m68k/t-mlibs (LIBGCC, INSTALL_LIBGCC): Remove.
+ * config/mcore/t-mcore (TARGET_LIBGCC2_CFLAGS): Remove.
+ Fix typo.
+ (LIBGCC, INSTALL_LIBGCC): Remove.
+ * config/mep/mep-lib2.c: Move to ../libgcc/config/mep/lib2funcs.c.
+ * config/mep/mep-tramp.c: Move to ../libgcc/config/mep/tramp.c.
+ * config/mep/t-mep (LIB2FUNCS_EXTRA): Remove.
+ * config/mips/t-elf (TARGET_LIBGCC2_CFLAGS, LIBGCC)
+ (INSTALL_LIBGCC): Remove.
+ * config/mips/t-isa3264: Likewise.
+ * config/mips/t-mips (LIB2_SIDITI_CONV_FUNCS): Remove.
+ * config/mips/t-r3900 (TARGET_LIBGCC2_CFLAGS, LIBGCC)
+ (INSTALL_LIBGCC): Remove.
+ * config/mips/t-sde (LIBGCC, INSTALL_LIBGCC): Remove.
+ * config/mips/t-sr71k (TARGET_LIBGCC2_CFLAGS, LIBGCC)
+ (INSTALL_LIBGCC): Remove.
+ * config/mips/t-vr (TARGET_LIBGCC2_CFLAGS)
+ (LIB2FUNCS_STATIC_EXTRA): Remove.
+ * config/mips/vr4120-div.S: Move to ../libgcc/config/mips.
+ * config/mmix/t-mmix (TARGET_LIBGCC2_CFLAGS): Remove.
+ * config/mn10300/t-mn10300 (LIBGCC, INSTALL_LIBGCC): Remove.
+ * config/pa/fptr.c, config/pa/linux-atomic.c: Move to
+ ../libgcc/config/pa.
+ * config/pa/lib2funcs.asm: Move to ../libgcc/config/pa/lib2funcs.S.
+ * config/pa/quadlib.c: Move to ../libgcc/config/pa.
+ * config/pa/t-dce-thr (LIBGCC, INSTALL_LIBGCC): Remove.
+ * config/pa/t-linux, config/pa/t-linux64: Remove.
+ * config/pa/t-pa-hpux, config/pa/t-pa-hpux10,
+ config/pa/t-pa-hpux11, config/pa/t-pa64: Remove.
+ * config/pdp11/t-pdp11 (TARGET_LIBGCC2_CFLAGS, LIB2FUNCS_EXTRA):
+ Remove.
+ * config/picochip/libgccExtras: Move to ../libgcc/config/picochip.
+ * config/picochip/t-picochip (LIB2FUNCS_EXTRA, RANLIB_FOR_TARGET)
+ (TARGET_LIBGCC2_CFLAGS, LIBGCC2_DEBUG_CFLAGS): Remove.
+ * config/rs6000/crtresfpr.asm: Move to
+ ../libgcc/config/rs6000/crtresfpr.S.
+ * config/rs6000/crtresgpr.asm: Move to
+ ../libgcc/config/rs6000/crtresgpr.S.
+ * config/rs6000/crtresxfpr.asm: Move to
+ ../libgcc/config/rs6000/crtresxfpr.S.
+ * config/rs6000/crtresxgpr.asm: Move to
+ ../libgcc/config/rs6000/crtresxgpr.S.
+ * config/rs6000/crtsavfpr.asm: Move to
+ ../libgcc/config/rs6000/crtsavfpr.S.
+ * config/rs6000/crtsavgpr.asm: Move to
+ ../libgcc/config/rs6000/crtsavgpr.S.
+ * config/rs6000/darwin-asm.h: Move to ../libgcc/config/rs6000.
+ * config/rs6000/darwin-fpsave.asm: Move to
+ ../libgcc/config/rs6000/darwin-fpsave.S.
+ * config/rs6000/darwin-gpsave.asm: Move to
+ ../libgcc/config/rs6000/darwin-gpsave.S.
+ * config/rs6000/darwin-tramp.asm: Move to
+ ../libgcc/config/rs6000/darwin-tramp.S.
+ * config/rs6000/darwin-vecsave.asm: Move to
+ ../libgcc/config/rs6000/darwin-vecsave.S.
+ * config/rs6000/darwin-world.asm: Move to
+ ../libgcc/config/rs6000/darwin-world.S.
+ * config/rs6000/e500crtres32gpr.asm: Move to
+ ../libgcc/config/rs6000/e500crtres32gpr.S.
+ * config/rs6000/e500crtres64gpr.asm: Move to
+ ../libgcc/config/rs6000/e500crtres64gpr.S.
+ * config/rs6000/e500crtres64gprctr.asm: Move to
+ ../libgcc/config/rs6000/e500crtres64gprctr.S.
+ * config/rs6000/e500crtrest32gpr.asm: Move to
+ ../libgcc/config/rs6000/e500crtrest32gpr.S.
+ * config/rs6000/e500crtrest64gpr.asm: Move to
+ ../libgcc/config/rs6000/e500crtrest64gpr.S.
+ * config/rs6000/e500crtresx32gpr.asm: Move to
+ ../libgcc/config/rs6000/e500crtresx32gpr.S.
+ * config/rs6000/e500crtresx64gpr.asm: Move to
+ ../libgcc/config/rs6000/e500crtresx64gpr.S.
+ * config/rs6000/e500crtsav32gpr.asm: Move to
+ ../libgcc/config/rs6000/e500crtsav32gpr.S.
+ * config/rs6000/e500crtsav64gpr.asm: Move to
+ ../libgcc/config/rs6000/e500crtsav64gpr.S.
+ * config/rs6000/e500crtsav64gprctr.asm: Move to
+ ../libgcc/config/rs6000/e500crtsav64gprctr.S.
+ * config/rs6000/e500crtsavg32gpr.asm: Move to
+ ../libgcc/config/rs6000/e500crtsavg32gpr.S.
+ * config/rs6000/e500crtsavg64gpr.asm: Move to
+ ../libgcc/config/rs6000/e500crtsavg64gpr.S.
+ * config/rs6000/e500crtsavg64gprctr.asm: Move to
+ ../libgcc/config/rs6000/e500crtsavg64gprctr.S.
+ * config/rs6000/eabi.asm: Move to ../libgcc/config/rs6000/eabi.S.
+ * config/rs6000/t-aix43 (LIBGCC, INSTALL_LIBGCC, LIB2FUNCS_EXTRA)
+ (TARGET_LIBGCC2_CFLAGS): Remove.
+ * config/rs6000/t-aix52: Likewise.
+ * config/rs6000/t-darwin: Remove.
+ * config/rs6000/t-darwin64 (LIB2_SIDITI_CONV_FUNCS)
+ (LIB2FUNCS_EXTRA): Remove.
+ * config/rs6000/t-fprules (LIBGCC, INSTALL_LIBGCC): Remove.
+ * config/rs6000/t-linux64 (TARGET_LIBGCC2_CFLAGS): Remove.
+ * config/rs6000/t-lynx (LIB2FUNCS_EXTRA, tramp.S, LIBGCC)
+ (INSTALL_LIBGCC): Remove.
+ * config/rs6000/t-netbsd (LIB2FUNCS_EXTRA)
+ (LIB2FUNCS_STATIC_EXTRA, tramp.S, crtsavfpr.S, crtresfpr.S)
+ (crtsavgpr.S, crtresgpr.S, crtresxfpr.S, crtresxgpr.S, LIBGCC)
+ (INSTALL_LIBGCC, $(T)crtsavfpr$(objext), $(T)crtresfpr$(objext))
+ (($(T)crtsavgpr$(objext), $(T)crtresgpr$(objext),
+ $(T)crtresxfpr$(objext), $(T)crtresxgpr$(objext)): Remove.
+ * config/rs6000/t-ppccomm (LIB2FUNCS_EXTRA)
+ (LIB2FUNCS_STATIC_EXTRA, eabi.S, tramp.S): Remove.
+ * config/rs6000/t-spe (LIBGCC, INSTALL_LIBGCC): Remove.
+ * config/rs6000/t-vxworks: Remove comment.
+ * config/rs6000/tramp.asm: Move to ../libgcc/config/rs6000/tramp.S.
+ * config/rx/t-rx (LIBGCC, INSTALL_LIBGCC): Remove.
+ * config/sh/linux-atomic.asm: Move to
+ ../libgcc/config/sh/linux-atomic.S.
+ * config/sh/t-linux (LIB2FUNCS_EXTRA): Remove.
+ * config/sh/t-netbsd: Remove.
+ * config/sh/t-sh (TARGET_LIBGCC2_CFLAGS, LIBGCC, INSTALL_LIBGCC):
+ Remove.
+ * config/sparc/t-elf (LIBGCC, INSTALL_LIBGCC): Remove.
+ * config/sparc/t-leon: Likewise.
+ * config/sparc/t-leon3: Likewise.
+ * config/sparc/t-linux64: Likewise.
+ * config/sparc/t-netbsd64: Fix typo.
+ Remove comment.
+ * config/spu/divmodti4.c, config/spu/divv2df3.c,
+ config/spu/float_disf.c, config/spu/float_unsdidf.c,
+ config/spu/float_unsdisf.c, config/spu/float_unssidf.c,
+ config/spu/mfc_multi_tag_release.c,
+ config/spu/mfc_multi_tag_reserve.c, config/spu/mfc_tag_release.c,
+ config/spu/mfc_tag_reserve.c, config/spu/mfc_tag_table.c,
+ config/spu/multi3.c: Move to ../libgcc/config/spu.
+ * config/spu/t-spu-elf (TARGET_LIBGCC2_CFLAGS, LIB2FUNCS_EXCLUDE)
+ (LIB2FUNCS_STATIC_EXTRA, LIB2_SIDITI_CONV_FUNCS, LIBGCC)
+ (INSTALL_LIBGCC): Remove.
+ * config/stormy16/stormy16-lib2.c: Move to
+ ../libgcc/config/stormy16/lib2.c.
+ * config/stormy16/stormy16-lib2-ashlsi3.c: Move to
+ ../libgcc/config/stormy16/ashlsi3.c.
+ * config/stormy16/stormy16-lib2-ashrsi3.c: Move to
+ ../libgcc/config/stormy16/ashrsi3.c.
+ * config/stormy16/stormy16-lib2-clzhi2.c: Move to
+ ../libgcc/config/stormy16/clzhi2.c.
+ * config/stormy16/stormy16-lib2-cmpsi2.c: Move to
+ ../libgcc/config/stormy16/cmpsi2.c.
+ * config/stormy16/stormy16-lib2-ctzhi2.c: Move to
+ ../libgcc/config/stormy16/ctzhi2.c.
+ * config/stormy16/stormy16-lib2-divsi3.c: Move to
+ ../libgcc/config/stormy16/divsi3.c.
+ * config/stormy16/stormy16-lib2-ffshi2.c: Move to
+ ../libgcc/config/stormy16/ffshi2.c.
+ * config/stormy16/stormy16-lib2-lshrsi3.c: Move to
+ ../libgcc/config/stormy16/lshrsi3.c.
+ * config/stormy16/stormy16-lib2-modsi3.c: Move to
+ ../libgcc/config/stormy16/modsi3.c.
+ * config/stormy16/stormy16-lib2-parityhi2.c: Move to
+ ../libgcc/config/stormy16/parityhi2.c.
+ * config/stormy16/stormy16-lib2-popcounthi2.c: Move to
+ ../libgcc/config/stormy16/popcounthi2.c.
+ * config/stormy16/stormy16-lib2-ucmpsi2.c: Move to
+ ../libgcc/config/stormy16/ucmpsi2.c.
+ * config/stormy16/stormy16-lib2-udivmodsi4.c: Move to
+ ../libgcc/config/stormy16/udivmodsi4.c.
+ * config/stormy16/stormy16-lib2-udivsi3.c: Move to
+ ../libgcc/config/stormy16/udivsi3.c.
+ * config/stormy16/stormy16-lib2-umodsi3.c: Move to
+ ../libgcc/config/stormy16/umodsi3.c.
+ * config/stormy16/t-stormy16: Move to ../libgcc/config/t-stormy16.
+ * config/v850/t-v850 (INSTALL_LIBGCC): Remove.
+ * config/xtensa/lib2funcs.S: Move to ../libgcc/config/xtensa.
+ * config/xtensa/t-elf: Remove.
+ * config/xtensa/t-xtensa (LIB2FUNCS_EXTRA): Remove.
+ * config.gcc (*-*-freebsd*): Remove t-freebsd, t-freebsd-thread
+ from tmake_file.
+ (*-*-linux*, frv-*-*linux*, *-*-kfreebsd*-gnu, *-*-knetbsd*-gnu,
+ *-*-gnu*, *-*-kopensolaris*-gnu): Remove t-linux from tmake_file.
+ (*-*-netbsd*): Remove t-libgcc-pic from tmake_file.
+ (*-*-openbsd*): Likewise.
+ Remove t-openbsd-thread for posix threads.
+ (alpha*-*-linux*): Remove alpha/t-alpha, alpha/t-ieee
+ from tmake_file.
+ (alpha*-*-freebsd*): Likewise.
+ (alpha*-*-netbsd*): Likewise.
+ (alpha*-*-openbsd*): Likewise.
+ (alpha64-dec-*vms*): Likewise.
+ (alpha*-dec-*vms*): Likewise.
+ (arm*-*-netbsdelf*): Remove arm/t-netbsd from tmake_file.
+ (arm*-*-linux*): Remove t-linux from tmake_file.
+ Remove arm/t-bpabi from tmake_file for arm*-*-linux-*eabi.
+ (arm*-*-uclinux*): Remove arm/t-bpabi from tmake_file for
+ arm*-*-uclinux*eabi.
+ (arm*-*-eabi*, arm*-*-symbianelf* ): Remove arm/t-bpabi from
+ tmake_file for arm*-*-eabi*.
+ (fr30-*-elf): Remove tmake_file.
+ (hppa*64*-*-linux*): Remove tmake_file.
+ (hppa*-*-linux*): Likewise.
+ (hppa[12]*-*-hpux10*): Remove pa/t-pa-hpux10, pa/t-pa-hpux from
+ tmake_file.
+ (hppa*64*-*-hpux11*): Remove pa/t-pa64, pa/t-pa-hpux from tmake_file.
+ (hppa[12]*-*-hpux11*): Remove pa/t-pa-hpux11, pa/t-pa-hpux from
+ tmake_file.
+ (i[34567]86-*-elf*): Remove tmake_file.
+ (x86_64-*-elf*): Likewise.
+ (i[34567]86-*-nto-qnx*): Likewise.
+ (i[34567]86-*-cygwin*): Remove i386/t-cygwin from tmake_file.
+ (i[34567]86-*-mingw*, x86_64-*-mingw*): Remove i386/t-gthr-win32
+ from tmake_file if using win32 threads.
+ (iq2000*-*-elf*): Remove tmake-file.
+ (microblaze*-linux*): Likewise.
+ (sh-*-elf*, sh[12346l]*-*-elf*, sh-*-linux*)
+ (sh[2346lbe]*-*-linux*, sh-*-netbsdelf*, shl*-*-netbsdelf*)
+ (sh5-*-netbsd*, sh5l*-*-netbsd*, sh64-*-netbsd*)
+ (sh64l*-*-netbsd*): Remove sh/t-netbsd from tmake_file for
+ sh5*-*-netbsd*, sh64*-netbsd*, *-*-netbsd.
+ (xtensa*-*-elf*): Remove tmake_file.
+
+2011-11-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
* Makefile.in (LIB1ASMSRC): Don't export.
(libgcc.mvars): Don't emit LIB1ASMFUNCS, LIB1ASMSRC.
* config/arm/arm.c: Update lib1funcs.asm filename.
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 38449d7c30e..ca818a893af 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -671,22 +671,6 @@ ifeq ($(inhibit_libc),true)
INHIBIT_LIBC_CFLAGS = -Dinhibit_libc
endif
-# Options to use when compiling libgcc2.a.
-#
-LIBGCC2_DEBUG_CFLAGS = -g
-LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(INCLUDES_FOR_TARGET) $(GCC_CFLAGS) \
- $(TARGET_LIBGCC2_CFLAGS) $(LIBGCC2_DEBUG_CFLAGS) \
- $(GTHREAD_FLAGS) -DIN_LIBGCC2 \
- -fbuilding-libgcc -fno-stack-protector \
- $(INHIBIT_LIBC_CFLAGS)
-
-# Additional options to use when compiling libgcc2.a.
-# Some targets override this to -isystem include
-LIBGCC2_INCLUDES =
-
-# Additional target-dependent options for compiling libgcc2.a.
-TARGET_LIBGCC2_CFLAGS =
-
# List of extra executables that should be compiled for this target machine
# that are used for compiling from source code to object code.
# The rules for compiling them should be in the t-* file for the machine.
@@ -717,17 +701,6 @@ USE_GCC_STDINT = @use_gcc_stdint@
# set to empty.
COLLECT2 = @collect2@
-# List of extra C and assembler files to add to static and shared libgcc2.
-# Assembler files should have names ending in `.asm'.
-LIB2FUNCS_EXTRA =
-
-# List of extra C and assembler files to add to static libgcc2.
-# Assembler files should have names ending in `.asm'.
-LIB2FUNCS_STATIC_EXTRA =
-
-# List of functions not to build from libgcc2.c.
-LIB2FUNCS_EXCLUDE =
-
# Program to convert libraries.
LIBCONVERT =
@@ -790,14 +763,6 @@ RUNTEST = `if [ -f $${srcdir}/../dejagnu/runtest ] ; then \
else echo runtest; fi`
RUNTESTFLAGS =
-# "t" or nothing, for building multilibbed versions of, say, crtbegin.o.
-T =
-
-# Should T contain a `=', libgcc/Makefile will make T_TARGET, setting
-# $(T_TARGET) to the name of the actual target filename.
-T_TARGET =
-T_TARGET : $(T_TARGET)
-
# This should name the specs file that we're going to install. Target
# Makefiles may override it and name another file to be generated from
# the built-in specs and installed as the default spec, as long as
@@ -1085,9 +1050,6 @@ INCLUDES = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
$(CPPINC) $(GMPINC) $(DECNUMINC) \
$(PPLINC) $(CLOOGINC)
-INCLUDES_FOR_TARGET = -I. -I$(@D) -I$(srcdir) -I$(srcdir)/$(@D) \
- -I$(srcdir)/../include $(DECNUMINC) -I$(srcdir)/../libgcc
-
.c.o:
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $< $(OUTPUT_OPTION)
@@ -1110,7 +1072,6 @@ export DESTDIR
export GCC_FOR_TARGET
export INCLUDES
export INSTALL_DATA
-export LIBGCC2_CFLAGS
export LIPO_FOR_TARGET
export MACHMODE_H
export NM_FOR_TARGET
@@ -1530,13 +1491,6 @@ MOSTLYCLEANFILES = insn-flags.h insn-config.h insn-codes.h \
gengtype$(exeext) *.[0-9][0-9].* *.[si] *-checksum.c libbackend.a \
libcommon-target.a libcommon.a libgcc.mk
-# Defined in libgcc2.c, included only in the static library.
-LIB2FUNCS_ST = _eprintf __gcc_bcmp
-
-# These might cause a divide overflow trap and so are compiled with
-# unwinder info.
-LIB2_DIVMOD_FUNCS = _divdi3 _moddi3 _udivdi3 _umoddi3 _udiv_w_sdiv _udivmoddi4
-
#
# Language makefile fragments.
@@ -1857,35 +1811,13 @@ cc1$(exeext): $(C_OBJS) cc1-checksum.o $(BACKEND) $(LIBDEPS)
#
# Build libgcc.a.
-LIB2ADD = $(LIB2FUNCS_EXTRA)
-LIB2ADD_ST = $(LIB2FUNCS_STATIC_EXTRA)
-
-# All source files for libgcc are either generated in the libgcc build
-# directory which will be substituted for $$(libgcc_objdir), in the
-# source directory (in which case they will start with $(srcdir)), or
-# generated into the build directory (in which case they will be
-# relative paths).
-srcdirify = $(patsubst $$(libgcc_objdir)/%,%, \
- $(filter $$(libgcc_objdir)%,$(1))) \
- $(patsubst $(srcdir)%,$$(gcc_srcdir)%,$(filter $(srcdir)%,$(1))) \
- $(patsubst %,$$(gcc_objdir)/%, \
- $(filter-out $(srcdir)% $$(libgcc_objdir)%,$(1)))
-
libgcc-support: libgcc.mvars stmp-int-hdrs $(TCONFIG_H) \
- $(MACHMODE_H) $(LIB2ADD) $(LIB2ADD_ST) gcov-iov.h
+ $(MACHMODE_H) gcov-iov.h
-libgcc.mvars: config.status Makefile $(LIB2ADD) $(LIB2ADD_ST) specs \
- xgcc$(exeext)
+libgcc.mvars: config.status Makefile specs xgcc$(exeext)
: > tmp-libgcc.mvars
- echo LIB2FUNCS_ST = '$(LIB2FUNCS_ST)' >> tmp-libgcc.mvars
- echo LIB2FUNCS_EXCLUDE = '$(LIB2FUNCS_EXCLUDE)' >> tmp-libgcc.mvars
- echo LIB2ADD = '$(call srcdirify,$(LIB2ADD))' >> tmp-libgcc.mvars
- echo LIB2ADD_ST = '$(call srcdirify,$(LIB2ADD_ST))' >> tmp-libgcc.mvars
- echo LIB2_SIDITI_CONV_FUNCS = '$(LIB2_SIDITI_CONV_FUNCS)' >> tmp-libgcc.mvars
- echo LIB2_DIVMOD_FUNCS = '$(LIB2_DIVMOD_FUNCS)' >> tmp-libgcc.mvars
- echo LIBGCC2_CFLAGS = '$(LIBGCC2_CFLAGS)' >> tmp-libgcc.mvars
- echo TARGET_LIBGCC2_CFLAGS = '$(TARGET_LIBGCC2_CFLAGS)' >> tmp-libgcc.mvars
echo GCC_CFLAGS = '$(GCC_CFLAGS)' >> tmp-libgcc.mvars
+ echo GTHREAD_FLAGS = '$(GTHREAD_FLAGS)' >> tmp-libgcc.mvars
echo INHIBIT_LIBC_CFLAGS = '$(INHIBIT_LIBC_CFLAGS)' >> tmp-libgcc.mvars
echo TARGET_SYSTEM_ROOT = '$(TARGET_SYSTEM_ROOT)' >> tmp-libgcc.mvars
diff --git a/gcc/config.gcc b/gcc/config.gcc
index 79230a6935a..8c4e4bef484 100644
--- a/gcc/config.gcc
+++ b/gcc/config.gcc
@@ -554,14 +554,13 @@ case ${target} in
gnu_ld=yes
fbsd_major=`echo ${target} | sed -e 's/.*freebsd//g' | sed -e 's/\..*//g'`
tm_defines="${tm_defines} FBSD_MAJOR=${fbsd_major}"
- tmake_file="t-freebsd t-slibgcc"
+ tmake_file="t-slibgcc"
case ${enable_threads} in
no)
fbsd_tm_file="${fbsd_tm_file} freebsd-nthr.h"
;;
"" | yes | posix)
thread_file='posix'
- tmake_file="${tmake_file} t-freebsd-thread"
;;
*)
echo 'Unknown thread configuration for FreeBSD'
@@ -586,7 +585,7 @@ case ${target} in
case ${enable_threads} in
"" | yes | posix) thread_file='posix' ;;
esac
- tmake_file="t-linux t-slibgcc"
+ tmake_file="t-slibgcc"
case $target in
*-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-kopensolaris*-gnu)
:;;
@@ -634,7 +633,7 @@ case ${target} in
esac
;;
*-*-netbsd*)
- tmake_file="t-libgcc-pic t-slibgcc"
+ tmake_file="t-slibgcc"
gas=yes
gnu_ld=yes
@@ -664,11 +663,10 @@ case ${target} in
esac
;;
*-*-openbsd*)
- tmake_file="t-openbsd t-libgcc-pic"
+ tmake_file="t-openbsd"
case ${enable_threads} in
yes)
thread_file='posix'
- tmake_file="${tmake_file} t-openbsd-thread"
;;
esac
case ${target} in
@@ -755,20 +753,17 @@ alpha*-*-linux*)
tm_file="${tm_file} alpha/elf.h alpha/linux.h alpha/linux-elf.h glibc-stdint.h"
extra_options="${extra_options} alpha/elf.opt"
target_cpu_default="MASK_GAS"
- tmake_file="${tmake_file} alpha/t-alpha alpha/t-ieee"
;;
alpha*-*-freebsd*)
tm_file="${tm_file} ${fbsd_tm_file} alpha/elf.h alpha/freebsd.h"
extra_options="${extra_options} alpha/elf.opt"
target_cpu_default="MASK_GAS"
- tmake_file="${tmake_file} alpha/t-alpha alpha/t-ieee"
;;
alpha*-*-netbsd*)
tm_file="${tm_file} netbsd.h alpha/elf.h netbsd-elf.h alpha/netbsd.h"
extra_options="${extra_options} netbsd.opt netbsd-elf.opt \
alpha/elf.opt"
target_cpu_default="MASK_GAS"
- tmake_file="${tmake_file} alpha/t-alpha alpha/t-ieee"
;;
alpha*-*-openbsd*)
tm_defines="${tm_defines} OBSD_HAS_DECLARE_FUNCTION_NAME OBSD_HAS_DECLARE_FUNCTION_SIZE OBSD_HAS_DECLARE_OBJECT"
@@ -776,7 +771,6 @@ alpha*-*-openbsd*)
extra_options="${extra_options} openbsd.opt alpha/elf.opt"
# default x-alpha is only appropriate for dec-osf.
target_cpu_default="MASK_GAS"
- tmake_file="${tmake_file} alpha/t-alpha alpha/t-ieee"
;;
alpha*-dec-osf5.1*)
if test x$stabs = xyes
@@ -805,12 +799,12 @@ alpha*-dec-osf5.1*)
alpha64-dec-*vms*)
tm_file="${tm_file} alpha/vms.h alpha/vms64.h"
xm_file="alpha/xm-vms.h vms/xm-vms64.h"
- tmake_file="${tmake_file} alpha/t-alpha vms/t-vms64 alpha/t-vms alpha/t-ieee"
+ tmake_file="${tmake_file} vms/t-vms64 alpha/t-vms"
;;
alpha*-dec-*vms*)
tm_file="${tm_file} alpha/vms.h"
xm_file="alpha/xm-vms.h"
- tmake_file="${tmake_file} alpha/t-alpha alpha/t-vms alpha/t-ieee"
+ tmake_file="${tmake_file} alpha/t-vms"
;;
arm-wrs-vxworks)
tm_file="elfos.h arm/elf.h arm/aout.h ${tm_file} vx-common.h vxworks.h arm/vxworks.h"
@@ -824,7 +818,7 @@ arm*-*-freebsd*)
arm*-*-netbsdelf*)
tm_file="dbxelf.h elfos.h netbsd.h netbsd-elf.h arm/elf.h arm/aout.h arm/arm.h arm/netbsd-elf.h"
extra_options="${extra_options} netbsd.opt netbsd-elf.opt"
- tmake_file="${tmake_file} arm/t-arm arm/t-netbsd"
+ tmake_file="${tmake_file} arm/t-arm"
;;
arm*-*-linux*) # ARM GNU/Linux with ELF
tm_file="dbxelf.h elfos.h gnu-user.h linux.h linux-android.h glibc-stdint.h arm/elf.h arm/linux-gas.h arm/linux-elf.h"
@@ -833,12 +827,12 @@ arm*-*-linux*) # ARM GNU/Linux with ELF
tm_defines="${tm_defines} TARGET_BIG_ENDIAN_DEFAULT=1"
;;
esac
- tmake_file="${tmake_file} t-linux arm/t-arm"
+ tmake_file="${tmake_file} arm/t-arm"
case ${target} in
arm*-*-linux-*eabi)
tm_file="$tm_file arm/bpabi.h arm/linux-eabi.h"
libgcc_tm_file="$libgcc_tm_file arm/bpabi-lib.h"
- tmake_file="$tmake_file arm/t-arm-elf arm/t-bpabi arm/t-linux-eabi"
+ tmake_file="$tmake_file arm/t-arm-elf arm/t-linux-eabi"
# Define multilib configuration for arm-linux-androideabi.
case ${target} in
*-androideabi)
@@ -866,7 +860,6 @@ arm*-*-uclinux*) # ARM ucLinux
arm*-*-uclinux*eabi)
tm_file="$tm_file arm/bpabi.h arm/uclinux-eabi.h"
libgcc_tm_file="$libgcc_tm_file arm/bpabi-lib.h"
- tmake_file="$tmake_file arm/t-bpabi"
# The BPABI long long divmod functions return a 128-bit value in
# registers r0-r3. Correctly modeling that requires the use of
# TImode.
@@ -892,7 +885,6 @@ arm*-*-eabi* | arm*-*-symbianelf* )
case ${target} in
arm*-*-eabi*)
tm_file="$tm_file newlib-stdint.h"
- tmake_file="${tmake_file} arm/t-bpabi"
use_gcc_stdint=wrap
;;
arm*-*-symbianelf*)
@@ -988,7 +980,6 @@ crisv32-*-linux* | cris-*-linux*)
;;
fr30-*-elf)
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
- tmake_file=fr30/t-fr30
;;
frv-*-elf)
tm_file="dbxelf.h elfos.h newlib-stdint.h ${tm_file}"
@@ -1032,7 +1023,6 @@ hppa*64*-*-linux*)
tm_file="pa/pa64-start.h ${tm_file} dbxelf.h elfos.h gnu-user.h linux.h \
glibc-stdint.h pa/pa-linux.h pa/pa64-regs.h pa/pa-64.h \
pa/pa64-linux.h"
- tmake_file="${tmake_file} pa/t-linux64"
gas=yes gnu_ld=yes
need_64bit_hwint=yes
;;
@@ -1040,7 +1030,6 @@ hppa*-*-linux*)
target_cpu_default="MASK_PA_11|MASK_NO_SPACE_REGS"
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h pa/pa-linux.h \
pa/pa32-regs.h pa/pa32-linux.h"
- tmake_file="${tmake_file} pa/t-linux"
;;
# port not yet contributed.
#hppa*-*-openbsd*)
@@ -1063,7 +1052,7 @@ hppa[12]*-*-hpux10*)
esac
use_gcc_stdint=provide
tm_file="${tm_file} hpux-stdint.h"
- tmake_file="pa/t-pa-hpux10 pa/t-pa-hpux t-slibgcc"
+ tmake_file="t-slibgcc"
case ${enable_threads} in
"")
if test x$have_pthread_h = xyes ; then
@@ -1106,7 +1095,7 @@ hppa*64*-*-hpux11*)
extra_options="${extra_options} pa/pa-hpux.opt \
pa/pa-hpux1010.opt pa/pa64-hpux.opt hpux11.opt"
need_64bit_hwint=yes
- tmake_file="pa/t-pa64 pa/t-pa-hpux t-slibgcc"
+ tmake_file="t-slibgcc"
case x${enable_threads} in
x | xyes | xposix )
thread_file=posix
@@ -1144,7 +1133,7 @@ hppa[12]*-*-hpux11*)
extra_options="${extra_options} pa/pa-hpux1131.opt"
;;
esac
- tmake_file="pa/t-pa-hpux11 pa/t-pa-hpux t-slibgcc"
+ tmake_file="t-slibgcc"
case x${enable_threads} in
x | xyes | xposix )
thread_file=posix
@@ -1182,11 +1171,9 @@ x86_64-*-darwin*)
;;
i[34567]86-*-elf*)
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h"
- tmake_file="${tmake_file} t-svr4"
;;
x86_64-*-elf*)
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h"
- tmake_file="${tmake_file} t-svr4"
;;
i[34567]86-*-freebsd*)
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h ${fbsd_tm_file} i386/freebsd.h"
@@ -1334,7 +1321,6 @@ i[34567]86-*-lynxos*)
i[34567]86-*-nto-qnx*)
tm_file="${tm_file} i386/att.h dbxelf.h tm-dwarf2.h elfos.h i386/unix.h i386/nto.h"
extra_options="${extra_options} i386/nto.opt"
- tmake_file="${tmake_file} i386/t-nto"
gnu_ld=yes
gas=yes
;;
@@ -1396,7 +1382,7 @@ i[4567]86-wrs-vxworks|i[4567]86-wrs-vxworksae)
i[34567]86-*-cygwin*)
tm_file="${tm_file} i386/unix.h i386/bsd.h i386/gas.h dbxcoff.h i386/cygming.h i386/cygwin.h i386/cygwin-stdint.h"
xm_file=i386/xm-cygwin.h
- tmake_file="${tmake_file} i386/t-cygming i386/t-cygwin t-slibgcc"
+ tmake_file="${tmake_file} i386/t-cygming t-slibgcc"
target_gtfiles="\$(srcdir)/config/i386/winnt.c"
extra_options="${extra_options} i386/cygming.opt"
extra_objs="winnt.o winnt-stubs.o"
@@ -1474,8 +1460,8 @@ i[34567]86-*-mingw* | x86_64-*-mingw*)
default_use_cxa_atexit=yes
use_gcc_stdint=wrap
case ${enable_threads} in
- "" | yes | win32) thread_file='win32'
- tmake_file="${tmake_file} i386/t-gthr-win32"
+ "" | yes | win32)
+ thread_file='win32'
;;
posix)
thread_file='posix'
@@ -1559,7 +1545,6 @@ ia64-hp-*vms*)
;;
iq2000*-*-elf*)
tm_file="elfos.h newlib-stdint.h iq2000/iq2000.h"
- tmake_file=iq2000/t-iq2000
out_file=iq2000/iq2000.c
md_file=iq2000/iq2000.md
;;
@@ -1701,7 +1686,6 @@ microblaze*-linux*)
tm_file="${tm_file} dbxelf.h gnu-user.h linux.h microblaze/linux.h"
c_target_objs="${c_target_objs} microblaze-c.o"
cxx_target_objs="${cxx_target_objs} microblaze-c.o"
- tmake_file="${tmake_file} t-linux microblaze/t-microblaze"
;;
microblaze*-*-*)
tm_file="${tm_file} dbxelf.h"
@@ -2220,14 +2204,13 @@ sh-*-elf* | sh[12346l]*-*-elf* | \
case ${target} in
sh5*-*-netbsd*)
# SHmedia, 32-bit ABI
- tmake_file="${tmake_file} sh/t-sh64 sh/t-netbsd"
+ tmake_file="${tmake_file} sh/t-sh64"
;;
sh64*-netbsd*)
# SHmedia, 64-bit ABI
- tmake_file="${tmake_file} sh/t-sh64 sh/t-netbsd sh/t-netbsd-sh5-64"
+ tmake_file="${tmake_file} sh/t-sh64 sh/t-netbsd-sh5-64"
;;
*-*-netbsd)
- tmake_file="${tmake_file} sh/t-netbsd"
;;
sh64*-*-linux*)
tmake_file="${tmake_file} sh/t-sh64"
@@ -2531,7 +2514,6 @@ xstormy16-*-elf)
xtensa*-*-elf*)
tm_file="${tm_file} dbxelf.h elfos.h newlib-stdint.h xtensa/elf.h"
extra_options="${extra_options} xtensa/elf.opt"
- tmake_file="xtensa/t-xtensa xtensa/t-elf"
;;
xtensa*-*-linux*)
tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h"
diff --git a/gcc/config/alpha/qrnnd.asm b/gcc/config/alpha/qrnnd.asm
deleted file mode 100644
index 51b13bce6ad..00000000000
--- a/gcc/config/alpha/qrnnd.asm
+++ /dev/null
@@ -1,163 +0,0 @@
- # Alpha 21064 __udiv_qrnnd
- # Copyright (C) 1992, 1994, 1995, 2000, 2009 Free Software Foundation, Inc.
-
- # This file is part of GCC.
-
- # The GNU MP Library is free software; you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation; either version 3 of the License, or (at your
- # option) any later version.
-
- # This file 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 Library General Public
- # License for more details.
-
- # Under Section 7 of GPL version 3, you are granted additional
- # permissions described in the GCC Runtime Library Exception, version
- # 3.1, as published by the Free Software Foundation.
-
- # You should have received a copy of the GNU General Public License and
- # a copy of the GCC Runtime Library Exception along with this program;
- # see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- # <http://www.gnu.org/licenses/>.
-
-#ifdef __ELF__
-.section .note.GNU-stack,""
-#endif
-
- .set noreorder
- .set noat
-
- .text
-
- .globl __udiv_qrnnd
- .ent __udiv_qrnnd
-__udiv_qrnnd:
- .frame $30,0,$26,0
- .prologue 0
-
-#define cnt $2
-#define tmp $3
-#define rem_ptr $16
-#define n1 $17
-#define n0 $18
-#define d $19
-#define qb $20
-#define AT $at
-
- ldiq cnt,16
- blt d,$largedivisor
-
-$loop1: cmplt n0,0,tmp
- addq n1,n1,n1
- bis n1,tmp,n1
- addq n0,n0,n0
- cmpule d,n1,qb
- subq n1,d,tmp
- cmovne qb,tmp,n1
- bis n0,qb,n0
- cmplt n0,0,tmp
- addq n1,n1,n1
- bis n1,tmp,n1
- addq n0,n0,n0
- cmpule d,n1,qb
- subq n1,d,tmp
- cmovne qb,tmp,n1
- bis n0,qb,n0
- cmplt n0,0,tmp
- addq n1,n1,n1
- bis n1,tmp,n1
- addq n0,n0,n0
- cmpule d,n1,qb
- subq n1,d,tmp
- cmovne qb,tmp,n1
- bis n0,qb,n0
- cmplt n0,0,tmp
- addq n1,n1,n1
- bis n1,tmp,n1
- addq n0,n0,n0
- cmpule d,n1,qb
- subq n1,d,tmp
- cmovne qb,tmp,n1
- bis n0,qb,n0
- subq cnt,1,cnt
- bgt cnt,$loop1
- stq n1,0(rem_ptr)
- bis $31,n0,$0
- ret $31,($26),1
-
-$largedivisor:
- and n0,1,$4
-
- srl n0,1,n0
- sll n1,63,tmp
- or tmp,n0,n0
- srl n1,1,n1
-
- and d,1,$6
- srl d,1,$5
- addq $5,$6,$5
-
-$loop2: cmplt n0,0,tmp
- addq n1,n1,n1
- bis n1,tmp,n1
- addq n0,n0,n0
- cmpule $5,n1,qb
- subq n1,$5,tmp
- cmovne qb,tmp,n1
- bis n0,qb,n0
- cmplt n0,0,tmp
- addq n1,n1,n1
- bis n1,tmp,n1
- addq n0,n0,n0
- cmpule $5,n1,qb
- subq n1,$5,tmp
- cmovne qb,tmp,n1
- bis n0,qb,n0
- cmplt n0,0,tmp
- addq n1,n1,n1
- bis n1,tmp,n1
- addq n0,n0,n0
- cmpule $5,n1,qb
- subq n1,$5,tmp
- cmovne qb,tmp,n1
- bis n0,qb,n0
- cmplt n0,0,tmp
- addq n1,n1,n1
- bis n1,tmp,n1
- addq n0,n0,n0
- cmpule $5,n1,qb
- subq n1,$5,tmp
- cmovne qb,tmp,n1
- bis n0,qb,n0
- subq cnt,1,cnt
- bgt cnt,$loop2
-
- addq n1,n1,n1
- addq $4,n1,n1
- bne $6,$Odd
- stq n1,0(rem_ptr)
- bis $31,n0,$0
- ret $31,($26),1
-
-$Odd:
- /* q' in n0. r' in n1 */
- addq n1,n0,n1
-
- cmpult n1,n0,tmp # tmp := carry from addq
- subq n1,d,AT
- addq n0,tmp,n0
- cmovne tmp,AT,n1
-
- cmpult n1,d,tmp
- addq n0,1,AT
- cmoveq tmp,AT,n0
- subq n1,d,AT
- cmoveq tmp,AT,n1
-
- stq n1,0(rem_ptr)
- bis $31,n0,$0
- ret $31,($26),1
-
- .end __udiv_qrnnd
diff --git a/gcc/config/alpha/t-alpha b/gcc/config/alpha/t-alpha
deleted file mode 100644
index d0b58d69a4e..00000000000
--- a/gcc/config/alpha/t-alpha
+++ /dev/null
@@ -1,2 +0,0 @@
-# This is a support routine for longlong.h, used by libgcc2.c.
-LIB2FUNCS_EXTRA = $(srcdir)/config/alpha/qrnnd.asm
diff --git a/gcc/config/alpha/t-ieee b/gcc/config/alpha/t-ieee
deleted file mode 100644
index fe549dfc992..00000000000
--- a/gcc/config/alpha/t-ieee
+++ /dev/null
@@ -1,2 +0,0 @@
-# All alphas get an IEEE complaint set of libraries.
-TARGET_LIBGCC2_CFLAGS += -mieee
diff --git a/gcc/config/alpha/t-vms b/gcc/config/alpha/t-vms
index d6850053597..760f943d063 100644
--- a/gcc/config/alpha/t-vms
+++ b/gcc/config/alpha/t-vms
@@ -17,10 +17,6 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-LIB2FUNCS_EXTRA = $(srcdir)/config/alpha/vms-gcc_shell_handler.c
-
MULTILIB_OPTIONS = mcpu=ev6
MULTILIB_DIRNAMES = ev6
MULTILIB_OSDIRNAMES = ev6
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/alpha/vms-gcc_shell_handler.c b/gcc/config/alpha/vms-gcc_shell_handler.c
deleted file mode 100644
index 67d0fe7f9aa..00000000000
--- a/gcc/config/alpha/vms-gcc_shell_handler.c
+++ /dev/null
@@ -1,124 +0,0 @@
-/* Static condition handler for Alpha/VMS.
- Copyright (C) 2005-2009
- Free Software Foundation, Inc.
-
- This file is part of GCC.
-
- GCC is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3, or (at your
- option) any later version.
-
- GCC 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 General Public
- License for more details.
-
- Under Section 7 of GPL version 3, you are granted additional
- permissions described in the GCC Runtime Library Exception, version
- 3.1, as published by the Free Software Foundation.
-
- You should have received a copy of the GNU General Public License and
- a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
-/* This file implements __gcc_shell_handler, the static VMS condition handler
- used as the indirection wrapper around user level handlers installed with
- establish_vms_condition_handler GCC builtin.
-
- [ABI] in comments refers to the "HP OpenVMS calling standard" document
- dated January 2005. */
-
-#include <vms/chfdef.h>
-#include <vms/pdscdef.h>
-#include <vms/ssdef.h>
-
-typedef void * ADDR;
-typedef unsigned long long REG;
-
-#define REG_AT(addr) (*(REG *)(addr))
-
-/* Compute pointer to procedure descriptor (Procedure Value) from Frame
- Pointer FP, according to the rules in [ABI-3.5.1 Current Procedure]. */
-#define PV_FOR(FP) \
- (((FP) != 0) \
- ? (((REG_AT (FP) & 0x7) == 0) ? *(PDSCDEF **)(FP) : (PDSCDEF *)(FP)) : 0)
-
-long
-__gcc_shell_handler (struct chf$signal_array *sig_arr,
- struct chf$mech_array *mech_arr);
-
-/* Helper for __gcc_shell_handler. Fetch the pointer to procedure currently
- registered as the VMS condition handler for the live function with a frame
- pointer FP. */
-
-static ADDR
-get_dyn_handler_pointer (REG fp)
-{
- /* From the frame pointer we find the procedure descriptor, and fetch
- the handler_data field from there. This field contains the offset
- from FP at which the address of the currently installed handler is
- to be found. */
-
- PDSCDEF * pd = PV_FOR (fp);
- /* Procedure descriptor pointer for the live subprogram with FP as the frame
- pointer, and to which _gcc_shell_handler is attached as a condition
- handler. */
-
- REG handler_slot_offset;
- /* Offset from FP at which the address of the currently established real
- condition handler is to be found. This offset is available from the
- handler_data field of the procedure descriptor. */
-
- REG handler_data_offset;
- /* The handler_data field position in the procedure descriptor, which
- depends on the kind of procedure at hand. */
-
- switch (pd->pdsc$w_flags & 0xf)
- {
- case PDSC$K_KIND_FP_STACK: /* [3.4.2 PD for stack frame procedures] */
- handler_data_offset = 40;
- break;
-
- case PDSC$K_KIND_FP_REGISTER: /* [3.4.5 PD for reg frame procedures] */
- handler_data_offset = 32;
- break;
-
- default:
- handler_data_offset = 0;
- break;
- }
-
- /* If we couldn't determine the handler_data field position, give up. */
- if (handler_data_offset == 0)
- return 0;
-
- /* Otherwise, fetch the fp offset at which the real handler address is to be
- found, then fetch and return the latter in turn. */
-
- handler_slot_offset = REG_AT ((REG)pd + handler_data_offset);
-
- return (ADDR) REG_AT (fp + handler_slot_offset);
-}
-
-/* The static VMS condition handler for GCC code. Fetch the address of the
- currently established condition handler, then resignal if there is none or
- call the handler with the VMS condition arguments. */
-
-long
-__gcc_shell_handler (struct chf$signal_array *sig_arr,
- struct chf$mech_array *mech_arr)
-{
- long ret;
- long (*user_handler) (struct chf$signal_array *, struct chf$mech_array *);
-
- user_handler = get_dyn_handler_pointer (mech_arr->chf$q_mch_frame);
- if (!user_handler)
- ret = SS$_RESIGNAL;
- else
- ret = user_handler (sig_arr, mech_arr);
-
- return ret;
-}
-
diff --git a/gcc/config/arm/bpabi.c b/gcc/config/arm/bpabi.c
deleted file mode 100644
index 283bdc0acf0..00000000000
--- a/gcc/config/arm/bpabi.c
+++ /dev/null
@@ -1,56 +0,0 @@
-/* Miscellaneous BPABI functions.
-
- Copyright (C) 2003, 2004, 2009 Free Software Foundation, Inc.
- Contributed by CodeSourcery, LLC.
-
- This file is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 3, or (at your option) any
- later version.
-
- This file 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
- General Public License for more details.
-
- Under Section 7 of GPL version 3, you are granted additional
- permissions described in the GCC Runtime Library Exception, version
- 3.1, as published by the Free Software Foundation.
-
- You should have received a copy of the GNU General Public License and
- a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
-extern long long __divdi3 (long long, long long);
-extern unsigned long long __udivdi3 (unsigned long long,
- unsigned long long);
-extern long long __gnu_ldivmod_helper (long long, long long, long long *);
-extern unsigned long long __gnu_uldivmod_helper (unsigned long long,
- unsigned long long,
- unsigned long long *);
-
-
-long long
-__gnu_ldivmod_helper (long long a,
- long long b,
- long long *remainder)
-{
- long long quotient;
-
- quotient = __divdi3 (a, b);
- *remainder = a - b * quotient;
- return quotient;
-}
-
-unsigned long long
-__gnu_uldivmod_helper (unsigned long long a,
- unsigned long long b,
- unsigned long long *remainder)
-{
- unsigned long long quotient;
-
- quotient = __udivdi3 (a, b);
- *remainder = a - b * quotient;
- return quotient;
-}
diff --git a/gcc/config/arm/fp16.c b/gcc/config/arm/fp16.c
deleted file mode 100644
index 936caeb78d0..00000000000
--- a/gcc/config/arm/fp16.c
+++ /dev/null
@@ -1,145 +0,0 @@
-/* Half-float conversion routines.
-
- Copyright (C) 2008, 2009 Free Software Foundation, Inc.
- Contributed by CodeSourcery.
-
- This file is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 3, or (at your option) any
- later version.
-
- This file 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
- General Public License for more details.
-
- Under Section 7 of GPL version 3, you are granted additional
- permissions described in the GCC Runtime Library Exception, version
- 3.1, as published by the Free Software Foundation.
-
- You should have received a copy of the GNU General Public License and
- a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
-static inline unsigned short
-__gnu_f2h_internal(unsigned int a, int ieee)
-{
- unsigned short sign = (a >> 16) & 0x8000;
- int aexp = (a >> 23) & 0xff;
- unsigned int mantissa = a & 0x007fffff;
- unsigned int mask;
- unsigned int increment;
-
- if (aexp == 0xff)
- {
- if (!ieee)
- return sign;
- return sign | 0x7e00 | (mantissa >> 13);
- }
-
- if (aexp == 0 && mantissa == 0)
- return sign;
-
- aexp -= 127;
-
- /* Decimal point between bits 22 and 23. */
- mantissa |= 0x00800000;
- if (aexp < -14)
- {
- mask = 0x007fffff;
- if (aexp < -25)
- aexp = -26;
- else if (aexp != -25)
- mask >>= 24 + aexp;
- }
- else
- mask = 0x00001fff;
-
- /* Round. */
- if (mantissa & mask)
- {
- increment = (mask + 1) >> 1;
- if ((mantissa & mask) == increment)
- increment = mantissa & (increment << 1);
- mantissa += increment;
- if (mantissa >= 0x01000000)
- {
- mantissa >>= 1;
- aexp++;
- }
- }
-
- if (ieee)
- {
- if (aexp > 15)
- return sign | 0x7c00;
- }
- else
- {
- if (aexp > 16)
- return sign | 0x7fff;
- }
-
- if (aexp < -24)
- return sign;
-
- if (aexp < -14)
- {
- mantissa >>= -14 - aexp;
- aexp = -14;
- }
-
- /* We leave the leading 1 in the mantissa, and subtract one
- from the exponent bias to compensate. */
- return sign | (((aexp + 14) << 10) + (mantissa >> 13));
-}
-
-unsigned int
-__gnu_h2f_internal(unsigned short a, int ieee)
-{
- unsigned int sign = (unsigned int)(a & 0x8000) << 16;
- int aexp = (a >> 10) & 0x1f;
- unsigned int mantissa = a & 0x3ff;
-
- if (aexp == 0x1f && ieee)
- return sign | 0x7f800000 | (mantissa << 13);
-
- if (aexp == 0)
- {
- int shift;
-
- if (mantissa == 0)
- return sign;
-
- shift = __builtin_clz(mantissa) - 21;
- mantissa <<= shift;
- aexp = -shift;
- }
-
- return sign | (((aexp + 0x70) << 23) + (mantissa << 13));
-}
-
-unsigned short
-__gnu_f2h_ieee(unsigned int a)
-{
- return __gnu_f2h_internal(a, 1);
-}
-
-unsigned int
-__gnu_h2f_ieee(unsigned short a)
-{
- return __gnu_h2f_internal(a, 1);
-}
-
-unsigned short
-__gnu_f2h_alternative(unsigned int x)
-{
- return __gnu_f2h_internal(x, 0);
-}
-
-unsigned int
-__gnu_h2f_alternative(unsigned short a)
-{
- return __gnu_h2f_internal(a, 0);
-}
diff --git a/gcc/config/arm/linux-atomic-64bit.c b/gcc/config/arm/linux-atomic-64bit.c
deleted file mode 100644
index af94c7f4ae5..00000000000
--- a/gcc/config/arm/linux-atomic-64bit.c
+++ /dev/null
@@ -1,166 +0,0 @@
-/* 64bit Linux-specific atomic operations for ARM EABI.
- Copyright (C) 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
- Based on linux-atomic.c
-
- 64 bit additions david.gilbert@linaro.org
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/* 64bit helper functions for atomic operations; the compiler will
- call these when the code is compiled for a CPU without ldrexd/strexd.
- (If the CPU had those then the compiler inlines the operation).
-
- These helpers require a kernel helper that's only present on newer
- kernels; we check for that in an init section and bail out rather
- unceremoneously. */
-
-extern unsigned int __write (int fd, const void *buf, unsigned int count);
-extern void abort (void);
-
-/* Kernel helper for compare-and-exchange. */
-typedef int (__kernel_cmpxchg64_t) (const long long* oldval,
- const long long* newval,
- long long *ptr);
-#define __kernel_cmpxchg64 (*(__kernel_cmpxchg64_t *) 0xffff0f60)
-
-/* Kernel helper page version number. */
-#define __kernel_helper_version (*(unsigned int *)0xffff0ffc)
-
-/* Check that the kernel has a new enough version at load. */
-static void __check_for_sync8_kernelhelper (void)
-{
- if (__kernel_helper_version < 5)
- {
- const char err[] = "A newer kernel is required to run this binary. "
- "(__kernel_cmpxchg64 helper)\n";
- /* At this point we need a way to crash with some information
- for the user - I'm not sure I can rely on much else being
- available at this point, so do the same as generic-morestack.c
- write () and abort (). */
- __write (2 /* stderr. */, err, sizeof (err));
- abort ();
- }
-};
-
-static void (*__sync8_kernelhelper_inithook[]) (void)
- __attribute__ ((used, section (".init_array"))) = {
- &__check_for_sync8_kernelhelper
-};
-
-#define HIDDEN __attribute__ ((visibility ("hidden")))
-
-#define FETCH_AND_OP_WORD64(OP, PFX_OP, INF_OP) \
- long long HIDDEN \
- __sync_fetch_and_##OP##_8 (long long *ptr, long long val) \
- { \
- int failure; \
- long long tmp,tmp2; \
- \
- do { \
- tmp = *ptr; \
- tmp2 = PFX_OP (tmp INF_OP val); \
- failure = __kernel_cmpxchg64 (&tmp, &tmp2, ptr); \
- } while (failure != 0); \
- \
- return tmp; \
- }
-
-FETCH_AND_OP_WORD64 (add, , +)
-FETCH_AND_OP_WORD64 (sub, , -)
-FETCH_AND_OP_WORD64 (or, , |)
-FETCH_AND_OP_WORD64 (and, , &)
-FETCH_AND_OP_WORD64 (xor, , ^)
-FETCH_AND_OP_WORD64 (nand, ~, &)
-
-#define NAME_oldval(OP, WIDTH) __sync_fetch_and_##OP##_##WIDTH
-#define NAME_newval(OP, WIDTH) __sync_##OP##_and_fetch_##WIDTH
-
-/* Implement both __sync_<op>_and_fetch and __sync_fetch_and_<op> for
- subword-sized quantities. */
-
-#define OP_AND_FETCH_WORD64(OP, PFX_OP, INF_OP) \
- long long HIDDEN \
- __sync_##OP##_and_fetch_8 (long long *ptr, long long val) \
- { \
- int failure; \
- long long tmp,tmp2; \
- \
- do { \
- tmp = *ptr; \
- tmp2 = PFX_OP (tmp INF_OP val); \
- failure = __kernel_cmpxchg64 (&tmp, &tmp2, ptr); \
- } while (failure != 0); \
- \
- return tmp2; \
- }
-
-OP_AND_FETCH_WORD64 (add, , +)
-OP_AND_FETCH_WORD64 (sub, , -)
-OP_AND_FETCH_WORD64 (or, , |)
-OP_AND_FETCH_WORD64 (and, , &)
-OP_AND_FETCH_WORD64 (xor, , ^)
-OP_AND_FETCH_WORD64 (nand, ~, &)
-
-long long HIDDEN
-__sync_val_compare_and_swap_8 (long long *ptr, long long oldval,
- long long newval)
-{
- int failure;
- long long actual_oldval;
-
- while (1)
- {
- actual_oldval = *ptr;
-
- if (__builtin_expect (oldval != actual_oldval, 0))
- return actual_oldval;
-
- failure = __kernel_cmpxchg64 (&actual_oldval, &newval, ptr);
-
- if (__builtin_expect (!failure, 1))
- return oldval;
- }
-}
-
-typedef unsigned char bool;
-
-bool HIDDEN
-__sync_bool_compare_and_swap_8 (long long *ptr, long long oldval,
- long long newval)
-{
- int failure = __kernel_cmpxchg64 (&oldval, &newval, ptr);
- return (failure == 0);
-}
-
-long long HIDDEN
-__sync_lock_test_and_set_8 (long long *ptr, long long val)
-{
- int failure;
- long long oldval;
-
- do {
- oldval = *ptr;
- failure = __kernel_cmpxchg64 (&oldval, &val, ptr);
- } while (failure != 0);
-
- return oldval;
-}
diff --git a/gcc/config/arm/linux-atomic.c b/gcc/config/arm/linux-atomic.c
deleted file mode 100644
index 80f161d06a7..00000000000
--- a/gcc/config/arm/linux-atomic.c
+++ /dev/null
@@ -1,279 +0,0 @@
-/* Linux-specific atomic operations for ARM EABI.
- Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
- Contributed by CodeSourcery.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/* Kernel helper for compare-and-exchange. */
-typedef int (__kernel_cmpxchg_t) (int oldval, int newval, int *ptr);
-#define __kernel_cmpxchg (*(__kernel_cmpxchg_t *) 0xffff0fc0)
-
-/* Kernel helper for memory barrier. */
-typedef void (__kernel_dmb_t) (void);
-#define __kernel_dmb (*(__kernel_dmb_t *) 0xffff0fa0)
-
-/* Note: we implement byte, short and int versions of atomic operations using
- the above kernel helpers; see linux-atomic-64bit.c for "long long" (64-bit)
- operations. */
-
-#define HIDDEN __attribute__ ((visibility ("hidden")))
-
-#ifdef __ARMEL__
-#define INVERT_MASK_1 0
-#define INVERT_MASK_2 0
-#else
-#define INVERT_MASK_1 24
-#define INVERT_MASK_2 16
-#endif
-
-#define MASK_1 0xffu
-#define MASK_2 0xffffu
-
-#define FETCH_AND_OP_WORD(OP, PFX_OP, INF_OP) \
- int HIDDEN \
- __sync_fetch_and_##OP##_4 (int *ptr, int val) \
- { \
- int failure, tmp; \
- \
- do { \
- tmp = *ptr; \
- failure = __kernel_cmpxchg (tmp, PFX_OP (tmp INF_OP val), ptr); \
- } while (failure != 0); \
- \
- return tmp; \
- }
-
-FETCH_AND_OP_WORD (add, , +)
-FETCH_AND_OP_WORD (sub, , -)
-FETCH_AND_OP_WORD (or, , |)
-FETCH_AND_OP_WORD (and, , &)
-FETCH_AND_OP_WORD (xor, , ^)
-FETCH_AND_OP_WORD (nand, ~, &)
-
-#define NAME_oldval(OP, WIDTH) __sync_fetch_and_##OP##_##WIDTH
-#define NAME_newval(OP, WIDTH) __sync_##OP##_and_fetch_##WIDTH
-
-/* Implement both __sync_<op>_and_fetch and __sync_fetch_and_<op> for
- subword-sized quantities. */
-
-#define SUBWORD_SYNC_OP(OP, PFX_OP, INF_OP, TYPE, WIDTH, RETURN) \
- TYPE HIDDEN \
- NAME##_##RETURN (OP, WIDTH) (TYPE *ptr, TYPE val) \
- { \
- int *wordptr = (int *) ((unsigned int) ptr & ~3); \
- unsigned int mask, shift, oldval, newval; \
- int failure; \
- \
- shift = (((unsigned int) ptr & 3) << 3) ^ INVERT_MASK_##WIDTH; \
- mask = MASK_##WIDTH << shift; \
- \
- do { \
- oldval = *wordptr; \
- newval = ((PFX_OP (((oldval & mask) >> shift) \
- INF_OP (unsigned int) val)) << shift) & mask; \
- newval |= oldval & ~mask; \
- failure = __kernel_cmpxchg (oldval, newval, wordptr); \
- } while (failure != 0); \
- \
- return (RETURN & mask) >> shift; \
- }
-
-SUBWORD_SYNC_OP (add, , +, unsigned short, 2, oldval)
-SUBWORD_SYNC_OP (sub, , -, unsigned short, 2, oldval)
-SUBWORD_SYNC_OP (or, , |, unsigned short, 2, oldval)
-SUBWORD_SYNC_OP (and, , &, unsigned short, 2, oldval)
-SUBWORD_SYNC_OP (xor, , ^, unsigned short, 2, oldval)
-SUBWORD_SYNC_OP (nand, ~, &, unsigned short, 2, oldval)
-
-SUBWORD_SYNC_OP (add, , +, unsigned char, 1, oldval)
-SUBWORD_SYNC_OP (sub, , -, unsigned char, 1, oldval)
-SUBWORD_SYNC_OP (or, , |, unsigned char, 1, oldval)
-SUBWORD_SYNC_OP (and, , &, unsigned char, 1, oldval)
-SUBWORD_SYNC_OP (xor, , ^, unsigned char, 1, oldval)
-SUBWORD_SYNC_OP (nand, ~, &, unsigned char, 1, oldval)
-
-#define OP_AND_FETCH_WORD(OP, PFX_OP, INF_OP) \
- int HIDDEN \
- __sync_##OP##_and_fetch_4 (int *ptr, int val) \
- { \
- int tmp, failure; \
- \
- do { \
- tmp = *ptr; \
- failure = __kernel_cmpxchg (tmp, PFX_OP (tmp INF_OP val), ptr); \
- } while (failure != 0); \
- \
- return PFX_OP (tmp INF_OP val); \
- }
-
-OP_AND_FETCH_WORD (add, , +)
-OP_AND_FETCH_WORD (sub, , -)
-OP_AND_FETCH_WORD (or, , |)
-OP_AND_FETCH_WORD (and, , &)
-OP_AND_FETCH_WORD (xor, , ^)
-OP_AND_FETCH_WORD (nand, ~, &)
-
-SUBWORD_SYNC_OP (add, , +, unsigned short, 2, newval)
-SUBWORD_SYNC_OP (sub, , -, unsigned short, 2, newval)
-SUBWORD_SYNC_OP (or, , |, unsigned short, 2, newval)
-SUBWORD_SYNC_OP (and, , &, unsigned short, 2, newval)
-SUBWORD_SYNC_OP (xor, , ^, unsigned short, 2, newval)
-SUBWORD_SYNC_OP (nand, ~, &, unsigned short, 2, newval)
-
-SUBWORD_SYNC_OP (add, , +, unsigned char, 1, newval)
-SUBWORD_SYNC_OP (sub, , -, unsigned char, 1, newval)
-SUBWORD_SYNC_OP (or, , |, unsigned char, 1, newval)
-SUBWORD_SYNC_OP (and, , &, unsigned char, 1, newval)
-SUBWORD_SYNC_OP (xor, , ^, unsigned char, 1, newval)
-SUBWORD_SYNC_OP (nand, ~, &, unsigned char, 1, newval)
-
-int HIDDEN
-__sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval)
-{
- int actual_oldval, fail;
-
- while (1)
- {
- actual_oldval = *ptr;
-
- if (__builtin_expect (oldval != actual_oldval, 0))
- return actual_oldval;
-
- fail = __kernel_cmpxchg (actual_oldval, newval, ptr);
-
- if (__builtin_expect (!fail, 1))
- return oldval;
- }
-}
-
-#define SUBWORD_VAL_CAS(TYPE, WIDTH) \
- TYPE HIDDEN \
- __sync_val_compare_and_swap_##WIDTH (TYPE *ptr, TYPE oldval, \
- TYPE newval) \
- { \
- int *wordptr = (int *)((unsigned int) ptr & ~3), fail; \
- unsigned int mask, shift, actual_oldval, actual_newval; \
- \
- shift = (((unsigned int) ptr & 3) << 3) ^ INVERT_MASK_##WIDTH; \
- mask = MASK_##WIDTH << shift; \
- \
- while (1) \
- { \
- actual_oldval = *wordptr; \
- \
- if (__builtin_expect (((actual_oldval & mask) >> shift) != \
- (unsigned int) oldval, 0)) \
- return (actual_oldval & mask) >> shift; \
- \
- actual_newval = (actual_oldval & ~mask) \
- | (((unsigned int) newval << shift) & mask); \
- \
- fail = __kernel_cmpxchg (actual_oldval, actual_newval, \
- wordptr); \
- \
- if (__builtin_expect (!fail, 1)) \
- return oldval; \
- } \
- }
-
-SUBWORD_VAL_CAS (unsigned short, 2)
-SUBWORD_VAL_CAS (unsigned char, 1)
-
-typedef unsigned char bool;
-
-bool HIDDEN
-__sync_bool_compare_and_swap_4 (int *ptr, int oldval, int newval)
-{
- int failure = __kernel_cmpxchg (oldval, newval, ptr);
- return (failure == 0);
-}
-
-#define SUBWORD_BOOL_CAS(TYPE, WIDTH) \
- bool HIDDEN \
- __sync_bool_compare_and_swap_##WIDTH (TYPE *ptr, TYPE oldval, \
- TYPE newval) \
- { \
- TYPE actual_oldval \
- = __sync_val_compare_and_swap_##WIDTH (ptr, oldval, newval); \
- return (oldval == actual_oldval); \
- }
-
-SUBWORD_BOOL_CAS (unsigned short, 2)
-SUBWORD_BOOL_CAS (unsigned char, 1)
-
-void HIDDEN
-__sync_synchronize (void)
-{
- __kernel_dmb ();
-}
-
-int HIDDEN
-__sync_lock_test_and_set_4 (int *ptr, int val)
-{
- int failure, oldval;
-
- do {
- oldval = *ptr;
- failure = __kernel_cmpxchg (oldval, val, ptr);
- } while (failure != 0);
-
- return oldval;
-}
-
-#define SUBWORD_TEST_AND_SET(TYPE, WIDTH) \
- TYPE HIDDEN \
- __sync_lock_test_and_set_##WIDTH (TYPE *ptr, TYPE val) \
- { \
- int failure; \
- unsigned int oldval, newval, shift, mask; \
- int *wordptr = (int *) ((unsigned int) ptr & ~3); \
- \
- shift = (((unsigned int) ptr & 3) << 3) ^ INVERT_MASK_##WIDTH; \
- mask = MASK_##WIDTH << shift; \
- \
- do { \
- oldval = *wordptr; \
- newval = (oldval & ~mask) \
- | (((unsigned int) val << shift) & mask); \
- failure = __kernel_cmpxchg (oldval, newval, wordptr); \
- } while (failure != 0); \
- \
- return (oldval & mask) >> shift; \
- }
-
-SUBWORD_TEST_AND_SET (unsigned short, 2)
-SUBWORD_TEST_AND_SET (unsigned char, 1)
-
-#define SYNC_LOCK_RELEASE(TYPE, WIDTH) \
- void HIDDEN \
- __sync_lock_release_##WIDTH (TYPE *ptr) \
- { \
- /* All writes before this point must be seen before we release \
- the lock itself. */ \
- __kernel_dmb (); \
- *ptr = 0; \
- }
-
-SYNC_LOCK_RELEASE (long long, 8)
-SYNC_LOCK_RELEASE (int, 4)
-SYNC_LOCK_RELEASE (short, 2)
-SYNC_LOCK_RELEASE (char, 1)
diff --git a/gcc/config/arm/t-arm-elf b/gcc/config/arm/t-arm-elf
index a605d26244f..25b7acb5da4 100644
--- a/gcc/config/arm/t-arm-elf
+++ b/gcc/config/arm/t-arm-elf
@@ -89,11 +89,3 @@ MULTILIB_EXCEPTIONS += *mthumb/*mfloat-abi=hard*
# MULTILIB_MATCHES += mcpu?arm7=mcpu?arm600
# MULTILIB_MATCHES += mcpu?arm7=mcpu?arm610
# MULTILIB_MATCHES += mcpu?arm7=mcpu?arm620
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
-
-# Currently there is a bug somewhere in GCC's alias analysis
-# or scheduling code that is breaking _fpmul_parts in fp-bit.c.
-# Disabling function inlining is a workaround for this problem.
-TARGET_LIBGCC2_CFLAGS = -fno-inline
diff --git a/gcc/config/arm/t-bpabi b/gcc/config/arm/t-bpabi
deleted file mode 100644
index c9d5ed4d674..00000000000
--- a/gcc/config/arm/t-bpabi
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright (C) 2004, 2005, 2011 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-# Add the BPABI C functions.
-LIB2FUNCS_EXTRA = $(srcdir)/config/arm/bpabi.c \
- $(srcdir)/config/arm/unaligned-funcs.c
-
-LIB2FUNCS_STATIC_EXTRA = $(srcdir)/config/arm/fp16.c
-EXTRA_HEADERS += $(srcdir)/ginclude/unwind-arm-common.h
diff --git a/gcc/config/arm/t-linux b/gcc/config/arm/t-linux
deleted file mode 100644
index a204834014e..00000000000
--- a/gcc/config/arm/t-linux
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2006,
-# 2008, 2011 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-# Just for these, we omit the frame pointer since it makes such a big
-# difference.
-TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fPIC
-
-# MULTILIB_OPTIONS = mfloat-abi=hard/mfloat-abi=soft
-# MULTILIB_DIRNAMES = hard-float soft-float
-
-# LIBGCC = stmp-multilib
-# INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/arm/t-linux-eabi b/gcc/config/arm/t-linux-eabi
index 3030229fafa..8004a7d0155 100644
--- a/gcc/config/arm/t-linux-eabi
+++ b/gcc/config/arm/t-linux-eabi
@@ -16,9 +16,6 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-# These functions are included in shared libraries.
-TARGET_LIBGCC2_CFLAGS = -fPIC
-
# We do not build a Thumb multilib for Linux because the definition of
# CLEAR_INSN_CACHE in linux-gas.h does not work in Thumb mode.
MULTILIB_OPTIONS =
@@ -27,6 +24,3 @@ MULTILIB_DIRNAMES =
#MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te
#MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te
#MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te*
-
-LIB2FUNCS_STATIC_EXTRA += $(srcdir)/config/arm/linux-atomic.c
-LIB2FUNCS_STATIC_EXTRA += $(srcdir)/config/arm/linux-atomic-64bit.c
diff --git a/gcc/config/arm/t-netbsd b/gcc/config/arm/t-netbsd
deleted file mode 100644
index d659b5a568f..00000000000
--- a/gcc/config/arm/t-netbsd
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
-# 2006, 2011 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-# Just for these, we omit the frame pointer since it makes such a big
-# difference. It is then pointless adding debugging.
-TARGET_LIBGCC2_CFLAGS = -fomit-frame-pointer -fpic
-LIBGCC2_DEBUG_CFLAGS = -g0
-LIB2FUNCS_EXTRA = $(srcdir)/config/floatunsidf.c $(srcdir)/config/floatunsisf.c
diff --git a/gcc/config/arm/t-strongarm-elf b/gcc/config/arm/t-strongarm-elf
index 4d51e660c8b..0639e695800 100644
--- a/gcc/config/arm/t-strongarm-elf
+++ b/gcc/config/arm/t-strongarm-elf
@@ -21,11 +21,3 @@ MULTILIB_OPTIONS = mlittle-endian/mbig-endian mfloat-abi=hard/mfloat-abi=sof
MULTILIB_DIRNAMES = le be fpu soft
MULTILIB_EXCEPTIONS =
MULTILIB_MATCHES = mbig-endian=mbe mlittle-endian=mle
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
-
-# Currently there is a bug somewhere in GCC's alias analysis
-# or scheduling code that is breaking _fpmul_parts in fp-bit.c.
-# Disabling function inlining is a workaround for this problem.
-TARGET_LIBGCC2_CFLAGS = -fno-inline
diff --git a/gcc/config/arm/t-symbian b/gcc/config/arm/t-symbian
index 736a01d10f4..473957e3290 100644
--- a/gcc/config/arm/t-symbian
+++ b/gcc/config/arm/t-symbian
@@ -17,8 +17,6 @@
# <http://www.gnu.org/licenses/>.
EXTRA_HEADERS += $(srcdir)/ginclude/unwind-arm-common.h
-# Include half-float helpers.
-LIB2FUNCS_STATIC_EXTRA = $(srcdir)/config/arm/fp16.c
# Create a multilib for processors with VFP floating-point, and a
# multilib for those without -- using the soft-float ABI in both
diff --git a/gcc/config/arm/t-wince-pe b/gcc/config/arm/t-wince-pe
index 8a8c65fd396..becda7f25a4 100644
--- a/gcc/config/arm/t-wince-pe
+++ b/gcc/config/arm/t-wince-pe
@@ -29,7 +29,3 @@ MULTILIB_DIRNAMES = fpu
# yet...
# MULTILIB_OPTIONS += thumb
# MULTILIB_DIRNAMES += thumb
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
-TARGET_LIBGCC2_CFLAGS =
diff --git a/gcc/config/arm/unaligned-funcs.c b/gcc/config/arm/unaligned-funcs.c
deleted file mode 100644
index 4e684f4fc94..00000000000
--- a/gcc/config/arm/unaligned-funcs.c
+++ /dev/null
@@ -1,57 +0,0 @@
-/* EABI unaligned read/write functions.
-
- Copyright (C) 2005, 2009 Free Software Foundation, Inc.
- Contributed by CodeSourcery, LLC.
-
- This file is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published by the
- Free Software Foundation; either version 3, or (at your option) any
- later version.
-
- This file 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
- General Public License for more details.
-
- Under Section 7 of GPL version 3, you are granted additional
- permissions described in the GCC Runtime Library Exception, version
- 3.1, as published by the Free Software Foundation.
-
- You should have received a copy of the GNU General Public License and
- a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
-int __aeabi_uread4 (void *);
-int __aeabi_uwrite4 (int, void *);
-long long __aeabi_uread8 (void *);
-long long __aeabi_uwrite8 (long long, void *);
-
-struct __attribute__((packed)) u4 { int data; };
-struct __attribute__((packed)) u8 { long long data; };
-
-int
-__aeabi_uread4 (void *ptr)
-{
- return ((struct u4 *) ptr)->data;
-}
-
-int
-__aeabi_uwrite4 (int data, void *ptr)
-{
- ((struct u4 *) ptr)->data = data;
- return data;
-}
-
-long long
-__aeabi_uread8 (void *ptr)
-{
- return ((struct u8 *) ptr)->data;
-}
-
-long long
-__aeabi_uwrite8 (long long data, void *ptr)
-{
- ((struct u8 *) ptr)->data = data;
- return data;
-}
diff --git a/gcc/config/avr/t-avr b/gcc/config/avr/t-avr
index 3f37e591f8e..ee2dc56ced6 100644
--- a/gcc/config/avr/t-avr
+++ b/gcc/config/avr/t-avr
@@ -39,14 +39,6 @@ $(srcdir)/config/avr/avr-tables.opt: $(srcdir)/config/avr/genopt.sh \
$(SHELL) $(srcdir)/config/avr/genopt.sh $(srcdir)/config/avr > \
$(srcdir)/config/avr/avr-tables.opt
-LIB2FUNCS_EXCLUDE = \
- _clz
-
-# We do not have the DF type.
-# Most of the C functions in libgcc2 use almost all registers,
-# so use -mcall-prologues for smaller code size.
-TARGET_LIBGCC2_CFLAGS = -DDF=SF -Dinhibit_libc -mcall-prologues -Os
-
MULTILIB_OPTIONS = mmcu=avr2/mmcu=avr25/mmcu=avr3/mmcu=avr31/mmcu=avr35/mmcu=avr4/mmcu=avr5/mmcu=avr51/mmcu=avr6
MULTILIB_DIRNAMES = avr2 avr25 avr3 avr31 avr35 avr4 avr5 avr51 avr6
@@ -195,6 +187,3 @@ MULTILIB_MATCHES = \
mmcu?avr6=mmcu?atmega2561
MULTILIB_EXCEPTIONS =
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/bfin/t-bfin-elf b/gcc/config/bfin/t-bfin-elf
index 5cbcfeeb87f..742740ebc44 100644
--- a/gcc/config/bfin/t-bfin-elf
+++ b/gcc/config/bfin/t-bfin-elf
@@ -18,8 +18,6 @@
## Target part of the Makefile
-TARGET_LIBGCC2_CFLAGS = -fpic
-
MULTILIB_OPTIONS=mcpu=bf532-none
MULTILIB_OPTIONS+=mid-shared-library/msep-data/mfdpic mleaf-id-shared-library
MULTILIB_DIRNAMES=bf532-none mid-shared-library msep-data mfdpic mleaf-id-shared-library
diff --git a/gcc/config/bfin/t-bfin-linux b/gcc/config/bfin/t-bfin-linux
index 9a1d6a09437..7d25358c265 100644
--- a/gcc/config/bfin/t-bfin-linux
+++ b/gcc/config/bfin/t-bfin-linux
@@ -18,8 +18,6 @@
## Target part of the Makefile
-TARGET_LIBGCC2_CFLAGS = -fpic
-
MULTILIB_OPTIONS=mcpu=bf532-none
MULTILIB_DIRNAMES=bf532-none
diff --git a/gcc/config/bfin/t-bfin-uclinux b/gcc/config/bfin/t-bfin-uclinux
index b9fca803e0a..e3e9b13e712 100644
--- a/gcc/config/bfin/t-bfin-uclinux
+++ b/gcc/config/bfin/t-bfin-uclinux
@@ -18,8 +18,6 @@
## Target part of the Makefile
-TARGET_LIBGCC2_CFLAGS = -fpic
-
MULTILIB_OPTIONS=mcpu=bf532-none
MULTILIB_OPTIONS+=mid-shared-library/msep-data mleaf-id-shared-library
MULTILIB_DIRNAMES=bf532-none mid-shared-library msep-data mleaf-id-shared-library
diff --git a/gcc/config/c6x/eqd.c b/gcc/config/c6x/eqd.c
deleted file mode 100644
index d6b32013bcb..00000000000
--- a/gcc/config/c6x/eqd.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Software floating-point emulation.
- Return 1 iff a == b, 0 otherwise.
- Copyright (C) 1997,1999,2006,2007,2011 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- This file 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.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- This file 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 GCC; see the file COPYING.LIB. If not see
- <http://www.gnu.org/licenses/>. */
-
-#include <soft-fp/soft-fp.h>
-#include <soft-fp/double.h>
-
-CMPtype __c6xabi_eqd(DFtype a, DFtype b)
-{
- FP_DECL_EX;
- FP_DECL_D(A); FP_DECL_D(B);
- CMPtype r;
-
- FP_UNPACK_RAW_D(A, a);
- FP_UNPACK_RAW_D(B, b);
- FP_CMP_EQ_D(r, A, B);
- if (r && (FP_ISSIGNAN_D(A) || FP_ISSIGNAN_D(B)))
- FP_SET_EXCEPTION(FP_EX_INVALID);
- FP_HANDLE_EXCEPTIONS;
-
- return !r;
-}
diff --git a/gcc/config/c6x/eqf.c b/gcc/config/c6x/eqf.c
deleted file mode 100644
index ee6dafc98b7..00000000000
--- a/gcc/config/c6x/eqf.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Software floating-point emulation.
- Return 1 iff a == b, 0 otherwise.
- Copyright (C) 1997,1999,2006,2007,2011 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- This file 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.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- This file 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 GCC; see the file COPYING.LIB. If not see
- <http://www.gnu.org/licenses/>. */
-
-#include <soft-fp/soft-fp.h>
-#include <soft-fp/single.h>
-
-CMPtype __c6xabi_eqf(SFtype a, SFtype b)
-{
- FP_DECL_EX;
- FP_DECL_S(A); FP_DECL_S(B);
- CMPtype r;
-
- FP_UNPACK_RAW_S(A, a);
- FP_UNPACK_RAW_S(B, b);
- FP_CMP_EQ_S(r, A, B);
- if (r && (FP_ISSIGNAN_S(A) || FP_ISSIGNAN_S(B)))
- FP_SET_EXCEPTION(FP_EX_INVALID);
- FP_HANDLE_EXCEPTIONS;
-
- return !r;
-}
diff --git a/gcc/config/c6x/ged.c b/gcc/config/c6x/ged.c
deleted file mode 100644
index 2089904f92a..00000000000
--- a/gcc/config/c6x/ged.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Software floating-point emulation.
- Return 1 iff a >= b, 0 otherwise.
- Copyright (C) 1997,1999,2006,2007,2011 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- This file 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.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- This file 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 GCC; see the file COPYING.LIB. If not see
- <http://www.gnu.org/licenses/>. */
-
-#include <soft-fp/soft-fp.h>
-#include <soft-fp/double.h>
-
-CMPtype __c6xabi_ged(DFtype a, DFtype b)
-{
- FP_DECL_EX;
- FP_DECL_D(A); FP_DECL_D(B);
- CMPtype r;
-
- FP_UNPACK_RAW_D(A, a);
- FP_UNPACK_RAW_D(B, b);
- FP_CMP_D(r, A, B, -2);
- if (r == -2 && (FP_ISSIGNAN_D(A) || FP_ISSIGNAN_D(B)))
- FP_SET_EXCEPTION(FP_EX_INVALID);
- FP_HANDLE_EXCEPTIONS;
-
- return r >= 0;
-}
diff --git a/gcc/config/c6x/gef.c b/gcc/config/c6x/gef.c
deleted file mode 100644
index ce4c1c0af3d..00000000000
--- a/gcc/config/c6x/gef.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Software floating-point emulation.
- Return 1 iff a >= b, 0 otherwise.
- Copyright (C) 1997,1999,2006,2007 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- This file 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.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- This file 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 GCC; see the file COPYING.LIB. If not see
- <http://www.gnu.org/licenses/>. */
-
-#include <soft-fp/soft-fp.h>
-#include <soft-fp/single.h>
-
-CMPtype __c6xabi_gef(SFtype a, SFtype b)
-{
- FP_DECL_EX;
- FP_DECL_S(A); FP_DECL_S(B);
- CMPtype r;
-
- FP_UNPACK_RAW_S(A, a);
- FP_UNPACK_RAW_S(B, b);
- FP_CMP_S(r, A, B, -2);
- if (r == -2 && (FP_ISSIGNAN_S(A) || FP_ISSIGNAN_S(B)))
- FP_SET_EXCEPTION(FP_EX_INVALID);
- FP_HANDLE_EXCEPTIONS;
-
- return r >= 0;
-}
diff --git a/gcc/config/c6x/gtd.c b/gcc/config/c6x/gtd.c
deleted file mode 100644
index 6d45aef9af8..00000000000
--- a/gcc/config/c6x/gtd.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Software floating-point emulation.
- Return 1 iff a > b, 0 otherwise.
- Copyright (C) 1997,1999,2006,2007,2011 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- This file 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.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- This file 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 GCC; see the file COPYING.LIB. If not see
- <http://www.gnu.org/licenses/>. */
-
-#include <soft-fp/soft-fp.h>
-#include <soft-fp/double.h>
-
-CMPtype __c6xabi_gtd(DFtype a, DFtype b)
-{
- FP_DECL_EX;
- FP_DECL_D(A); FP_DECL_D(B);
- CMPtype r;
-
- FP_UNPACK_RAW_D(A, a);
- FP_UNPACK_RAW_D(B, b);
- FP_CMP_D(r, A, B, -2);
- if (r == -2 && (FP_ISSIGNAN_D(A) || FP_ISSIGNAN_D(B)))
- FP_SET_EXCEPTION(FP_EX_INVALID);
- FP_HANDLE_EXCEPTIONS;
-
- return r > 0;
-}
diff --git a/gcc/config/c6x/gtf.c b/gcc/config/c6x/gtf.c
deleted file mode 100644
index c6a108a2833..00000000000
--- a/gcc/config/c6x/gtf.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Software floating-point emulation.
- Return 1 iff a > b, 0 otherwise.
- Copyright (C) 1997,1999,2006,2007,2011 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- This file 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.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- This file 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 GCC; see the file COPYING.LIB. If not see
- <http://www.gnu.org/licenses/>. */
-
-#include <soft-fp/soft-fp.h>
-#include <soft-fp/single.h>
-
-CMPtype __c6xabi_gtf(SFtype a, SFtype b)
-{
- FP_DECL_EX;
- FP_DECL_S(A); FP_DECL_S(B);
- CMPtype r;
-
- FP_UNPACK_RAW_S(A, a);
- FP_UNPACK_RAW_S(B, b);
- FP_CMP_S(r, A, B, -2);
- if (r == -2 && (FP_ISSIGNAN_S(A) || FP_ISSIGNAN_S(B)))
- FP_SET_EXCEPTION(FP_EX_INVALID);
- FP_HANDLE_EXCEPTIONS;
-
- return r > 0;
-}
diff --git a/gcc/config/c6x/led.c b/gcc/config/c6x/led.c
deleted file mode 100644
index c99e29e0ddf..00000000000
--- a/gcc/config/c6x/led.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Software floating-point emulation.
- Return 1 iff a <= b, 0 otherwise.
- Copyright (C) 1997,1999,2006,2007,2011 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- This file 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.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- This file 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 GCC; see the file COPYING.LIB. If not see
- <http://www.gnu.org/licenses/>. */
-
-#include <soft-fp/soft-fp.h>
-#include <soft-fp/double.h>
-
-CMPtype __c6xabi_led(DFtype a, DFtype b)
-{
- FP_DECL_EX;
- FP_DECL_D(A); FP_DECL_D(B);
- CMPtype r;
-
- FP_UNPACK_RAW_D(A, a);
- FP_UNPACK_RAW_D(B, b);
- FP_CMP_D(r, A, B, 2);
- if (r == 2 && (FP_ISSIGNAN_D(A) || FP_ISSIGNAN_D(B)))
- FP_SET_EXCEPTION(FP_EX_INVALID);
- FP_HANDLE_EXCEPTIONS;
-
- return r <= 0;
-}
diff --git a/gcc/config/c6x/lef.c b/gcc/config/c6x/lef.c
deleted file mode 100644
index ce2c16f8ede..00000000000
--- a/gcc/config/c6x/lef.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Software floating-point emulation.
- Return 1 iff a <= b, 0 otherwise.
- Copyright (C) 1997,1999,2006,2007,2011 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- This file 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.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- This file 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 GCC; see the file COPYING.LIB. If not see
- <http://www.gnu.org/licenses/>. */
-
-#include <soft-fp/soft-fp.h>
-#include <soft-fp/single.h>
-
-CMPtype __c6xabi_lef(SFtype a, SFtype b)
-{
- FP_DECL_EX;
- FP_DECL_S(A); FP_DECL_S(B);
- CMPtype r;
-
- FP_UNPACK_RAW_S(A, a);
- FP_UNPACK_RAW_S(B, b);
- FP_CMP_S(r, A, B, 2);
- if (r == 2 && (FP_ISSIGNAN_S(A) || FP_ISSIGNAN_S(B)))
- FP_SET_EXCEPTION(FP_EX_INVALID);
- FP_HANDLE_EXCEPTIONS;
-
- return r <= 0;
-}
diff --git a/gcc/config/c6x/ltd.c b/gcc/config/c6x/ltd.c
deleted file mode 100644
index d4de25866b7..00000000000
--- a/gcc/config/c6x/ltd.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Software floating-point emulation.
- Return 1 iff a < b, 0 otherwise.
- Copyright (C) 1997,1999,2006,2007,2011 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- This file 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.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- This file 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 GCC; see the file COPYING.LIB. If not see
- <http://www.gnu.org/licenses/>. */
-
-#include <soft-fp/soft-fp.h>
-#include <soft-fp/double.h>
-
-CMPtype __c6xabi_ltd(DFtype a, DFtype b)
-{
- FP_DECL_EX;
- FP_DECL_D(A); FP_DECL_D(B);
- CMPtype r;
-
- FP_UNPACK_RAW_D(A, a);
- FP_UNPACK_RAW_D(B, b);
- FP_CMP_D(r, A, B, 2);
- if (r == 2 && (FP_ISSIGNAN_D(A) || FP_ISSIGNAN_D(B)))
- FP_SET_EXCEPTION(FP_EX_INVALID);
- FP_HANDLE_EXCEPTIONS;
-
- return r < 0;
-}
diff --git a/gcc/config/c6x/ltf.c b/gcc/config/c6x/ltf.c
deleted file mode 100644
index 2fe15b99fde..00000000000
--- a/gcc/config/c6x/ltf.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Software floating-point emulation.
- Return 1 iff a < b, 0 otherwise.
- Copyright (C) 1997,1999,2006,2007,2011 Free Software Foundation, Inc.
- Contributed by Richard Henderson (rth@cygnus.com) and
- Jakub Jelinek (jj@ultra.linux.cz).
-
- This file 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.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- This file 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 GCC; see the file COPYING.LIB. If not see
- <http://www.gnu.org/licenses/>. */
-
-#include <soft-fp/soft-fp.h>
-#include <soft-fp/single.h>
-
-CMPtype __c6xabi_ltf(SFtype a, SFtype b)
-{
- FP_DECL_EX;
- FP_DECL_S(A); FP_DECL_S(B);
- CMPtype r;
-
- FP_UNPACK_RAW_S(A, a);
- FP_UNPACK_RAW_S(B, b);
- FP_CMP_S(r, A, B, 2);
- if (r == 2 && (FP_ISSIGNAN_S(A) || FP_ISSIGNAN_S(B)))
- FP_SET_EXCEPTION(FP_EX_INVALID);
- FP_HANDLE_EXCEPTIONS;
-
- return r < 0;
-}
diff --git a/gcc/config/c6x/t-c6x-elf b/gcc/config/c6x/t-c6x-elf
index 6bc2832026d..be52588ea30 100644
--- a/gcc/config/c6x/t-c6x-elf
+++ b/gcc/config/c6x/t-c6x-elf
@@ -18,20 +18,8 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-LIB2FUNCS_EXCLUDE = _cmpdi2 _ucmpdi2 _gcc_bcmp _eprintf _clzsi _clzdi
EXTRA_HEADERS += $(srcdir)/ginclude/unwind-arm-common.h
-LIB2FUNCS_EXTRA = $(srcdir)/config/c6x/gef.c \
- $(srcdir)/config/c6x/gtf.c \
- $(srcdir)/config/c6x/lef.c \
- $(srcdir)/config/c6x/ltf.c \
- $(srcdir)/config/c6x/eqf.c \
- $(srcdir)/config/c6x/ged.c \
- $(srcdir)/config/c6x/gtd.c \
- $(srcdir)/config/c6x/led.c \
- $(srcdir)/config/c6x/ltd.c \
- $(srcdir)/config/c6x/eqd.c
-
# Use this variant for fully testing all CPU types
#MULTILIB_OPTIONS = mbig-endian march=c674x/march=c64x/march=c67x/march=c67x+/march=c62x
#MULTILIB_DIRNAMES = be c674x c64x c67x c67x+ c62x
@@ -40,6 +28,3 @@ MULTILIB_OPTIONS = mbig-endian march=c674x
MULTILIB_DIRNAMES = be c674x
MULTILIB_EXCEPTIONS =
MULTILIB_MATCHES =
-
-# Avoid failures when the user's GOT becomes too large.
-TARGET_LIBGCC2_CFLAGS = -msdata=none
diff --git a/gcc/config/c6x/t-c6x-uclinux b/gcc/config/c6x/t-c6x-uclinux
index c904f8f4d7c..e4b93908f43 100644
--- a/gcc/config/c6x/t-c6x-uclinux
+++ b/gcc/config/c6x/t-c6x-uclinux
@@ -1,5 +1,3 @@
MULTILIB_OSDIRNAMES = march.c674x=!c674x
MULTILIB_OSDIRNAMES += mbig-endian=!be
MULTILIB_OSDIRNAMES += mbig-endian/march.c674x=!be/c674x
-
-TARGET_LIBGCC2_CFLAGS = -fPIC -msdata=none
diff --git a/gcc/config/cris/arit.c b/gcc/config/cris/arit.c
deleted file mode 100644
index 32255f99d39..00000000000
--- a/gcc/config/cris/arit.c
+++ /dev/null
@@ -1,304 +0,0 @@
-/* Signed and unsigned multiplication and division and modulus for CRIS.
- Contributed by Axis Communications.
- Written by Hans-Peter Nilsson <hp@axis.se>, c:a 1992.
-
- Copyright (C) 1998, 1999, 2000, 2001, 2002,
- 2005, 2009 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 3, or (at your option) any
-later version.
-
-This file 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
-General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-
-/* Note that we provide prototypes for all "const" functions, to attach
- the const attribute. This is necessary in 2.7.2 - adding the
- attribute to the function *definition* is a syntax error.
- This did not work with e.g. 2.1; back then, the return type had to
- be "const". */
-
-#include "config.h"
-
-#if defined (__CRIS_arch_version) && __CRIS_arch_version >= 3
-#define LZ(v) __builtin_clz (v)
-#endif
-
-
-#if defined (L_udivsi3) || defined (L_divsi3) || defined (L_umodsi3) \
- || defined (L_modsi3)
-/* Result type of divmod worker function. */
-struct quot_rem
- {
- long quot;
- long rem;
- };
-
-/* This is the worker function for div and mod. It is inlined into the
- respective library function. Parameter A must have bit 31 == 0. */
-
-static __inline__ struct quot_rem
-do_31div (unsigned long a, unsigned long b)
- __attribute__ ((__const__, __always_inline__));
-
-static __inline__ struct quot_rem
-do_31div (unsigned long a, unsigned long b)
-{
- /* Adjust operands and result if a is 31 bits. */
- long extra = 0;
- int quot_digits = 0;
-
- if (b == 0)
- {
- struct quot_rem ret;
- ret.quot = 0xffffffff;
- ret.rem = 0xffffffff;
- return ret;
- }
-
- if (a < b)
- return (struct quot_rem) { 0, a };
-
-#ifdef LZ
- if (b <= a)
- {
- quot_digits = LZ (b) - LZ (a);
- quot_digits += (a >= (b << quot_digits));
- b <<= quot_digits;
- }
-#else
- while (b <= a)
- {
- b <<= 1;
- quot_digits++;
- }
-#endif
-
- /* Is a 31 bits? Note that bit 31 is handled by the caller. */
- if (a & 0x40000000)
- {
- /* Then make b:s highest bit max 0x40000000, because it must have
- been 0x80000000 to be 1 bit higher than a. */
- b >>= 1;
-
- /* Adjust a to be maximum 0x3fffffff, i.e. two upper bits zero. */
- if (a >= b)
- {
- a -= b;
- extra = 1 << (quot_digits - 1);
- }
- else
- {
- a -= b >> 1;
-
- /* Remember that we adjusted a by subtracting b * 2 ** Something. */
- extra = 1 << quot_digits;
- }
-
- /* The number of quotient digits will be one less, because
- we just adjusted b. */
- quot_digits--;
- }
-
- /* Now do the division part. */
-
- /* Subtract b and add ones to the right when a >= b
- i.e. "a - (b - 1) == (a - b) + 1". */
- b--;
-
-#define DS __asm__ ("dstep %2,%0" : "=r" (a) : "0" (a), "r" (b))
-
- switch (quot_digits)
- {
- case 32: DS; case 31: DS; case 30: DS; case 29: DS;
- case 28: DS; case 27: DS; case 26: DS; case 25: DS;
- case 24: DS; case 23: DS; case 22: DS; case 21: DS;
- case 20: DS; case 19: DS; case 18: DS; case 17: DS;
- case 16: DS; case 15: DS; case 14: DS; case 13: DS;
- case 12: DS; case 11: DS; case 10: DS; case 9: DS;
- case 8: DS; case 7: DS; case 6: DS; case 5: DS;
- case 4: DS; case 3: DS; case 2: DS; case 1: DS;
- case 0:;
- }
-
- {
- struct quot_rem ret;
- ret.quot = (a & ((1 << quot_digits) - 1)) + extra;
- ret.rem = a >> quot_digits;
- return ret;
- }
-}
-
-#ifdef L_udivsi3
-unsigned long
-__Udiv (unsigned long a, unsigned long b) __attribute__ ((__const__));
-
-unsigned long
-__Udiv (unsigned long a, unsigned long b)
-{
- long extra = 0;
-
- /* Adjust operands and result, if a and/or b is 32 bits. */
- /* Effectively: b & 0x80000000. */
- if ((long) b < 0)
- return a >= b;
-
- /* Effectively: a & 0x80000000. */
- if ((long) a < 0)
- {
- int tmp = 0;
-
- if (b == 0)
- return 0xffffffff;
-#ifdef LZ
- tmp = LZ (b);
-#else
- for (tmp = 31; (((long) b & (1 << tmp)) == 0); tmp--)
- ;
-
- tmp = 31 - tmp;
-#endif
-
- if ((b << tmp) > a)
- {
- extra = 1 << (tmp-1);
- a -= b << (tmp - 1);
- }
- else
- {
- extra = 1 << tmp;
- a -= b << tmp;
- }
- }
-
- return do_31div (a, b).quot+extra;
-}
-#endif /* L_udivsi3 */
-
-#ifdef L_divsi3
-long
-__Div (long a, long b) __attribute__ ((__const__));
-
-long
-__Div (long a, long b)
-{
- long extra = 0;
- long sign = (b < 0) ? -1 : 1;
-
- /* We need to handle a == -2147483648 as expected and must while
- doing that avoid producing a sequence like "abs (a) < 0" as GCC
- may optimize out the test. That sequence may not be obvious as
- we call inline functions. Testing for a being negative and
- handling (presumably much rarer than positive) enables us to get
- a bit of optimization for an (accumulated) reduction of the
- penalty of the 0x80000000 special-case. */
- if (a < 0)
- {
- sign = -sign;
-
- if ((a & 0x7fffffff) == 0)
- {
- /* We're at 0x80000000. Tread carefully. */
- a -= b * sign;
- extra = sign;
- }
- a = -a;
- }
-
- /* We knowingly penalize pre-v10 models by multiplication with the
- sign. */
- return sign * do_31div (a, __builtin_labs (b)).quot + extra;
-}
-#endif /* L_divsi3 */
-
-
-#ifdef L_umodsi3
-unsigned long
-__Umod (unsigned long a, unsigned long b) __attribute__ ((__const__));
-
-unsigned long
-__Umod (unsigned long a, unsigned long b)
-{
- /* Adjust operands and result if a and/or b is 32 bits. */
- if ((long) b < 0)
- return a >= b ? a - b : a;
-
- if ((long) a < 0)
- {
- int tmp = 0;
-
- if (b == 0)
- return a;
-#ifdef LZ
- tmp = LZ (b);
-#else
- for (tmp = 31; (((long) b & (1 << tmp)) == 0); tmp--)
- ;
- tmp = 31 - tmp;
-#endif
-
- if ((b << tmp) > a)
- {
- a -= b << (tmp - 1);
- }
- else
- {
- a -= b << tmp;
- }
- }
-
- return do_31div (a, b).rem;
-}
-#endif /* L_umodsi3 */
-
-#ifdef L_modsi3
-long
-__Mod (long a, long b) __attribute__ ((__const__));
-
-long
-__Mod (long a, long b)
-{
- long sign = 1;
-
- /* We need to handle a == -2147483648 as expected and must while
- doing that avoid producing a sequence like "abs (a) < 0" as GCC
- may optimize out the test. That sequence may not be obvious as
- we call inline functions. Testing for a being negative and
- handling (presumably much rarer than positive) enables us to get
- a bit of optimization for an (accumulated) reduction of the
- penalty of the 0x80000000 special-case. */
- if (a < 0)
- {
- sign = -1;
- if ((a & 0x7fffffff) == 0)
- /* We're at 0x80000000. Tread carefully. */
- a += __builtin_labs (b);
- a = -a;
- }
-
- return sign * do_31div (a, __builtin_labs (b)).rem;
-}
-#endif /* L_modsi3 */
-#endif /* L_udivsi3 || L_divsi3 || L_umodsi3 || L_modsi3 */
-
-/*
- * Local variables:
- * eval: (c-set-style "gnu")
- * indent-tabs-mode: t
- * End:
- */
diff --git a/gcc/config/cris/cris.h b/gcc/config/cris/cris.h
index 62461d65cc5..135b03bb1a4 100644
--- a/gcc/config/cris/cris.h
+++ b/gcc/config/cris/cris.h
@@ -84,11 +84,7 @@ extern int cris_cpu_version;
/* Changing the order used to be necessary to put the fourth __make_dp
argument (a DImode parameter) in registers, to fit with the libfunc
parameter passing scheme used for intrinsic functions. FIXME: Check
- performance and maybe remove definition from TARGET_LIBGCC2_CFLAGS now
- that it isn't strictly necessary. We used to do this through
- TARGET_LIBGCC2_CFLAGS, but that became increasingly difficult as the
- parenthesis (that needed quoting) travels through several layers of
- make and shell invocations. */
+ performance. */
#ifdef IN_LIBGCC2
#define __make_dp(a,b,c,d) __cris_make_dp(d,a,b,c)
#endif
diff --git a/gcc/config/cris/cris_abi_symbol.c b/gcc/config/cris/cris_abi_symbol.c
deleted file mode 100644
index db9db2cfe56..00000000000
--- a/gcc/config/cris/cris_abi_symbol.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Define symbol to recognize CRIS ABI version 2, for a.out use.
- Contributed by Axis Communications.
- Written by Hans-Peter Nilsson <hp@axis.se>, c:a 1992.
-
- Copyright (C) 2000, 2001, 2003, 2009 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 3, or (at your option) any
-later version.
-
-This file 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
-General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "tconfig.h"
-#include "tm.h"
-
-#ifdef __AOUT__
-
-/* ELF support was not released before the ABI was changed, so we
- restrict this awkwardness to a.out. This symbol is for gdb to
- recognize, so it can debug both old and new programs successfully. */
-__asm__ (".global " CRIS_ABI_VERSION_SYMBOL_STRING);
-__asm__ (".set " CRIS_ABI_VERSION_SYMBOL_STRING ",0");
-
-#else /* not __AOUT__ */
-
-/* The file must not be empty (declaration/definition-wise) according to
- ISO, IIRC. */
-extern int _Dummy;
-
-#endif /* not __AOUT__ */
diff --git a/gcc/config/cris/mulsi3.asm b/gcc/config/cris/mulsi3.asm
deleted file mode 100644
index 76dfb634680..00000000000
--- a/gcc/config/cris/mulsi3.asm
+++ /dev/null
@@ -1,255 +0,0 @@
-;; Copyright (C) 2001, 2004 Free Software Foundation, Inc.
-;;
-;; This file is part of GCC.
-;;
-;; GCC is free software; you can redistribute it and/or modify it under
-;; the terms of the GNU General Public License as published by the Free
-;; Software Foundation; either version 3, or (at your option) any later
-;; version.
-;;
-;; GCC 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 General Public License
-;; for more details.
-;;
-;; Under Section 7 of GPL version 3, you are granted additional
-;; permissions described in the GCC Runtime Library Exception, version
-;; 3.1, as published by the Free Software Foundation.
-;;
-;; You should have received a copy of the GNU General Public License and
-;; a copy of the GCC Runtime Library Exception along with this program;
-;; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-;; <http://www.gnu.org/licenses/>.
-;;
-;; This code used to be expanded through interesting expansions in
-;; the machine description, compiled from this code:
-;;
-;; #ifdef L_mulsi3
-;; long __Mul (unsigned long a, unsigned long b) __attribute__ ((__const__));
-;;
-;; /* This must be compiled with the -mexpand-mul flag, to synthesize the
-;; multiplication from the mstep instructions. The check for
-;; smaller-size multiplication pays off in the order of .5-10%;
-;; estimated median 1%, depending on application.
-;; FIXME: It can be further optimized if we go to assembler code, as
-;; gcc 2.7.2 adds a few unnecessary instructions and does not put the
-;; basic blocks in optimal order. */
-;; long
-;; __Mul (unsigned long a, unsigned long b)
-;; {
-;; #if defined (__CRIS_arch_version) && __CRIS_arch_version >= 10
-;; /* In case other code is compiled without -march=v10, they will
-;; contain calls to __Mul, regardless of flags at link-time. The
-;; "else"-code below will work, but is unnecessarily slow. This
-;; sometimes cuts a few minutes off from simulation time by just
-;; returning a "mulu.d". */
-;; return a * b;
-;; #else
-;; unsigned long min;
-;;
-;; /* Get minimum via the bound insn. */
-;; min = a < b ? a : b;
-;;
-;; /* Can we omit computation of the high part? */
-;; if (min > 65535)
-;; /* No. Perform full multiplication. */
-;; return a * b;
-;; else
-;; {
-;; /* Check if both operands are within 16 bits. */
-;; unsigned long max;
-;;
-;; /* Get maximum, by knowing the minimum.
-;; This will partition a and b into max and min.
-;; This is not currently something GCC understands,
-;; so do this trick by asm. */
-;; __asm__ ("xor %1,%0\n\txor %2,%0"
-;; : "=r" (max)
-;; : "r" (b), "r" (a), "0" (min));
-;;
-;; if (max > 65535)
-;; /* Make GCC understand that only the low part of "min" will be
-;; used. */
-;; return max * (unsigned short) min;
-;; else
-;; /* Only the low parts of both operands are necessary. */
-;; return ((unsigned short) max) * (unsigned short) min;
-;; }
-;; #endif /* not __CRIS_arch_version >= 10 */
-;; }
-;; #endif /* L_mulsi3 */
-;;
-;; That approach was abandoned since the caveats outweighted the
-;; benefits. The expand-multiplication machinery is also removed, so you
-;; can't do this anymore.
-;;
-;; For doubters of there being any benefits, some where: insensitivity to:
-;; - ABI changes (mostly for experimentation)
-;; - assembler syntax differences (mostly debug format).
-;; - insn scheduling issues.
-;; Most ABI experiments will presumably happen with arches with mul insns,
-;; so that argument doesn't really hold anymore, and it's unlikely there
-;; being new arch variants needing insn scheduling and not having mul
-;; insns.
-
-;; ELF and a.out have different syntax for local labels: the "wrong"
-;; one may not be omitted from the object.
-#undef L
-#ifdef __AOUT__
-# define L(x) x
-#else
-# define L(x) .x
-#endif
-
- .global ___Mul
- .type ___Mul,@function
-___Mul:
-#if defined (__CRIS_arch_version) && __CRIS_arch_version >= 10
-;; Can't have the mulu.d last on a cache-line (in the delay-slot of the
-;; "ret"), due to hardware bug. See documentation for -mmul-bug-workaround.
-;; Not worthwhile to conditionalize here.
- .p2alignw 2,0x050f
- mulu.d $r11,$r10
- ret
- nop
-#else
- move.d $r10,$r12
- move.d $r11,$r9
- bound.d $r12,$r9
- cmpu.w 65535,$r9
- bls L(L3)
- move.d $r12,$r13
-
- movu.w $r11,$r9
- lslq 16,$r13
- mstep $r9,$r13
- mstep $r9,$r13
- mstep $r9,$r13
- mstep $r9,$r13
- mstep $r9,$r13
- mstep $r9,$r13
- mstep $r9,$r13
- mstep $r9,$r13
- mstep $r9,$r13
- mstep $r9,$r13
- mstep $r9,$r13
- mstep $r9,$r13
- mstep $r9,$r13
- mstep $r9,$r13
- mstep $r9,$r13
- mstep $r9,$r13
- clear.w $r10
- test.d $r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- movu.w $r12,$r12
- move.d $r11,$r9
- clear.w $r9
- test.d $r9
- mstep $r12,$r9
- mstep $r12,$r9
- mstep $r12,$r9
- mstep $r12,$r9
- mstep $r12,$r9
- mstep $r12,$r9
- mstep $r12,$r9
- mstep $r12,$r9
- mstep $r12,$r9
- mstep $r12,$r9
- mstep $r12,$r9
- mstep $r12,$r9
- mstep $r12,$r9
- mstep $r12,$r9
- mstep $r12,$r9
- mstep $r12,$r9
- add.w $r9,$r10
- lslq 16,$r10
- ret
- add.d $r13,$r10
-
-L(L3):
- move.d $r9,$r10
- xor $r11,$r10
- xor $r12,$r10
- cmpu.w 65535,$r10
- bls L(L5)
- movu.w $r9,$r13
-
- movu.w $r13,$r13
- move.d $r10,$r9
- lslq 16,$r9
- mstep $r13,$r9
- mstep $r13,$r9
- mstep $r13,$r9
- mstep $r13,$r9
- mstep $r13,$r9
- mstep $r13,$r9
- mstep $r13,$r9
- mstep $r13,$r9
- mstep $r13,$r9
- mstep $r13,$r9
- mstep $r13,$r9
- mstep $r13,$r9
- mstep $r13,$r9
- mstep $r13,$r9
- mstep $r13,$r9
- mstep $r13,$r9
- clear.w $r10
- test.d $r10
- mstep $r13,$r10
- mstep $r13,$r10
- mstep $r13,$r10
- mstep $r13,$r10
- mstep $r13,$r10
- mstep $r13,$r10
- mstep $r13,$r10
- mstep $r13,$r10
- mstep $r13,$r10
- mstep $r13,$r10
- mstep $r13,$r10
- mstep $r13,$r10
- mstep $r13,$r10
- mstep $r13,$r10
- mstep $r13,$r10
- mstep $r13,$r10
- lslq 16,$r10
- ret
- add.d $r9,$r10
-
-L(L5):
- movu.w $r9,$r9
- lslq 16,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- mstep $r9,$r10
- ret
- mstep $r9,$r10
-#endif
-L(Lfe1):
- .size ___Mul,L(Lfe1)-___Mul
diff --git a/gcc/config/cris/t-cris b/gcc/config/cris/t-cris
index 19d44ce8320..fdaa54e5ce3 100644
--- a/gcc/config/cris/t-cris
+++ b/gcc/config/cris/t-cris
@@ -25,17 +25,5 @@
# section "Target Fragment" in the gcc info-files (or the paper copy) of
# "Using and Porting GCC"
-LIB2FUNCS_EXTRA = _udivsi3.c _divsi3.c _umodsi3.c _modsi3.c
-CRIS_LIB1CSRC = $(srcdir)/config/cris/arit.c
-
-# The fixed-point arithmetic code is in one file, arit.c,
-# similar to libgcc2.c (or the old libgcc1.c). We need to
-# "split it up" with one file per define.
-$(LIB2FUNCS_EXTRA): $(CRIS_LIB1CSRC)
- name=`echo $@ | sed -e 's,.*/,,' | sed -e 's,.c$$,,'`; \
- echo "#define L$$name" > tmp-$@ \
- && echo '#include "$<"' >> tmp-$@ \
- && mv -f tmp-$@ $@
-
$(out_object_file): gt-cris.h
gt-cris.h : s-gtype ; @true
diff --git a/gcc/config/cris/t-elfmulti b/gcc/config/cris/t-elfmulti
index 29ab9beeb94..29ed57dec2f 100644
--- a/gcc/config/cris/t-elfmulti
+++ b/gcc/config/cris/t-elfmulti
@@ -16,7 +16,6 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-LIB2FUNCS_STATIC_EXTRA = $(srcdir)/config/cris/mulsi3.asm
MULTILIB_OPTIONS = march=v10/march=v32
MULTILIB_DIRNAMES = v10 v32
MULTILIB_MATCHES = \
@@ -29,5 +28,3 @@ MULTILIB_MATCHES = \
march?v10=mcpu?v10 \
march?v32=mcpu?v32
MULTILIB_EXTRA_OPTS = mbest-lib-options
-INSTALL_LIBGCC = install-multilib
-LIBGCC = stmp-multilib
diff --git a/gcc/config/cris/t-linux b/gcc/config/cris/t-linux
index 6505c37e1d1..71a964936db 100644
--- a/gcc/config/cris/t-linux
+++ b/gcc/config/cris/t-linux
@@ -1,5 +1,3 @@
-TARGET_LIBGCC2_CFLAGS += -fPIC
-
# We *know* we have a limits.h in the glibc library, with extra
# definitions needed for e.g. libgfortran.
ifneq ($(inhibit_libc),true)
diff --git a/gcc/config/darwin-64.c b/gcc/config/darwin-64.c
deleted file mode 100644
index a012e9dbc1e..00000000000
--- a/gcc/config/darwin-64.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Functions shipped in the ppc64 and x86_64 version of libgcc_s.1.dylib
- in older Mac OS X versions, preserved for backwards compatibility.
- Copyright (C) 2006, 2009 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#if defined (__ppc64__) || defined (__x86_64__)
-/* Many of these functions have probably never been used by anyone
- anywhere on these targets, but it's hard to prove this, so they're defined
- here. None are actually necessary, as demonstrated below by defining
- each function using the operation it implements. */
-
-typedef long DI;
-typedef unsigned long uDI;
-typedef int SI;
-typedef unsigned int uSI;
-typedef int word_type __attribute__ ((mode (__word__)));
-
-DI __ashldi3 (DI x, word_type c);
-DI __ashrdi3 (DI x, word_type c);
-int __clzsi2 (uSI x);
-word_type __cmpdi2 (DI x, DI y);
-int __ctzsi2 (uSI x);
-DI __divdi3 (DI x, DI y);
-uDI __lshrdi3 (uDI x, word_type c);
-DI __moddi3 (DI x, DI y);
-DI __muldi3 (DI x, DI y);
-DI __negdi2 (DI x);
-int __paritysi2 (uSI x);
-int __popcountsi2 (uSI x);
-word_type __ucmpdi2 (uDI x, uDI y);
-uDI __udivdi3 (uDI x, uDI y);
-uDI __udivmoddi4 (uDI x, uDI y, uDI *r);
-uDI __umoddi3 (uDI x, uDI y);
-
-DI __ashldi3 (DI x, word_type c) { return x << c; }
-DI __ashrdi3 (DI x, word_type c) { return x >> c; }
-int __clzsi2 (uSI x) { return __builtin_clz (x); }
-word_type __cmpdi2 (DI x, DI y) { return x < y ? 0 : x == y ? 1 : 2; }
-int __ctzsi2 (uSI x) { return __builtin_ctz (x); }
-DI __divdi3 (DI x, DI y) { return x / y; }
-uDI __lshrdi3 (uDI x, word_type c) { return x >> c; }
-DI __moddi3 (DI x, DI y) { return x % y; }
-DI __muldi3 (DI x, DI y) { return x * y; }
-DI __negdi2 (DI x) { return -x; }
-int __paritysi2 (uSI x) { return __builtin_parity (x); }
-int __popcountsi2 (uSI x) { return __builtin_popcount (x); }
-word_type __ucmpdi2 (uDI x, uDI y) { return x < y ? 0 : x == y ? 1 : 2; }
-uDI __udivdi3 (uDI x, uDI y) { return x / y; }
-uDI __udivmoddi4 (uDI x, uDI y, uDI *r) { *r = x % y; return x / y; }
-uDI __umoddi3 (uDI x, uDI y) { return x % y; }
-
-#endif /* __ppc64__ || __x86_64__ */
diff --git a/gcc/config/divmod.c b/gcc/config/divmod.c
deleted file mode 100644
index c227b99ccd2..00000000000
--- a/gcc/config/divmod.c
+++ /dev/null
@@ -1,73 +0,0 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-long udivmodsi4 ();
-
-long
-__divsi3 (long a, long b)
-{
- int neg = 0;
- long res;
-
- if (a < 0)
- {
- a = -a;
- neg = !neg;
- }
-
- if (b < 0)
- {
- b = -b;
- neg = !neg;
- }
-
- res = udivmodsi4 (a, b, 0);
-
- if (neg)
- res = -res;
-
- return res;
-}
-
-long
-__modsi3 (long a, long b)
-{
- int neg = 0;
- long res;
-
- if (a < 0)
- {
- a = -a;
- neg = 1;
- }
-
- if (b < 0)
- b = -b;
-
- res = udivmodsi4 (a, b, 1);
-
- if (neg)
- res = -res;
-
- return res;
-}
diff --git a/gcc/config/floatunsidf.c b/gcc/config/floatunsidf.c
deleted file mode 100644
index ff28112502b..00000000000
--- a/gcc/config/floatunsidf.c
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Public domain. */
-typedef int SItype __attribute__ ((mode (SI)));
-typedef unsigned int USItype __attribute__ ((mode (SI)));
-typedef float DFtype __attribute__ ((mode (DF)));
-
-DFtype
-__floatunsidf (USItype u)
-{
- SItype s = (SItype) u;
- DFtype r = (DFtype) s;
- if (s < 0)
- r += (DFtype)2.0 * (DFtype) ((USItype) 1
- << (sizeof (USItype) * __CHAR_BIT__ - 1));
- return r;
-}
diff --git a/gcc/config/floatunsisf.c b/gcc/config/floatunsisf.c
deleted file mode 100644
index 11d4aa78cbe..00000000000
--- a/gcc/config/floatunsisf.c
+++ /dev/null
@@ -1,18 +0,0 @@
-/* Public domain. */
-typedef int SItype __attribute__ ((mode (SI)));
-typedef unsigned int USItype __attribute__ ((mode (SI)));
-typedef float SFtype __attribute__ ((mode (SF)));
-
-SFtype
-__floatunsisf (USItype u)
-{
- SItype s = (SItype) u;
- if (s < 0)
- {
- /* As in expand_float, compute (u & 1) | (u >> 1) to ensure
- correct rounding if a nonzero bit is shifted out. */
- return (SFtype) 2.0 * (SFtype) (SItype) ((u & 1) | (u >> 1));
- }
- else
- return (SFtype) s;
-}
diff --git a/gcc/config/floatunsitf.c b/gcc/config/floatunsitf.c
deleted file mode 100644
index 955d67666c5..00000000000
--- a/gcc/config/floatunsitf.c
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Public domain. */
-typedef int SItype __attribute__ ((mode (SI)));
-typedef unsigned int USItype __attribute__ ((mode (SI)));
-typedef float TFtype __attribute__ ((mode (TF)));
-
-TFtype
-__floatunsitf (USItype u)
-{
- SItype s = (SItype) u;
- TFtype r = (TFtype) s;
- if (s < 0)
- r += (TFtype)2.0 * (TFtype) ((USItype) 1
- << (sizeof (USItype) * __CHAR_BIT__ - 1));
- return r;
-}
diff --git a/gcc/config/floatunsixf.c b/gcc/config/floatunsixf.c
deleted file mode 100644
index 52511688dad..00000000000
--- a/gcc/config/floatunsixf.c
+++ /dev/null
@@ -1,15 +0,0 @@
-/* Public domain. */
-typedef int SItype __attribute__ ((mode (SI)));
-typedef unsigned int USItype __attribute__ ((mode (SI)));
-typedef float XFtype __attribute__ ((mode (XF)));
-
-XFtype
-__floatunsixf (USItype u)
-{
- SItype s = (SItype) u;
- XFtype r = (XFtype) s;
- if (s < 0)
- r += (XFtype)2.0 * (XFtype) ((USItype) 1
- << (sizeof (USItype) * __CHAR_BIT__ - 1));
- return r;
-}
diff --git a/gcc/config/fr30/t-fr30 b/gcc/config/fr30/t-fr30
deleted file mode 100644
index e37921681d0..00000000000
--- a/gcc/config/fr30/t-fr30
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright (C) 1999, 2001, 2007, 2011 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-# If any special flags are necessary when building libgcc2 put them here.
-#
-# TARGET_LIBGCC2_CFLAGS
-
-# Enable the following if multilibs are needed.
-# See gcc/genmultilib, gcc/gcc.texi and gcc/tm.texi for a
-# description of the options and their values.
-#
-# MULTILIB_OPTIONS =
-# MULTILIB_DIRNAMES =
-# MULTILIB_MATCHES =
-# MULTILIB_EXCEPTIONS =
-# MULTILIB_EXTRA_OPTS =
-#
-# LIBGCC = stmp-multilib
-# INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/frv/cmovd.c b/gcc/config/frv/cmovd.c
deleted file mode 100644
index e46070aac04..00000000000
--- a/gcc/config/frv/cmovd.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Move double-word library function.
- Copyright (C) 2000, 2003, 2009 Free Software Foundation, Inc.
- Contributed by Red Hat, Inc.
-
- This file is part of GCC.
-
- GCC is free software ; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GCC 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 General Public License for more details.
-
- Under Section 7 of GPL version 3, you are granted additional
- permissions described in the GCC Runtime Library Exception, version
- 3.1, as published by the Free Software Foundation.
-
- You should have received a copy of the GNU General Public License and
- a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
-void
-__cmovd (long long *dest, const long long *src, unsigned len)
-{
- unsigned i;
- unsigned num = len >> 3;
- unsigned xlen = len & ~7;
- char *dest_byte = (char *)dest;
- const char *src_byte = (const char *)src;
-
- if (dest_byte < src_byte || dest_byte > src_byte+len)
- {
- for (i = 0; i < num; i++)
- dest[i] = src[i];
-
- while (len > xlen)
- {
- dest_byte[xlen] = src_byte[xlen];
- xlen++;
- }
- }
- else
- {
- while (len-- > 0)
- dest_byte[len] = src_byte[len];
- }
-}
diff --git a/gcc/config/frv/cmovh.c b/gcc/config/frv/cmovh.c
deleted file mode 100644
index 6b0901d95a7..00000000000
--- a/gcc/config/frv/cmovh.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Move half-word library function.
- Copyright (C) 2000, 2003, 2009 Free Software Foundation, Inc.
- Contributed by Red Hat, Inc.
-
- This file is part of GCC.
-
- GCC is free software ; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GCC 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 General Public License for more details.
-
- Under Section 7 of GPL version 3, you are granted additional
- permissions described in the GCC Runtime Library Exception, version
- 3.1, as published by the Free Software Foundation.
-
- You should have received a copy of the GNU General Public License and
- a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
-void
-__cmovh (short *dest, const short *src, unsigned len)
-{
- unsigned i;
- unsigned num = len >> 1;
- char *dest_byte = (char *)dest;
- const char *src_byte = (const char *)src;
-
- if (dest_byte < src_byte || dest_byte > src_byte+len)
- {
- for (i = 0; i < num; i++)
- dest[i] = src[i];
-
- if ((len & 1) != 0)
- dest_byte[len-1] = src_byte[len-1];
- }
- else
- {
- while (len-- > 0)
- dest_byte[len] = src_byte[len];
- }
-}
diff --git a/gcc/config/frv/cmovw.c b/gcc/config/frv/cmovw.c
deleted file mode 100644
index f27db75aaf6..00000000000
--- a/gcc/config/frv/cmovw.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Move word library function.
- Copyright (C) 2000, 2003, 2009 Free Software Foundation, Inc.
- Contributed by Red Hat, Inc.
-
- This file is part of GCC.
-
- GCC is free software ; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GCC 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 General Public License for more details.
-
- Under Section 7 of GPL version 3, you are granted additional
- permissions described in the GCC Runtime Library Exception, version
- 3.1, as published by the Free Software Foundation.
-
- You should have received a copy of the GNU General Public License and
- a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
-void
-__cmovw (int *dest, const int *src, unsigned len)
-{
- unsigned i;
- unsigned num = len >> 2;
- unsigned xlen = len & ~3;
- char *dest_byte = (char *)dest;
- const char *src_byte = (const char *)src;
-
- if (dest_byte < src_byte || dest_byte > src_byte+len)
- {
- for (i = 0; i < num; i++)
- dest[i] = src[i];
-
- while (len > xlen)
- {
- dest_byte[xlen] = src_byte[xlen];
- xlen++;
- }
- }
- else
- {
- while (len-- > 0)
- dest_byte[len] = src_byte[len];
- }
-}
diff --git a/gcc/config/frv/modi.c b/gcc/config/frv/modi.c
deleted file mode 100644
index d5a91fc0f55..00000000000
--- a/gcc/config/frv/modi.c
+++ /dev/null
@@ -1,4 +0,0 @@
-int __modi (int a, int b)
-{
- return a % b;
-}
diff --git a/gcc/config/frv/t-frv b/gcc/config/frv/t-frv
index e31f823c30a..c5c7bdc237c 100644
--- a/gcc/config/frv/t-frv
+++ b/gcc/config/frv/t-frv
@@ -16,38 +16,6 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-LIB2FUNCS_EXTRA = cmovh.c cmovw.c cmovd.c modi.c umodi.c uitof.c uitod.c ulltof.c ulltod.c
-
-# If any special flags are necessary when building libgcc2 put them here.
-TARGET_LIBGCC2_CFLAGS =
-
-cmovh.c: $(srcdir)/config/frv/cmovh.c
- $(LN_S) $(srcdir)/config/frv/cmovh.c .
-
-cmovw.c: $(srcdir)/config/frv/cmovw.c
- $(LN_S) $(srcdir)/config/frv/cmovw.c .
-
-cmovd.c: $(srcdir)/config/frv/cmovd.c
- $(LN_S) $(srcdir)/config/frv/cmovd.c .
-
-modi.c: $(srcdir)/config/frv/modi.c
- $(LN_S) $(srcdir)/config/frv/modi.c .
-
-umodi.c: $(srcdir)/config/frv/umodi.c
- $(LN_S) $(srcdir)/config/frv/umodi.c .
-
-uitof.c: $(srcdir)/config/frv/uitof.c
- $(LN_S) $(srcdir)/config/frv/uitof.c .
-
-uitod.c: $(srcdir)/config/frv/uitod.c
- $(LN_S) $(srcdir)/config/frv/uitod.c .
-
-ulltof.c: $(srcdir)/config/frv/ulltof.c
- $(LN_S) $(srcdir)/config/frv/ulltof.c .
-
-ulltod.c: $(srcdir)/config/frv/ulltod.c
- $(LN_S) $(srcdir)/config/frv/ulltod.c .
-
# Enable the following if multilibs are needed.
# See gcc/genmultilib, gcc/gcc.texi and gcc/tm.texi for a
# description of the options and their values.
@@ -65,7 +33,4 @@ MULTILIB_MATCHES = mcpu?simple=mcpu?fr300 \
mcpu?fr400=mcpu?fr405 mcpu?fr400=mcpu?fr450
MULTILIB_EXCEPTIONS = mcpu=frv/mno-pack* mcpu=simple/mno-pack*
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
-
EXTRA_HEADERS = $(srcdir)/config/frv/frv-asm.h
diff --git a/gcc/config/frv/t-linux b/gcc/config/frv/t-linux
index 10800e9bdc1..4f18e4baf9a 100644
--- a/gcc/config/frv/t-linux
+++ b/gcc/config/frv/t-linux
@@ -22,5 +22,3 @@ MULTILIB_DIRNAMES=
MULTILIB_MATCHES=
MULTILIB_EXCEPTIONS=
MULTILIB_EXTRA_OPTS=
-
-TARGET_LIBGCC2_CFLAGS = -fPIC
diff --git a/gcc/config/frv/uitod.c b/gcc/config/frv/uitod.c
deleted file mode 100644
index 14290ab6b04..00000000000
--- a/gcc/config/frv/uitod.c
+++ /dev/null
@@ -1,4 +0,0 @@
-double __uitod (unsigned int a)
-{
- return a;
-}
diff --git a/gcc/config/frv/uitof.c b/gcc/config/frv/uitof.c
deleted file mode 100644
index 059bc7c7417..00000000000
--- a/gcc/config/frv/uitof.c
+++ /dev/null
@@ -1,4 +0,0 @@
-float __uitof (unsigned int a)
-{
- return a;
-}
diff --git a/gcc/config/frv/ulltod.c b/gcc/config/frv/ulltod.c
deleted file mode 100644
index e6bee12081f..00000000000
--- a/gcc/config/frv/ulltod.c
+++ /dev/null
@@ -1,4 +0,0 @@
-double __ulltod (unsigned long long a)
-{
- return a;
-}
diff --git a/gcc/config/frv/ulltof.c b/gcc/config/frv/ulltof.c
deleted file mode 100644
index 29cdfd4d2a1..00000000000
--- a/gcc/config/frv/ulltof.c
+++ /dev/null
@@ -1,4 +0,0 @@
-float __ulltof (unsigned long long a)
-{
- return a;
-}
diff --git a/gcc/config/frv/umodi.c b/gcc/config/frv/umodi.c
deleted file mode 100644
index 4ffe5ad8132..00000000000
--- a/gcc/config/frv/umodi.c
+++ /dev/null
@@ -1,4 +0,0 @@
-unsigned int __umodi (unsigned int a, unsigned int b)
-{
- return a % b;
-}
diff --git a/gcc/config/h8300/clzhi2.c b/gcc/config/h8300/clzhi2.c
deleted file mode 100644
index 54db7b9c56b..00000000000
--- a/gcc/config/h8300/clzhi2.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* The implementation of __clzhi2.
- Copyright (C) 2003, 2009 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC 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 General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-int __clzhi2 (unsigned short x);
-
-int
-__clzhi2 (unsigned short x)
-{
- int i;
- for (i = 0; i < 16; i++)
- if (x & ((unsigned short) 1 << (15 - i)))
- break;
- return i;
-}
diff --git a/gcc/config/h8300/ctzhi2.c b/gcc/config/h8300/ctzhi2.c
deleted file mode 100644
index ba6f8e9086f..00000000000
--- a/gcc/config/h8300/ctzhi2.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* The implementation of __ctzhi2.
- Copyright (C) 2003, 2009 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC 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 General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-int __ctzhi2 (unsigned short x);
-
-int
-__ctzhi2 (unsigned short x)
-{
- int i;
- for (i = 0; i < 16; i++)
- if (x & ((unsigned short) 1 << i))
- break;
- return i;
-}
diff --git a/gcc/config/h8300/fixunssfsi.c b/gcc/config/h8300/fixunssfsi.c
deleted file mode 100644
index 940d0c6dc6a..00000000000
--- a/gcc/config/h8300/fixunssfsi.c
+++ /dev/null
@@ -1,41 +0,0 @@
-/* More subroutines needed by GCC output code on some machines. */
-/* Compile this one with gcc. */
-/* Copyright (C) 1989, 1992, 2001, 2002, 2003, 2004, 2009, 2011
- Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC 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 General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/* The libgcc2.c implementation gets confused by our type setup and creates
- a directly recursive call, so we do our own implementation. For
- the H8/300, that's in lib1funcs.S, for H8/300H and H8S, it's here. */
-
-#ifndef __H8300__
-long __fixunssfsi (float a);
-
-long
-__fixunssfsi (float a)
-{
- if (a >= (float) 32768L)
- return (long) (a - 32768L) + 32768L;
- return (long) a;
-}
-#endif
diff --git a/gcc/config/h8300/parityhi2.c b/gcc/config/h8300/parityhi2.c
deleted file mode 100644
index d58cb89b5c7..00000000000
--- a/gcc/config/h8300/parityhi2.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* The implementation of __parityhi2.
- Copyright (C) 2003, 2009 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC 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 General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-int __parityhi2 (unsigned short x);
-
-int
-__parityhi2 (unsigned short x)
-{
- int i;
- int count = 0;
- for (i = 0; i < 16; i++)
- if (x & ((unsigned short) 1 << i))
- count++;
- return count & 1;
-}
diff --git a/gcc/config/h8300/popcounthi2.c b/gcc/config/h8300/popcounthi2.c
deleted file mode 100644
index 47be193b38d..00000000000
--- a/gcc/config/h8300/popcounthi2.c
+++ /dev/null
@@ -1,36 +0,0 @@
-/* The implementation of __popcounthi2.
- Copyright (C) 2003, 2009 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC 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 General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-int __popcounthi2 (unsigned short x);
-
-int
-__popcounthi2 (unsigned short x)
-{
- int i;
- int count = 0;
- for (i = 0; i < 16; i++)
- if (x & ((unsigned short) 1 << i))
- count++;
- return count;
-}
diff --git a/gcc/config/h8300/t-h8300 b/gcc/config/h8300/t-h8300
index 7083c673acf..e29cd2d335c 100644
--- a/gcc/config/h8300/t-h8300
+++ b/gcc/config/h8300/t-h8300
@@ -17,23 +17,10 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-LIB2FUNCS_EXTRA = \
- $(srcdir)/config/h8300/clzhi2.c \
- $(srcdir)/config/h8300/ctzhi2.c \
- $(srcdir)/config/h8300/parityhi2.c \
- $(srcdir)/config/h8300/popcounthi2.c \
- $(srcdir)/config/h8300/fixunssfsi.c
-
-# We do not have DF type, so fake out the libgcc2 compilation.
-TARGET_LIBGCC2_CFLAGS = -DDF=SF
-
MULTILIB_OPTIONS = mh/ms/msx mn mint32
MULTILIB_DIRNAMES = h8300h h8300s h8sx normal int32
MULTILIB_EXCEPTIONS = mint32 mn mn/mint32
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
-
s-config s-conditions s-flags s-codes s-constants s-emit s-recog \
s-opinit s-extract s-peep s-attr s-attrtab s-output: \
$(srcdir)/config/h8300/mova.md
diff --git a/gcc/config/i386/gthr-win32.c b/gcc/config/i386/gthr-win32.c
deleted file mode 100644
index 46ecb0d4b26..00000000000
--- a/gcc/config/i386/gthr-win32.c
+++ /dev/null
@@ -1,260 +0,0 @@
-/* Implementation of W32-specific threads compatibility routines for
- libgcc2. */
-
-/* Copyright (C) 1999, 2000, 2002, 2004, 2008, 2009 Free Software Foundation, Inc.
- Contributed by Mumit Khan <khan@xraylith.wisc.edu>.
- Modified and moved to separate file by Danny Smith
- <dannysmith@users.sourceforge.net>.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include <windows.h>
-#ifndef __GTHREAD_HIDE_WIN32API
-# define __GTHREAD_HIDE_WIN32API 1
-#endif
-#undef __GTHREAD_I486_INLINE_LOCK_PRIMITIVES
-#define __GTHREAD_I486_INLINE_LOCK_PRIMITIVES
-#include <gthr-win32.h>
-
-/* Windows32 threads specific definitions. The windows32 threading model
- does not map well into pthread-inspired gcc's threading model, and so
- there are caveats one needs to be aware of.
-
- 1. The destructor supplied to __gthread_key_create is ignored for
- generic x86-win32 ports. This will certainly cause memory leaks
- due to unreclaimed eh contexts (sizeof (eh_context) is at least
- 24 bytes for x86 currently).
-
- This memory leak may be significant for long-running applications
- that make heavy use of C++ EH.
-
- However, Mingw runtime (version 0.3 or newer) provides a mechanism
- to emulate pthreads key dtors; the runtime provides a special DLL,
- linked in if -mthreads option is specified, that runs the dtors in
- the reverse order of registration when each thread exits. If
- -mthreads option is not given, a stub is linked in instead of the
- DLL, which results in memory leak. Other x86-win32 ports can use
- the same technique of course to avoid the leak.
-
- 2. The error codes returned are non-POSIX like, and cast into ints.
- This may cause incorrect error return due to truncation values on
- hw where sizeof (DWORD) > sizeof (int).
-
- 3. We are currently using a special mutex instead of the Critical
- Sections, since Win9x does not support TryEnterCriticalSection
- (while NT does).
-
- The basic framework should work well enough. In the long term, GCC
- needs to use Structured Exception Handling on Windows32. */
-
-int
-__gthr_win32_once (__gthread_once_t *once, void (*func) (void))
-{
- if (once == NULL || func == NULL)
- return EINVAL;
-
- if (! once->done)
- {
- if (InterlockedIncrement (&(once->started)) == 0)
- {
- (*func) ();
- once->done = TRUE;
- }
- else
- {
- /* Another thread is currently executing the code, so wait for it
- to finish; yield the CPU in the meantime. If performance
- does become an issue, the solution is to use an Event that
- we wait on here (and set above), but that implies a place to
- create the event before this routine is called. */
- while (! once->done)
- Sleep (0);
- }
- }
- return 0;
-}
-
-/* Windows32 thread local keys don't support destructors; this leads to
- leaks, especially in threaded applications making extensive use of
- C++ EH. Mingw uses a thread-support DLL to work-around this problem. */
-
-int
-__gthr_win32_key_create (__gthread_key_t *key,
- void (*dtor) (void *) __attribute__((unused)))
-{
- int status = 0;
- DWORD tls_index = TlsAlloc ();
- if (tls_index != 0xFFFFFFFF)
- {
- *key = tls_index;
-#ifdef MINGW32_SUPPORTS_MT_EH
- /* Mingw runtime will run the dtors in reverse order for each thread
- when the thread exits. */
- status = __mingwthr_key_dtor (*key, dtor);
-#endif
- }
- else
- status = (int) GetLastError ();
- return status;
-}
-
-int
-__gthr_win32_key_delete (__gthread_key_t key)
-{
- return (TlsFree (key) != 0) ? 0 : (int) GetLastError ();
-}
-
-void *
-__gthr_win32_getspecific (__gthread_key_t key)
-{
- DWORD lasterror;
- void *ptr;
- lasterror = GetLastError();
- ptr = TlsGetValue(key);
- SetLastError( lasterror );
- return ptr;
-}
-
-int
-__gthr_win32_setspecific (__gthread_key_t key, const void *ptr)
-{
- if (TlsSetValue (key, CONST_CAST2(void *, const void *, ptr)) != 0)
- return 0;
- else
- return GetLastError ();
-}
-
-void
-__gthr_win32_mutex_init_function (__gthread_mutex_t *mutex)
-{
- mutex->counter = -1;
- mutex->sema = CreateSemaphore (NULL, 0, 65535, NULL);
-}
-
-void
-__gthr_win32_mutex_destroy (__gthread_mutex_t *mutex)
-{
- CloseHandle ((HANDLE) mutex->sema);
-}
-
-int
-__gthr_win32_mutex_lock (__gthread_mutex_t *mutex)
-{
- if (InterlockedIncrement (&mutex->counter) == 0 ||
- WaitForSingleObject (mutex->sema, INFINITE) == WAIT_OBJECT_0)
- return 0;
- else
- {
- /* WaitForSingleObject returns WAIT_FAILED, and we can only do
- some best-effort cleanup here. */
- InterlockedDecrement (&mutex->counter);
- return 1;
- }
-}
-
-int
-__gthr_win32_mutex_trylock (__gthread_mutex_t *mutex)
-{
- if (__GTHR_W32_InterlockedCompareExchange (&mutex->counter, 0, -1) < 0)
- return 0;
- else
- return 1;
-}
-
-int
-__gthr_win32_mutex_unlock (__gthread_mutex_t *mutex)
-{
- if (InterlockedDecrement (&mutex->counter) >= 0)
- return ReleaseSemaphore (mutex->sema, 1, NULL) ? 0 : 1;
- else
- return 0;
-}
-
-void
-__gthr_win32_recursive_mutex_init_function (__gthread_recursive_mutex_t *mutex)
-{
- mutex->counter = -1;
- mutex->depth = 0;
- mutex->owner = 0;
- mutex->sema = CreateSemaphore (NULL, 0, 65535, NULL);
-}
-
-int
-__gthr_win32_recursive_mutex_lock (__gthread_recursive_mutex_t *mutex)
-{
- DWORD me = GetCurrentThreadId();
- if (InterlockedIncrement (&mutex->counter) == 0)
- {
- mutex->depth = 1;
- mutex->owner = me;
- }
- else if (mutex->owner == me)
- {
- InterlockedDecrement (&mutex->counter);
- ++(mutex->depth);
- }
- else if (WaitForSingleObject (mutex->sema, INFINITE) == WAIT_OBJECT_0)
- {
- mutex->depth = 1;
- mutex->owner = me;
- }
- else
- {
- /* WaitForSingleObject returns WAIT_FAILED, and we can only do
- some best-effort cleanup here. */
- InterlockedDecrement (&mutex->counter);
- return 1;
- }
- return 0;
-}
-
-int
-__gthr_win32_recursive_mutex_trylock (__gthread_recursive_mutex_t *mutex)
-{
- DWORD me = GetCurrentThreadId();
- if (__GTHR_W32_InterlockedCompareExchange (&mutex->counter, 0, -1) < 0)
- {
- mutex->depth = 1;
- mutex->owner = me;
- }
- else if (mutex->owner == me)
- ++(mutex->depth);
- else
- return 1;
-
- return 0;
-}
-
-int
-__gthr_win32_recursive_mutex_unlock (__gthread_recursive_mutex_t *mutex)
-{
- --(mutex->depth);
- if (mutex->depth == 0)
- {
- mutex->owner = 0;
-
- if (InterlockedDecrement (&mutex->counter) >= 0)
- return ReleaseSemaphore (mutex->sema, 1, NULL) ? 0 : 1;
- }
-
- return 0;
-}
diff --git a/gcc/config/i386/t-cygming b/gcc/config/i386/t-cygming
index 3e7f7cdd036..18b57c4152a 100644
--- a/gcc/config/i386/t-cygming
+++ b/gcc/config/i386/t-cygming
@@ -21,11 +21,6 @@
# doing the build, it may not be installed yet.
LIMITS_H_TEST = true
-# If we are building next to winsup, this will let us find the real
-# limits.h when building libgcc2. Otherwise, winsup must be installed
-# first.
-LIBGCC2_INCLUDES = -I$(srcdir)/../winsup/w32api/include
-
winnt.o: $(srcdir)/config/i386/winnt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(RTL_H) $(REGS_H) hard-reg-set.h output.h $(TREE_H) flags.h \
$(TM_P_H) $(HASHTAB_H) $(GGC_H) $(LTO_STREAMER_H)
diff --git a/gcc/config/i386/t-cygwin b/gcc/config/i386/t-cygwin
deleted file mode 100644
index 9ac234b6f49..00000000000
--- a/gcc/config/i386/t-cygwin
+++ /dev/null
@@ -1,24 +0,0 @@
-# Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2008, 2009, 2010, 2011
-# Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-# If we are building next to winsup, this will let us find the real
-# limits.h when building libgcc2. Otherwise, winsup must be installed
-# first.
-LIBGCC2_INCLUDES += -I$(srcdir)/../winsup/include \
- -I$(srcdir)/../winsup/cygwin/include
diff --git a/gcc/config/i386/t-darwin b/gcc/config/i386/t-darwin
index 22323e4abee..bf44504d4fd 100644
--- a/gcc/config/i386/t-darwin
+++ b/gcc/config/i386/t-darwin
@@ -1,5 +1,2 @@
MULTILIB_OPTIONS = m64
MULTILIB_DIRNAMES = x86_64
-LIB2_SIDITI_CONV_FUNCS=yes
-LIB2FUNCS_EXTRA = $(srcdir)/config/darwin-64.c
-LIB2FUNCS_EXCLUDE = _fixtfdi _fixunstfdi _floatditf _floatunditf
diff --git a/gcc/config/i386/t-darwin64 b/gcc/config/i386/t-darwin64
index 81b4565ac72..6a6b22f1ee5 100644
--- a/gcc/config/i386/t-darwin64
+++ b/gcc/config/i386/t-darwin64
@@ -1,8 +1,2 @@
-LIB2_SIDITI_CONV_FUNCS=yes
-LIB2FUNCS_EXTRA = $(srcdir)/config/darwin-64.c
-
MULTILIB_OPTIONS = m32
MULTILIB_DIRNAMES = i386
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/i386/t-gthr-win32 b/gcc/config/i386/t-gthr-win32
deleted file mode 100644
index f67fa1e25a8..00000000000
--- a/gcc/config/i386/t-gthr-win32
+++ /dev/null
@@ -1,2 +0,0 @@
-# We hide calls to w32api needed for w32 thread support here:
-LIB2FUNCS_EXTRA = $(srcdir)/config/i386/gthr-win32.c
diff --git a/gcc/config/i386/t-linux64 b/gcc/config/i386/t-linux64
index 4db41ea51ee..b5d39855a70 100644
--- a/gcc/config/i386/t-linux64
+++ b/gcc/config/i386/t-linux64
@@ -37,6 +37,3 @@ MULTILIB_DIRNAMES = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS)))
MULTILIB_OSDIRNAMES = m64=../lib64
MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
MULTILIB_OSDIRNAMES+= mx32=../libx32
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/i386/t-mingw-w32 b/gcc/config/i386/t-mingw-w32
index 68669d44a0a..4fc8582cf5e 100644
--- a/gcc/config/i386/t-mingw-w32
+++ b/gcc/config/i386/t-mingw-w32
@@ -1,6 +1,3 @@
MULTILIB_OPTIONS = m64/m32
MULTILIB_DIRNAMES = 64 32
MULTILIB_OSDIRNAMES = ../lib64 ../lib
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/i386/t-mingw-w64 b/gcc/config/i386/t-mingw-w64
index 1e86e05e701..c809ebd7d1d 100644
--- a/gcc/config/i386/t-mingw-w64
+++ b/gcc/config/i386/t-mingw-w64
@@ -1,6 +1,3 @@
MULTILIB_OPTIONS = m64/m32
MULTILIB_DIRNAMES = 64 32
MULTILIB_OSDIRNAMES = ../lib ../lib32
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/i386/t-nto b/gcc/config/i386/t-nto
deleted file mode 100644
index b72c00d04a6..00000000000
--- a/gcc/config/i386/t-nto
+++ /dev/null
@@ -1 +0,0 @@
-TARGET_LIBGCC2_CFLAGS = -fPIC -fexceptions
diff --git a/gcc/config/i386/t-openbsd b/gcc/config/i386/t-openbsd
index 18304634000..4f8ff657a93 100644
--- a/gcc/config/i386/t-openbsd
+++ b/gcc/config/i386/t-openbsd
@@ -2,5 +2,3 @@
# We cope by building variants of libgcc.
MULTILIB_OPTIONS = fpic
MULTILIB_MATCHES=fpic=fPIC
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/ia64/quadlib.c b/gcc/config/ia64/quadlib.c
deleted file mode 100644
index f9ee30b587c..00000000000
--- a/gcc/config/ia64/quadlib.c
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Subroutines for long double support.
- Copyright (C) 2000, 2001, 2002, 2009 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC 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 General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-extern int _U_Qfcmp (long double a, long double b, int);
-
-int _U_Qfeq (long double, long double);
-int _U_Qfne (long double, long double);
-int _U_Qfgt (long double, long double);
-int _U_Qfge (long double, long double);
-int _U_Qflt (long double, long double);
-int _U_Qfle (long double, long double);
-int _U_Qfcomp (long double, long double);
-
-int
-_U_Qfeq (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, 4) != 0);
-}
-
-int
-_U_Qfne (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, 4) == 0);
-}
-
-int
-_U_Qfgt (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, 17) != 0);
-}
-
-int
-_U_Qfge (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, 21) != 0);
-}
-
-int
-_U_Qflt (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, 9) != 0);
-}
-
-int
-_U_Qfle (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, 13) != 0);
-}
-
-int
-_U_Qfcomp (long double a, long double b)
-{
- if (_U_Qfcmp (a, b, 4) == 0)
- return 0;
-
- return (_U_Qfcmp (a, b, 22) != 0 ? 1 : -1);
-}
diff --git a/gcc/config/ia64/t-hpux b/gcc/config/ia64/t-hpux
index 23691f3856c..a1b681a3a25 100644
--- a/gcc/config/ia64/t-hpux
+++ b/gcc/config/ia64/t-hpux
@@ -19,20 +19,10 @@
# We need multilib support for HPUX's ILP32 & LP64 modes.
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
-
MULTILIB_OPTIONS = milp32/mlp64
MULTILIB_DIRNAMES = hpux32 hpux64
MULTILIB_MATCHES =
-# Support routines for HP-UX 128 bit floats.
-
-LIB2FUNCS_EXTRA=quadlib.c $(srcdir)/config/floatunsitf.c
-
-quadlib.c: $(srcdir)/config/ia64/quadlib.c
- cat $(srcdir)/config/ia64/quadlib.c > quadlib.c
-
# We do not want to include the EH stuff that linux uses, we want to use
# the HP-UX libunwind library.
diff --git a/gcc/config/ia64/t-ia64 b/gcc/config/ia64/t-ia64
index 8a54d46b458..398aba1019f 100644
--- a/gcc/config/ia64/t-ia64
+++ b/gcc/config/ia64/t-ia64
@@ -18,13 +18,6 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-# ??? Hack to get -P option used when compiling lib1funcs.asm, because Intel
-# assembler does not accept # line number as a comment.
-# ??? This breaks C++ pragma interface/implementation, which is used in the
-# C++ part of libgcc2, hence it had to be disabled. Must find some other way
-# to support the Intel assembler.
-#LIBGCC2_DEBUG_CFLAGS = -g1 -P
-
ia64-c.o: $(srcdir)/config/ia64/ia64-c.c $(CONFIG_H) $(SYSTEM_H) \
coretypes.h $(TM_H) $(TREE_H) $(CPPLIB_H) $(C_COMMON_H) $(C_PRAGMA_H)
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
diff --git a/gcc/config/iq2000/lib2extra-funcs.c b/gcc/config/iq2000/lib2extra-funcs.c
deleted file mode 100644
index d53786c8c7d..00000000000
--- a/gcc/config/iq2000/lib2extra-funcs.c
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Copyright (C) 2003 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-typedef unsigned int USItype __attribute__ ((mode (SI)));
-
-USItype
-__mulsi3 (USItype a, USItype b)
-{
- USItype c = 0;
-
- while (a != 0)
- {
- if (a & 1)
- c += b;
- a >>= 1;
- b <<= 1;
- }
-
- return c;
-}
diff --git a/gcc/config/iq2000/t-iq2000 b/gcc/config/iq2000/t-iq2000
deleted file mode 100644
index c634e58646e..00000000000
--- a/gcc/config/iq2000/t-iq2000
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2003, 2010, 2011 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-LIB2FUNCS_EXTRA = $(srcdir)/config/udivmod.c $(srcdir)/config/divmod.c $(srcdir)/config/udivmodsi4.c $(srcdir)/config/iq2000/lib2extra-funcs.c
-
-# Enable the following if multilibs are needed.
-# See gcc/genmultilib, gcc/gcc.texi and gcc/tm.texi for a
-# description of the options and their values.
-#
-# MULTILIB_OPTIONS =
-# MULTILIB_DIRNAMES =
-# MULTILIB_MATCHES =
-# MULTILIB_EXCEPTIONS =
-# MULTILIB_EXTRA_OPTS =
-#
-# LIBGCC = stmp-multilib
-# INSTALL_LIBGCC = install-multilib
-
diff --git a/gcc/config/m32c/m32c-lib2-trapv.c b/gcc/config/m32c/m32c-lib2-trapv.c
deleted file mode 100644
index bb61ceaf0f4..00000000000
--- a/gcc/config/m32c/m32c-lib2-trapv.c
+++ /dev/null
@@ -1,43 +0,0 @@
-/* 16-bit trapping arithmetic routines for R8C/M16C/M32C
- Copyright (C) 2009
- Free Software Foundation, Inc.
- Contributed by Red Hat.
-
- This file is part of GCC.
-
- GCC is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3, or (at your
- option) any later version.
-
- GCC 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 General Public
- License for more details.
-
- Under Section 7 of GPL version 3, you are granted additional
- permissions described in the GCC Runtime Library Exception, version
- 3.1, as published by the Free Software Foundation.
-
- You should have received a copy of the GNU General Public License and
- a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
-/* See the comment by the definition of LIBGCC2_UNITS_PER_WORD in
- m32c.h for why we are creating extra versions of some of the
- functions defined in libgcc2.c.
-
- Note - this file is separate from m32c-lib2.c so that the following
- functions will appear in the their object file. This is necessary
- because they call abort() which is defined in the C library whereas
- the functions in m32c-lib2.c are completely self sufficieent. */
-
-#define LIBGCC2_UNITS_PER_WORD 2
-
-#define L_mulvsi3
-#define L_negvsi2
-#define L_addvsi3
-#define L_subvsi3
-
-#include "libgcc2.c"
diff --git a/gcc/config/m32c/m32c-lib2.c b/gcc/config/m32c/m32c-lib2.c
deleted file mode 100644
index 274affc4ab0..00000000000
--- a/gcc/config/m32c/m32c-lib2.c
+++ /dev/null
@@ -1,134 +0,0 @@
-/* libgcc routines for R8C/M16C/M32C
- Copyright (C) 2005, 2009
- Free Software Foundation, Inc.
- Contributed by Red Hat.
-
- This file is part of GCC.
-
- GCC is free software; you can redistribute it and/or modify it
- under the terms of the GNU General Public License as published
- by the Free Software Foundation; either version 3, or (at your
- option) any later version.
-
- GCC 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 General Public
- License for more details.
-
- Under Section 7 of GPL version 3, you are granted additional
- permissions described in the GCC Runtime Library Exception, version
- 3.1, as published by the Free Software Foundation.
-
- You should have received a copy of the GNU General Public License and
- a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
-typedef int sint32_type __attribute__ ((mode (SI)));
-typedef unsigned int uint32_type __attribute__ ((mode (SI)));
-typedef int word_type __attribute__ ((mode (__word__)));
-
-uint32_type udivmodsi4 (uint32_type, uint32_type, word_type);
-sint32_type __divsi3 (sint32_type, sint32_type);
-sint32_type __modsi3 (sint32_type, sint32_type);
-
-uint32_type
-udivmodsi4 (uint32_type num, uint32_type den, word_type modwanted)
-{
- uint32_type bit = 1;
- uint32_type res = 0;
-
- while (den < num && bit && !(den & (1L << 31)))
- {
- den <<= 1;
- bit <<= 1;
- }
- while (bit)
- {
- if (num >= den)
- {
- num -= den;
- res |= bit;
- }
- bit >>= 1;
- den >>= 1;
- }
- if (modwanted)
- return num;
- return res;
-}
-
-sint32_type
-__divsi3 (sint32_type a, sint32_type b)
-{
- word_type neg = 0;
- sint32_type res;
-
- if (a < 0)
- {
- a = -a;
- neg = !neg;
- }
-
- if (b < 0)
- {
- b = -b;
- neg = !neg;
- }
-
- res = udivmodsi4 (a, b, 0);
-
- if (neg)
- res = -res;
-
- return res;
-}
-
-sint32_type
-__modsi3 (sint32_type a, sint32_type b)
-{
- word_type neg = 0;
- sint32_type res;
-
- if (a < 0)
- {
- a = -a;
- neg = 1;
- }
-
- if (b < 0)
- b = -b;
-
- res = udivmodsi4 (a, b, 1);
-
- if (neg)
- res = -res;
-
- return res;
-}
-
-/* See the comment by the definition of LIBGCC2_UNITS_PER_WORD in
- m32c.h for why we are creating extra versions of some of the
- functions defined in libgcc2.c. */
-
-#define LIBGCC2_UNITS_PER_WORD 2
-
-#define L_clzsi2
-#define L_ctzsi2
-#define L_ffssi2
-#define L_paritysi2
-#define L_popcountsi2
-
-#include "libgcc2.c"
-
-uint32_type
-__udivsi3 (uint32_type a, uint32_type b)
-{
- return udivmodsi4 (a, b, 0);
-}
-
-uint32_type
-__umoddi3 (uint32_type a, uint32_type b)
-{
- return udivmodsi4 (a, b, 1);
-}
diff --git a/gcc/config/m32c/t-m32c b/gcc/config/m32c/t-m32c
index aad972a2575..1e4ed6b7113 100644
--- a/gcc/config/m32c/t-m32c
+++ b/gcc/config/m32c/t-m32c
@@ -19,8 +19,6 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-LIB2FUNCS_EXTRA = $(srcdir)/config/m32c/m32c-lib2.c $(srcdir)/config/m32c/m32c-lib2-trapv.c
-
# target-specific files
md_file = md
diff --git a/gcc/config/m32r/t-linux b/gcc/config/m32r/t-linux
index f3b89d21d0b..c4f7dcc0bd6 100644
--- a/gcc/config/m32r/t-linux
+++ b/gcc/config/m32r/t-linux
@@ -16,10 +16,5 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-# Turn off the SDA while compiling libgcc2. There are no headers for it
-# and we want maximal upward compatibility here.
-
-TARGET_LIBGCC2_CFLAGS = -G 0 -fPIC
-
# Don't install "assert.h" in gcc. We use the one in glibc.
INSTALL_ASSERT_H =
diff --git a/gcc/config/m32r/t-m32r b/gcc/config/m32r/t-m32r
index 81f0247694e..e048fbf04f2 100644
--- a/gcc/config/m32r/t-m32r
+++ b/gcc/config/m32r/t-m32r
@@ -17,11 +17,6 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-# Turn off the SDA while compiling libgcc2. There are no headers for it
-# and we want maximal upward compatibility here.
-
-TARGET_LIBGCC2_CFLAGS = -G 0
-
# -mmodel={small,medium} requires separate libraries.
# We don't build libraries for the large model, instead we use the medium
# libraries. The only difference is that the large model can handle jumps
@@ -35,6 +30,3 @@ MULTILIB_MATCHES = mmodel?medium=mmodel?large
# SHN_M32R_SCOMMON.
# This is important for objects referenced in system header files.
MULTILIB_EXTRA_OPTS = msdata=sdata
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/m68k/fpgnulib.c b/gcc/config/m68k/fpgnulib.c
deleted file mode 100644
index 2a7f6c75d11..00000000000
--- a/gcc/config/m68k/fpgnulib.c
+++ /dev/null
@@ -1,595 +0,0 @@
-/* This is a stripped down version of floatlib.c. It supplies only those
- functions which exist in libgcc, but for which there is not assembly
- language versions in m68k/lb1sf68.asm.
-
- It also includes simplistic support for extended floats (by working in
- double precision). You must compile this file again with -DEXTFLOAT
- to get this support. */
-
-/*
-** gnulib support for software floating point.
-** Copyright (C) 1991 by Pipeline Associates, Inc. All rights reserved.
-** Permission is granted to do *anything* you want with this file,
-** commercial or otherwise, provided this message remains intact. So there!
-** I would appreciate receiving any updates/patches/changes that anyone
-** makes, and am willing to be the repository for said changes (am I
-** making a big mistake?).
-**
-** Pat Wood
-** Pipeline Associates, Inc.
-** pipeline!phw@motown.com or
-** sun!pipeline!phw or
-** uunet!motown!pipeline!phw
-**
-** 05/01/91 -- V1.0 -- first release to gcc mailing lists
-** 05/04/91 -- V1.1 -- added float and double prototypes and return values
-** -- fixed problems with adding and subtracting zero
-** -- fixed rounding in truncdfsf2
-** -- fixed SWAP define and tested on 386
-*/
-
-/*
-** The following are routines that replace the gnulib soft floating point
-** routines that are called automatically when -msoft-float is selected.
-** The support single and double precision IEEE format, with provisions
-** for byte-swapped machines (tested on 386). Some of the double-precision
-** routines work at full precision, but most of the hard ones simply punt
-** and call the single precision routines, producing a loss of accuracy.
-** long long support is not assumed or included.
-** Overall accuracy is close to IEEE (actually 68882) for single-precision
-** arithmetic. I think there may still be a 1 in 1000 chance of a bit
-** being rounded the wrong way during a multiply. I'm not fussy enough to
-** bother with it, but if anyone is, knock yourself out.
-**
-** Efficiency has only been addressed where it was obvious that something
-** would make a big difference. Anyone who wants to do this right for
-** best speed should go in and rewrite in assembler.
-**
-** I have tested this only on a 68030 workstation and 386/ix integrated
-** in with -msoft-float.
-*/
-
-/* the following deal with IEEE single-precision numbers */
-#define EXCESS 126L
-#define SIGNBIT 0x80000000L
-#define HIDDEN (1L << 23L)
-#define SIGN(fp) ((fp) & SIGNBIT)
-#define EXP(fp) (((fp) >> 23L) & 0xFF)
-#define MANT(fp) (((fp) & 0x7FFFFFL) | HIDDEN)
-#define PACK(s,e,m) ((s) | ((e) << 23L) | (m))
-
-/* the following deal with IEEE double-precision numbers */
-#define EXCESSD 1022L
-#define HIDDEND (1L << 20L)
-#define EXPDBITS 11
-#define EXPDMASK 0x7FFL
-#define EXPD(fp) (((fp.l.upper) >> 20L) & 0x7FFL)
-#define SIGND(fp) ((fp.l.upper) & SIGNBIT)
-#define MANTD(fp) (((((fp.l.upper) & 0xFFFFF) | HIDDEND) << 10) | \
- (fp.l.lower >> 22))
-#define MANTDMASK 0xFFFFFL /* mask of upper part */
-
-/* the following deal with IEEE extended-precision numbers */
-#define EXCESSX 16382L
-#define HIDDENX (1L << 31L)
-#define EXPXBITS 15
-#define EXPXMASK 0x7FFF
-#define EXPX(fp) (((fp.l.upper) >> 16) & EXPXMASK)
-#define SIGNX(fp) ((fp.l.upper) & SIGNBIT)
-#define MANTXMASK 0x7FFFFFFFL /* mask of upper part */
-
-union double_long
-{
- double d;
- struct {
- long upper;
- unsigned long lower;
- } l;
-};
-
-union float_long {
- float f;
- long l;
-};
-
-union long_double_long
-{
- long double ld;
- struct
- {
- long upper;
- unsigned long middle;
- unsigned long lower;
- } l;
-};
-
-#ifndef EXTFLOAT
-
-int
-__unordsf2(float a, float b)
-{
- union float_long fl;
-
- fl.f = a;
- if (EXP(fl.l) == EXP(~0u) && (MANT(fl.l) & ~HIDDEN) != 0)
- return 1;
- fl.f = b;
- if (EXP(fl.l) == EXP(~0u) && (MANT(fl.l) & ~HIDDEN) != 0)
- return 1;
- return 0;
-}
-
-int
-__unorddf2(double a, double b)
-{
- union double_long dl;
-
- dl.d = a;
- if (EXPD(dl) == EXPDMASK
- && ((dl.l.upper & MANTDMASK) != 0 || dl.l.lower != 0))
- return 1;
- dl.d = b;
- if (EXPD(dl) == EXPDMASK
- && ((dl.l.upper & MANTDMASK) != 0 || dl.l.lower != 0))
- return 1;
- return 0;
-}
-
-/* convert unsigned int to double */
-double
-__floatunsidf (unsigned long a1)
-{
- long exp = 32 + EXCESSD;
- union double_long dl;
-
- if (!a1)
- {
- dl.l.upper = dl.l.lower = 0;
- return dl.d;
- }
-
- while (a1 < 0x2000000L)
- {
- a1 <<= 4;
- exp -= 4;
- }
-
- while (a1 < 0x80000000L)
- {
- a1 <<= 1;
- exp--;
- }
-
- /* pack up and go home */
- dl.l.upper = exp << 20L;
- dl.l.upper |= (a1 >> 11L) & ~HIDDEND;
- dl.l.lower = a1 << 21L;
-
- return dl.d;
-}
-
-/* convert int to double */
-double
-__floatsidf (long a1)
-{
- long sign = 0, exp = 31 + EXCESSD;
- union double_long dl;
-
- if (!a1)
- {
- dl.l.upper = dl.l.lower = 0;
- return dl.d;
- }
-
- if (a1 < 0)
- {
- sign = SIGNBIT;
- a1 = (long)-(unsigned long)a1;
- if (a1 < 0)
- {
- dl.l.upper = SIGNBIT | ((32 + EXCESSD) << 20L);
- dl.l.lower = 0;
- return dl.d;
- }
- }
-
- while (a1 < 0x1000000L)
- {
- a1 <<= 4;
- exp -= 4;
- }
-
- while (a1 < 0x40000000L)
- {
- a1 <<= 1;
- exp--;
- }
-
- /* pack up and go home */
- dl.l.upper = sign;
- dl.l.upper |= exp << 20L;
- dl.l.upper |= (a1 >> 10L) & ~HIDDEND;
- dl.l.lower = a1 << 22L;
-
- return dl.d;
-}
-
-/* convert unsigned int to float */
-float
-__floatunsisf (unsigned long l)
-{
- double foo = __floatunsidf (l);
- return foo;
-}
-
-/* convert int to float */
-float
-__floatsisf (long l)
-{
- double foo = __floatsidf (l);
- return foo;
-}
-
-/* convert float to double */
-double
-__extendsfdf2 (float a1)
-{
- register union float_long fl1;
- register union double_long dl;
- register long exp;
- register long mant;
-
- fl1.f = a1;
-
- dl.l.upper = SIGN (fl1.l);
- if ((fl1.l & ~SIGNBIT) == 0)
- {
- dl.l.lower = 0;
- return dl.d;
- }
-
- exp = EXP(fl1.l);
- mant = MANT (fl1.l) & ~HIDDEN;
- if (exp == 0)
- {
- /* Denormal. */
- exp = 1;
- while (!(mant & HIDDEN))
- {
- mant <<= 1;
- exp--;
- }
- mant &= ~HIDDEN;
- }
- exp = exp - EXCESS + EXCESSD;
- dl.l.upper |= exp << 20;
- dl.l.upper |= mant >> 3;
- dl.l.lower = mant << 29;
-
- return dl.d;
-}
-
-/* convert double to float */
-float
-__truncdfsf2 (double a1)
-{
- register long exp;
- register long mant;
- register union float_long fl;
- register union double_long dl1;
- int sticky;
- int shift;
-
- dl1.d = a1;
-
- if ((dl1.l.upper & ~SIGNBIT) == 0 && !dl1.l.lower)
- {
- fl.l = SIGND(dl1);
- return fl.f;
- }
-
- exp = EXPD (dl1) - EXCESSD + EXCESS;
-
- sticky = dl1.l.lower & ((1 << 22) - 1);
- mant = MANTD (dl1);
- /* shift double mantissa 6 bits so we can round */
- sticky |= mant & ((1 << 6) - 1);
- mant >>= 6;
-
- /* Check for underflow and denormals. */
- if (exp <= 0)
- {
- if (exp < -24)
- {
- sticky |= mant;
- mant = 0;
- }
- else
- {
- sticky |= mant & ((1 << (1 - exp)) - 1);
- mant >>= 1 - exp;
- }
- exp = 0;
- }
-
- /* now round */
- shift = 1;
- if ((mant & 1) && (sticky || (mant & 2)))
- {
- int rounding = exp ? 2 : 1;
-
- mant += 1;
-
- /* did the round overflow? */
- if (mant >= (HIDDEN << rounding))
- {
- exp++;
- shift = rounding;
- }
- }
- /* shift down */
- mant >>= shift;
-
- mant &= ~HIDDEN;
-
- /* pack up and go home */
- fl.l = PACK (SIGND (dl1), exp, mant);
- return (fl.f);
-}
-
-/* convert double to int */
-long
-__fixdfsi (double a1)
-{
- register union double_long dl1;
- register long exp;
- register long l;
-
- dl1.d = a1;
-
- if (!dl1.l.upper && !dl1.l.lower)
- return 0;
-
- exp = EXPD (dl1) - EXCESSD - 31;
- l = MANTD (dl1);
-
- if (exp > 0)
- {
- /* Return largest integer. */
- return SIGND (dl1) ? 0x80000000L : 0x7fffffffL;
- }
-
- if (exp <= -32)
- return 0;
-
- /* shift down until exp = 0 */
- if (exp < 0)
- l >>= -exp;
-
- return (SIGND (dl1) ? -l : l);
-}
-
-/* convert float to int */
-long
-__fixsfsi (float a1)
-{
- double foo = a1;
- return __fixdfsi (foo);
-}
-
-#else /* EXTFLOAT */
-
-/* We do not need these routines for coldfire, as it has no extended
- float format. */
-#if !defined (__mcoldfire__)
-
-/* Primitive extended precision floating point support.
-
- We assume all numbers are normalized, don't do any rounding, etc. */
-
-/* Prototypes for the above in case we use them. */
-double __floatunsidf (unsigned long);
-double __floatsidf (long);
-float __floatsisf (long);
-double __extendsfdf2 (float);
-float __truncdfsf2 (double);
-long __fixdfsi (double);
-long __fixsfsi (float);
-
-int
-__unordxf2(long double a, long double b)
-{
- union long_double_long ldl;
-
- ldl.ld = a;
- if (EXPX(ldl) == EXPXMASK
- && ((ldl.l.middle & MANTXMASK) != 0 || ldl.l.lower != 0))
- return 1;
- ldl.ld = b;
- if (EXPX(ldl) == EXPXMASK
- && ((ldl.l.middle & MANTXMASK) != 0 || ldl.l.lower != 0))
- return 1;
- return 0;
-}
-
-/* convert double to long double */
-long double
-__extenddfxf2 (double d)
-{
- register union double_long dl;
- register union long_double_long ldl;
- register long exp;
-
- dl.d = d;
- /*printf ("dfxf in: %g\n", d);*/
-
- ldl.l.upper = SIGND (dl);
- if ((dl.l.upper & ~SIGNBIT) == 0 && !dl.l.lower)
- {
- ldl.l.middle = 0;
- ldl.l.lower = 0;
- return ldl.ld;
- }
-
- exp = EXPD (dl) - EXCESSD + EXCESSX;
- ldl.l.upper |= exp << 16;
- ldl.l.middle = HIDDENX;
- /* 31-20: # mantissa bits in ldl.l.middle - # mantissa bits in dl.l.upper */
- ldl.l.middle |= (dl.l.upper & MANTDMASK) << (31 - 20);
- /* 1+20: explicit-integer-bit + # mantissa bits in dl.l.upper */
- ldl.l.middle |= dl.l.lower >> (1 + 20);
- /* 32 - 21: # bits of dl.l.lower in ldl.l.middle */
- ldl.l.lower = dl.l.lower << (32 - 21);
-
- /*printf ("dfxf out: %s\n", dumpxf (ldl.ld));*/
- return ldl.ld;
-}
-
-/* convert long double to double */
-double
-__truncxfdf2 (long double ld)
-{
- register long exp;
- register union double_long dl;
- register union long_double_long ldl;
-
- ldl.ld = ld;
- /*printf ("xfdf in: %s\n", dumpxf (ld));*/
-
- dl.l.upper = SIGNX (ldl);
- if ((ldl.l.upper & ~SIGNBIT) == 0 && !ldl.l.middle && !ldl.l.lower)
- {
- dl.l.lower = 0;
- return dl.d;
- }
-
- exp = EXPX (ldl) - EXCESSX + EXCESSD;
- /* ??? quick and dirty: keep `exp' sane */
- if (exp >= EXPDMASK)
- exp = EXPDMASK - 1;
- dl.l.upper |= exp << (32 - (EXPDBITS + 1));
- /* +1-1: add one for sign bit, but take one off for explicit-integer-bit */
- dl.l.upper |= (ldl.l.middle & MANTXMASK) >> (EXPDBITS + 1 - 1);
- dl.l.lower = (ldl.l.middle & MANTXMASK) << (32 - (EXPDBITS + 1 - 1));
- dl.l.lower |= ldl.l.lower >> (EXPDBITS + 1 - 1);
-
- /*printf ("xfdf out: %g\n", dl.d);*/
- return dl.d;
-}
-
-/* convert a float to a long double */
-long double
-__extendsfxf2 (float f)
-{
- long double foo = __extenddfxf2 (__extendsfdf2 (f));
- return foo;
-}
-
-/* convert a long double to a float */
-float
-__truncxfsf2 (long double ld)
-{
- float foo = __truncdfsf2 (__truncxfdf2 (ld));
- return foo;
-}
-
-/* convert an int to a long double */
-long double
-__floatsixf (long l)
-{
- double foo = __floatsidf (l);
- return foo;
-}
-
-/* convert an unsigned int to a long double */
-long double
-__floatunsixf (unsigned long l)
-{
- double foo = __floatunsidf (l);
- return foo;
-}
-
-/* convert a long double to an int */
-long
-__fixxfsi (long double ld)
-{
- long foo = __fixdfsi ((double) ld);
- return foo;
-}
-
-/* The remaining provide crude math support by working in double precision. */
-
-long double
-__addxf3 (long double x1, long double x2)
-{
- return (double) x1 + (double) x2;
-}
-
-long double
-__subxf3 (long double x1, long double x2)
-{
- return (double) x1 - (double) x2;
-}
-
-long double
-__mulxf3 (long double x1, long double x2)
-{
- return (double) x1 * (double) x2;
-}
-
-long double
-__divxf3 (long double x1, long double x2)
-{
- return (double) x1 / (double) x2;
-}
-
-long double
-__negxf2 (long double x1)
-{
- return - (double) x1;
-}
-
-long
-__cmpxf2 (long double x1, long double x2)
-{
- return __cmpdf2 ((double) x1, (double) x2);
-}
-
-long
-__eqxf2 (long double x1, long double x2)
-{
- return __cmpdf2 ((double) x1, (double) x2);
-}
-
-long
-__nexf2 (long double x1, long double x2)
-{
- return __cmpdf2 ((double) x1, (double) x2);
-}
-
-long
-__ltxf2 (long double x1, long double x2)
-{
- return __cmpdf2 ((double) x1, (double) x2);
-}
-
-long
-__lexf2 (long double x1, long double x2)
-{
- return __cmpdf2 ((double) x1, (double) x2);
-}
-
-long
-__gtxf2 (long double x1, long double x2)
-{
- return __cmpdf2 ((double) x1, (double) x2);
-}
-
-long
-__gexf2 (long double x1, long double x2)
-{
- return __cmpdf2 ((double) x1, (double) x2);
-}
-
-#endif /* !__mcoldfire__ */
-#endif /* EXTFLOAT */
diff --git a/gcc/config/m68k/t-floatlib b/gcc/config/m68k/t-floatlib
deleted file mode 100644
index 23734be40bd..00000000000
--- a/gcc/config/m68k/t-floatlib
+++ /dev/null
@@ -1,25 +0,0 @@
-# Copyright (C) 2007, 2011 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-LIB2FUNCS_EXTRA = fpgnulib.c xfgnulib.c
-
-fpgnulib.c: $(srcdir)/config/m68k/fpgnulib.c
- cp $(srcdir)/config/m68k/fpgnulib.c fpgnulib.c
-xfgnulib.c: $(srcdir)/config/m68k/fpgnulib.c
- echo '#define EXTFLOAT' > xfgnulib.c
- cat $(srcdir)/config/m68k/fpgnulib.c >> xfgnulib.c
diff --git a/gcc/config/m68k/t-mlibs b/gcc/config/m68k/t-mlibs
index 11df31f210e..7be0c9f4fd4 100644
--- a/gcc/config/m68k/t-mlibs
+++ b/gcc/config/m68k/t-mlibs
@@ -92,6 +92,3 @@ endif
# Remove the default CPU from the explicit exceptions.
MULTILIB_EXCEPTIONS := \
$(patsubst mcpu=$(M68K_MLIB_DEFAULT)/%,%,$(MULTILIB_EXCEPTIONS))
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/mcore/t-mcore b/gcc/config/mcore/t-mcore
index 265399cecfe..c848ceda3b3 100644
--- a/gcc/config/mcore/t-mcore
+++ b/gcc/config/mcore/t-mcore
@@ -16,25 +16,17 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-# could use -msifilter to be safe from interrupt/jmp interactions and others.
-TARGET_LIBGCC2_CFLAGS=-O3 -DNO_FLOATLIB_FIXUNSDFSI #-msifilter
-
# We have values for float.h.
CROSS_FLOAT_H = $(srcdir)/config/mcore/gfloat.h
# If support for -m4align is ever re-enabled then comment out the
-# following line and uncomment the mutlilib lines below.
+# following line and uncomment the multilib lines below.
# MULTILIB_OPTIONS = m8align/m4align
# MULTILIB_DIRNAMES = align8 align4
# MULTILIB_MATCHES =
# MULTILIB_EXTRA_OPTS =
# MULTILIB_EXCEPTIONS =
-# LIBGCC = stmp-multilib
-# INSTALL_LIBGCC = install-multilib
MULTILIB_OPTIONS = mbig-endian/mlittle-endian m210/m340
MULTILIB_DIRNAMES = big little m210 m340
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/memcmp.c b/gcc/config/memcmp.c
deleted file mode 100644
index 2348afe1d27..00000000000
--- a/gcc/config/memcmp.c
+++ /dev/null
@@ -1,16 +0,0 @@
-/* Public domain. */
-#include <stddef.h>
-
-int
-memcmp (const void *str1, const void *str2, size_t count)
-{
- const unsigned char *s1 = str1;
- const unsigned char *s2 = str2;
-
- while (count-- > 0)
- {
- if (*s1++ != *s2++)
- return s1[-1] < s2[-1] ? -1 : 1;
- }
- return 0;
-}
diff --git a/gcc/config/memcpy.c b/gcc/config/memcpy.c
deleted file mode 100644
index 58b1e405627..00000000000
--- a/gcc/config/memcpy.c
+++ /dev/null
@@ -1,12 +0,0 @@
-/* Public domain. */
-#include <stddef.h>
-
-void *
-memcpy (void *dest, const void *src, size_t len)
-{
- char *d = dest;
- const char *s = src;
- while (len--)
- *d++ = *s++;
- return dest;
-}
diff --git a/gcc/config/memmove.c b/gcc/config/memmove.c
deleted file mode 100644
index 13b340af6a0..00000000000
--- a/gcc/config/memmove.c
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Public domain. */
-#include <stddef.h>
-
-void *
-memmove (void *dest, const void *src, size_t len)
-{
- char *d = dest;
- const char *s = src;
- if (d < s)
- while (len--)
- *d++ = *s++;
- else
- {
- char *lasts = s + (len-1);
- char *lastd = d + (len-1);
- while (len--)
- *lastd-- = *lasts--;
- }
- return dest;
-}
diff --git a/gcc/config/memset.c b/gcc/config/memset.c
deleted file mode 100644
index 3e7025ee394..00000000000
--- a/gcc/config/memset.c
+++ /dev/null
@@ -1,11 +0,0 @@
-/* Public domain. */
-#include <stddef.h>
-
-void *
-memset (void *dest, int val, size_t len)
-{
- unsigned char *ptr = dest;
- while (len-- > 0)
- *ptr++ = val;
- return dest;
-}
diff --git a/gcc/config/mep/mep-lib2.c b/gcc/config/mep/mep-lib2.c
deleted file mode 100644
index 1dbf57d9535..00000000000
--- a/gcc/config/mep/mep-lib2.c
+++ /dev/null
@@ -1,139 +0,0 @@
-/* libgcc routines for MeP.
- Copyright 2001, 2002, 2009 Free Software Foundation, Inc
-
-This file is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 3 of the License, or (at your
-option) any later version.
-
-This file 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
-General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-typedef int SItype __attribute__ ((mode (SI)));
-typedef unsigned int USItype __attribute__ ((mode (SI)));
-
-typedef int word_type __attribute__ ((mode (__word__)));
-
-USItype
-__mulsi3 (USItype a, USItype b)
-{
- USItype c = 0;
-
- while (a != 0)
- {
- if (a & 1)
- c += b;
- a >>= 1;
- b <<= 1;
- }
-
- return c;
-}
-
-
-
-USItype
-udivmodsi4(USItype num, USItype den, word_type modwanted)
-{
- USItype bit = 1;
- USItype res = 0;
-
- while (den < num && bit && !(den & (1L<<31)))
- {
- den <<=1;
- bit <<=1;
- }
- while (bit)
- {
- if (num >= den)
- {
- num -= den;
- res |= bit;
- }
- bit >>=1;
- den >>=1;
- }
- if (modwanted) return num;
- return res;
-}
-
-
-
-SItype
-__divsi3 (SItype a, SItype b)
-{
- word_type neg = 0;
- SItype res;
-
- if (a < 0)
- {
- a = -a;
- neg = !neg;
- }
-
- if (b < 0)
- {
- b = -b;
- neg = !neg;
- }
-
- res = udivmodsi4 (a, b, 0);
-
- if (neg)
- res = -res;
-
- return res;
-}
-
-
-
-SItype
-__modsi3 (SItype a, SItype b)
-{
- word_type neg = 0;
- SItype res;
-
- if (a < 0)
- {
- a = -a;
- neg = 1;
- }
-
- if (b < 0)
- b = -b;
-
- res = udivmodsi4 (a, b, 1);
-
- if (neg)
- res = -res;
-
- return res;
-}
-
-
-
-
-SItype
-__udivsi3 (SItype a, SItype b)
-{
- return udivmodsi4 (a, b, 0);
-}
-
-
-
-SItype
-__umodsi3 (SItype a, SItype b)
-{
- return udivmodsi4 (a, b, 1);
-}
diff --git a/gcc/config/mep/mep-tramp.c b/gcc/config/mep/mep-tramp.c
deleted file mode 100644
index bf484ca4e95..00000000000
--- a/gcc/config/mep/mep-tramp.c
+++ /dev/null
@@ -1,103 +0,0 @@
-/* Trampoline support for MeP
- Copyright (C) 2004, 2007 Free Software Foundation, Inc.
- Contributed by Red Hat Inc.
-
-This file is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 3 of the License, or (at your
-option) any later version.
-
-This file 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
-General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/*
- 7a0a ldc $10,$pc
- c0ae000a lw $0,10($10)
- caae000e lw $10,14($10)
- 10ae jmp $10
- 00000000 static chain
- 00000000 function address
-*/
-
-static inline int
-cache_config_register(void) {
- int rv;
- asm ("ldc\t%0, $ccfg" : "=r" (rv));
- return rv;
-}
-
-#define ICACHE_SIZE ((cache_config_register() >> 16) & 0x7f)
-#define DCACHE_SIZE (cache_config_register() & 0x7f)
-
-#define ICACHE_DATA_BASE 0x00300000
-#define ICACHE_TAG_BASE 0x00310000
-#define DCACHE_DATA_BASE 0x00320000
-#define DCACHE_TAG_BASE 0x00330000
-
-static inline void
-flush_dcache (int addr)
-{
- asm volatile ("cache\t0, (%0)" : : "r" (addr));
-}
-
-void
-__mep_trampoline_helper (unsigned long *tramp,
- int function_address,
- int static_chain);
-
-void
-__mep_trampoline_helper (unsigned long *tramp,
- int function_address,
- int static_chain)
-{
- int dsize, isize;
-
-#ifdef __LITTLE_ENDIAN__
- tramp[0] = 0xc0ae7a0a;
- tramp[1] = 0xcaae000a;
- tramp[2] = 0x10ae000e;
-#else
- tramp[0] = 0x7a0ac0ae;
- tramp[1] = 0x000acaae;
- tramp[2] = 0x000e10ae;
-#endif
- tramp[3] = static_chain;
- tramp[4] = function_address;
-
- dsize = DCACHE_SIZE;
- isize = ICACHE_SIZE;
-
- if (dsize)
- {
- flush_dcache ((int)tramp);
- flush_dcache ((int)tramp+16);
- }
-
- if (isize)
- {
- int imask = (isize * 1024) - 1;
- int tmask = ~imask;
- unsigned int i;
- volatile unsigned int *tags;
-
- imask &= 0xffe0;
-
- for (i=(unsigned int)tramp; i<(unsigned int)tramp+20; i+=16)
- {
- tags = (unsigned int *)(ICACHE_TAG_BASE + (i & imask));
- if ((*tags & tmask) == (i & tmask))
- *tags &= ~1;
- }
- }
-}
diff --git a/gcc/config/mep/t-mep b/gcc/config/mep/t-mep
index ac4ad95bc87..96542c4782c 100644
--- a/gcc/config/mep/t-mep
+++ b/gcc/config/mep/t-mep
@@ -32,12 +32,6 @@ mep-pragma.o: $(srcdir)/config/mep/mep-pragma.c $(CONFIG_H) $(SYSTEM_H) \
function.h insn-config.h reload.h $(TARGET_H)
$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
-# multiply and divide routines
-
-LIB2FUNCS_EXTRA = \
- $(srcdir)/config/mep/mep-lib2.c \
- $(srcdir)/config/mep/mep-tramp.c
-
MULTILIB_OPTIONS = mel mall-opts mfar
MULTILIB_DIRNAMES = el allopt far
diff --git a/gcc/config/mips/t-elf b/gcc/config/mips/t-elf
index d6c18e6b819..b4535d28fc4 100644
--- a/gcc/config/mips/t-elf
+++ b/gcc/config/mips/t-elf
@@ -17,15 +17,8 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-# We must build libgcc2.a with -G 0, in case the user wants to link
-# without the $gp register.
-TARGET_LIBGCC2_CFLAGS = -G 0
-
# Build the libraries for both hard and soft floating point
MULTILIB_OPTIONS = msoft-float EL/EB
MULTILIB_DIRNAMES = soft-float el eb
MULTILIB_MATCHES = EL=mel EB=meb msingle-float=m4650
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/mips/t-isa3264 b/gcc/config/mips/t-isa3264
index 3ac98389c8f..7291193f8a6 100644
--- a/gcc/config/mips/t-isa3264
+++ b/gcc/config/mips/t-isa3264
@@ -17,10 +17,6 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-# We must build libgcc2.a with -G 0, in case the user wants to link
-# without the $gp register.
-TARGET_LIBGCC2_CFLAGS = -G 0
-
# Build the libraries for both hard and soft floating point
ifneq ($(filter MIPS_ABI_DEFAULT=ABI_EABI,$(tm_defines)),)
@@ -36,6 +32,3 @@ MULTILIB_EXCLUSIONS = !mips32r2/mfp64
endif
endif
MULTILIB_MATCHES = EL=mel EB=meb
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/mips/t-mips b/gcc/config/mips/t-mips
index 53993e9d3c0..46c5ebcb1e4 100644
--- a/gcc/config/mips/t-mips
+++ b/gcc/config/mips/t-mips
@@ -16,8 +16,6 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-LIB2_SIDITI_CONV_FUNCS=yes
-
$(srcdir)/config/mips/mips-tables.opt: $(srcdir)/config/mips/genopt.sh \
$(srcdir)/config/mips/mips-cpus.def
$(SHELL) $(srcdir)/config/mips/genopt.sh $(srcdir)/config/mips > \
diff --git a/gcc/config/mips/t-r3900 b/gcc/config/mips/t-r3900
index d46c4d59433..d542df36ed6 100644
--- a/gcc/config/mips/t-r3900
+++ b/gcc/config/mips/t-r3900
@@ -17,15 +17,8 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-# We must build libgcc2.a with -G 0, in case the user wants to link
-# without the $gp register.
-TARGET_LIBGCC2_CFLAGS = -G 0
-
# Build the libraries for both hard and soft floating point
MULTILIB_OPTIONS = msoft-float EL/EB
MULTILIB_DIRNAMES = soft-float el eb
MULTILIB_MATCHES = EL=mel EB=meb
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/mips/t-sde b/gcc/config/mips/t-sde
index 3a6473441f2..d9c229ab4e0 100644
--- a/gcc/config/mips/t-sde
+++ b/gcc/config/mips/t-sde
@@ -33,7 +33,3 @@ MULTILIB_EXCLUSIONS += !mips32/!mips32r2/mips16
else
MULTILIB_EXCLUSIONS += mips64/mips16 mips64r2/mips16
endif
-
-# Build the multilibs.
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/mips/t-sr71k b/gcc/config/mips/t-sr71k
index f204017faa8..309eec6a650 100644
--- a/gcc/config/mips/t-sr71k
+++ b/gcc/config/mips/t-sr71k
@@ -16,14 +16,6 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-# We must build libgcc2.a with -G 0, in case the user wants to link
-# without the $gp register.
-TARGET_LIBGCC2_CFLAGS = -G 0
-
# Build the libraries for both hard and soft floating point
-
MULTILIB_OPTIONS = EL/EB msoft-float mips2
MULTILIB_DIRNAMES = el eb soft-float mips2
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/mips/t-vr b/gcc/config/mips/t-vr
index 16623ced564..de5ca706faf 100644
--- a/gcc/config/mips/t-vr
+++ b/gcc/config/mips/t-vr
@@ -16,17 +16,6 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-# BEGIN boiler-plate MIPS stuff
-
-# We must build libgcc2.a with -G 0, in case the user wants to link
-# without the $gp register.
-TARGET_LIBGCC2_CFLAGS = -G 0
-
-LIB2FUNCS_STATIC_EXTRA = $(srcdir)/config/mips/mips16.S \
- $(srcdir)/config/mips/vr4120-div.S
-
-# END boiler-plate
-
# Main multilibs
# --------------
#
diff --git a/gcc/config/mips/vr4120-div.S b/gcc/config/mips/vr4120-div.S
deleted file mode 100644
index 79ede3de955..00000000000
--- a/gcc/config/mips/vr4120-div.S
+++ /dev/null
@@ -1,74 +0,0 @@
-/* Support file for -mfix-vr4120.
- Copyright (C) 2002, 2004, 2007 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC 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 General Public License for more details.
-
-You should have received a copy of the GNU General Public License
- along with GCC; see the file COPYING3. If not see
-<http://www.gnu.org/licenses/>. */
-
-/* This file contains functions which implement divsi3 and modsi3 for
- -mfix-vr4120. div and ddiv do not give the correct result when one
- of the operands is negative. */
-
- .set nomips16
-
-#define DIV \
- xor $3,$4,$5 /* t = x ^ y */ ; \
- li $2,0x80000000; \
- .set noreorder; \
- bgez $4,1f /* x >= 0 */; \
- and $3,$3,$2 /* t = (x ^ y) & 0x80000000 in delay slot */ ;\
- .set reorder; \
- subu $4,$0,$4 /* x = -x */ ; \
-1:; \
- .set noreorder; \
- bgez $5,2f /* y >= 0 */ ; \
- nop; \
- subu $5,$0,$5 /* y = -y */ ; \
- .set reorder; \
-2:; \
- divu $0,$4,$5; /* we use divu because of INT_MIN */ \
- .set noreorder; \
- bne $5,$0,3f; \
- nop; \
- break 7 /* division on zero y */ ; \
-3:; \
- .set reorder; \
- mflo $2 /* r = x / y */ ; \
- .set noreorder; \
- beq $3,$0,4f /* t == 0 */ ; \
- nop; \
- subu $2,$0,$2 /* r = -r */ ; \
- .set reorder; \
-4:
-
- .globl __vr4120_divsi3
- .ent __vr4120_divsi3
-__vr4120_divsi3:
- DIV
- j $31
- .end __vr4120_divsi3
-
- .globl __vr4120_modsi3
- .ent __vr4120_modsi3
-__vr4120_modsi3:
- move $6,$4 # x1 = x
- move $7,$5 # y1 = y
- DIV
- mult $2,$7 # r = r * y1
- mflo $2
- .set noreorder
- j $31
- subu $2,$6,$2 # r = x1 - r in delay slot
- .end __vr4120_modsi3
diff --git a/gcc/config/mmix/t-mmix b/gcc/config/mmix/t-mmix
index bb2aabf83d2..b25eebcd35a 100644
--- a/gcc/config/mmix/t-mmix
+++ b/gcc/config/mmix/t-mmix
@@ -16,9 +16,5 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-# See "Target Fragment" in GCC info. That same order is used here.
-
-TARGET_LIBGCC2_CFLAGS = -mlibfuncs -O2
-
MULTILIB_OPTIONS = mabi=gnu
MULTILIB_DIRNAMES = gnuabi
diff --git a/gcc/config/mn10300/t-mn10300 b/gcc/config/mn10300/t-mn10300
index c62c56f2013..af22d94cdc3 100644
--- a/gcc/config/mn10300/t-mn10300
+++ b/gcc/config/mn10300/t-mn10300
@@ -19,6 +19,3 @@
MULTILIB_OPTIONS = mam33/mam33-2/mam34
MULTILIB_DIRNAMES = am33 am33-2 am34
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/pa/fptr.c b/gcc/config/pa/fptr.c
deleted file mode 100644
index 320d18267c8..00000000000
--- a/gcc/config/pa/fptr.c
+++ /dev/null
@@ -1,131 +0,0 @@
-/* Subroutine for function pointer canonicalization on PA-RISC with ELF32.
- Copyright 2002, 2003, 2004, 2007, 2009 Free Software Foundation, Inc.
- Contributed by John David Anglin (dave.anglin@nrc.ca).
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-
-/* WARNING: The code is this function depends on internal and undocumented
- details of the GNU linker and dynamic loader as implemented for parisc
- linux. */
-
-/* This MUST match the defines sysdeps/hppa/dl-machine.h and
- bfd/elf32-hppa.c. */
-#define GOT_FROM_PLT_STUB (4*4)
-
-/* List of byte offsets in _dl_runtime_resolve to search for "bl" branches.
- The first "bl" branch instruction found MUST be a call to fixup. See
- the define for TRAMPOLINE_TEMPLATE in sysdeps/hppa/dl-machine.h. If
- the trampoline template is changed, the list must be appropriately
- updated. The offset of -4 allows for a magic branch at the start of
- the template should it be necessary to change the current branch
- position. */
-#define NOFFSETS 2
-static int fixup_branch_offset[NOFFSETS] = { 32, -4 };
-
-#define GET_FIELD(X, FROM, TO) \
- ((X) >> (31 - (TO)) & ((1 << ((TO) - (FROM) + 1)) - 1))
-#define SIGN_EXTEND(VAL,BITS) \
- ((int) ((VAL) >> ((BITS) - 1) ? (-1 << (BITS)) | (VAL) : (VAL)))
-
-struct link_map;
-typedef int (*fptr_t) (void);
-typedef int (*fixup_t) (struct link_map *, unsigned int);
-extern unsigned int _GLOBAL_OFFSET_TABLE_;
-
-/* __canonicalize_funcptr_for_compare must be hidden so that it is not
- placed in the dynamic symbol table. Like millicode functions, it
- must be linked into all binaries in order access the got table of
- that binary. However, we don't use the millicode calling convention
- and the routine must be a normal function so that it can be compiled
- as pic code. */
-unsigned int __canonicalize_funcptr_for_compare (fptr_t)
- __attribute__ ((visibility ("hidden")));
-
-unsigned int
-__canonicalize_funcptr_for_compare (fptr_t fptr)
-{
- static unsigned int fixup_plabel[2];
- static fixup_t fixup;
- unsigned int *plabel, *got;
-
- /* -1 and page 0 are special. -1 is used in crtend to mark the end of
- a list of function pointers. Also return immediately if the plabel
- bit is not set in the function pointer. In this case, the function
- pointer points directly to the function. */
- if ((int) fptr == -1 || (unsigned int) fptr < 4096 || !((int) fptr & 2))
- return (unsigned int) fptr;
-
- /* The function pointer points to a function descriptor (plabel). If
- the plabel hasn't been resolved, the first word of the plabel points
- to the entry of the PLT stub just before the global offset table.
- The second word in the plabel contains the relocation offset for the
- function. */
- plabel = (unsigned int *) ((unsigned int) fptr & ~3);
- got = (unsigned int *) (plabel[0] + GOT_FROM_PLT_STUB);
-
- /* Return the address of the function if the plabel has been resolved. */
- if (got != &_GLOBAL_OFFSET_TABLE_)
- return plabel[0];
-
- /* Initialize our plabel for calling fixup if we haven't done so already.
- This code needs to be thread safe but we don't have to be too careful
- as the result is invariant. */
- if (!fixup)
- {
- int i;
- unsigned int *iptr;
-
- /* Find the first "bl" branch in the offset search list. This is a
- call to fixup or a magic branch to fixup at the beginning of the
- trampoline template. The fixup function does the actual runtime
- resolution of function descriptors. We only look for "bl" branches
- with a 17-bit pc-relative displacement. */
- for (i = 0; i < NOFFSETS; i++)
- {
- iptr = (unsigned int *) (got[-2] + fixup_branch_offset[i]);
- if ((*iptr & 0xfc00e000) == 0xe8000000)
- break;
- }
-
- /* This should not happen... */
- if (i == NOFFSETS)
- return ~0;
-
- /* Extract the 17-bit displacement from the instruction. */
- iptr += SIGN_EXTEND (GET_FIELD (*iptr, 19, 28) |
- GET_FIELD (*iptr, 29, 29) << 10 |
- GET_FIELD (*iptr, 11, 15) << 11 |
- GET_FIELD (*iptr, 31, 31) << 16, 17);
-
- /* Build a plabel for an indirect call to fixup. */
- fixup_plabel[0] = (unsigned int) iptr + 8; /* address of fixup */
- fixup_plabel[1] = got[-1]; /* ltp for fixup */
- fixup = (fixup_t) ((int) fixup_plabel | 3);
- }
-
- /* Call fixup to resolve the function address. got[1] contains the
- link_map pointer and plabel[1] the relocation offset. */
- fixup ((struct link_map *) got[1], plabel[1]);
-
- return plabel[0];
-}
diff --git a/gcc/config/pa/lib2funcs.asm b/gcc/config/pa/lib2funcs.asm
deleted file mode 100644
index 8aa398c8797..00000000000
--- a/gcc/config/pa/lib2funcs.asm
+++ /dev/null
@@ -1,74 +0,0 @@
-; Subroutines for calling unbound dynamic functions from within GDB for HPPA.
-; Subroutines for out of line prologues and epilogues on for the HPPA
-; Copyright (C) 1994, 1995, 1996, 2009 Free Software Foundation, Inc.
-
-; This file is part of GCC.
-
-; GCC is free software; you can redistribute it and/or modify
-; it under the terms of the GNU General Public License as published by
-; the Free Software Foundation; either version 3, or (at your option)
-; any later version.
-
-; GCC 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 General Public License for more details.
-
-; Under Section 7 of GPL version 3, you are granted additional
-; permissions described in the GCC Runtime Library Exception, version
-; 3.1, as published by the Free Software Foundation.
-
-; You should have received a copy of the GNU General Public License and
-; a copy of the GCC Runtime Library Exception along with this program;
-; see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-; <http://www.gnu.org/licenses/>.
-
-#if !defined(__pro__) && !defined(__rtems__)
- .SPACE $PRIVATE$
- .SUBSPA $DATA$,QUAD=1,ALIGN=8,ACCESS=31
- .SUBSPA $BSS$,QUAD=1,ALIGN=8,ACCESS=31,ZERO,SORT=82
- .SPACE $TEXT$
- .SUBSPA $LIT$,QUAD=0,ALIGN=8,ACCESS=44
- .SUBSPA $CODE$,QUAD=0,ALIGN=8,ACCESS=44,CODE_ONLY
- .SUBSPA $MILLICODE$,QUAD=0,ALIGN=8,ACCESS=44,SORT=8
-#endif
- .IMPORT $$dyncall,MILLICODE
-#if !defined(__pro__) && !defined(__rtems__)
- .SPACE $TEXT$
- .SUBSPA $CODE$
-#else
- .text
-#endif
-
-; Simply call with the address of the desired import stub in %r22 and
-; arguments in the normal place (%r26-%r23 and stack slots).
-;
- .align 4
- .EXPORT __gcc_plt_call,ENTRY,PRIV_LEV=3,RTNVAL=GR
-__gcc_plt_call
- .PROC
- .CALLINFO
- .ENTRY
- ; Our return address comes in %r31, not %r2!
- stw %r31,-8(%r30)
-
- ; An inline version of dyncall so we don't have to worry
- ; about long calls to millicode, PIC and other complexities.
- bb,>=,n %r22,30,L$foo
- depi 0,31,2,%r22
- ldw 4(%r22),%r19
- ldw 0(%r22),%r22
-L$foo
- ldsid (%r22),%r1
- mtsp %r1,%sr0
- ble 0(%sr0,%r22)
- copy %r31,%r2
- ldw -8(%r30),%r2
-
- ; We're going to be returning to a stack address, so we
- ; need to do an intra-space return.
- ldsid (%rp),%r1
- mtsp %r1,%sr0
- be,n 0(%sr0,%rp)
- .EXIT
- .PROCEND
diff --git a/gcc/config/pa/linux-atomic.c b/gcc/config/pa/linux-atomic.c
deleted file mode 100644
index 2ae2426357a..00000000000
--- a/gcc/config/pa/linux-atomic.c
+++ /dev/null
@@ -1,305 +0,0 @@
-/* Linux-specific atomic operations for PA Linux.
- Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
- Based on code contributed by CodeSourcery for ARM EABI Linux.
- Modifications for PA Linux by Helge Deller <deller@gmx.de>
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#define EFAULT 14
-#define EBUSY 16
-#define ENOSYS 251
-
-/* All PA-RISC implementations supported by linux have strongly
- ordered loads and stores. Only cache flushes and purges can be
- delayed. The data cache implementations are all globally
- coherent. Thus, there is no need to synchonize memory accesses.
-
- GCC automatically issues a asm memory barrier when it encounters
- a __sync_synchronize builtin. Thus, we do not need to define this
- builtin.
-
- We implement byte, short and int versions of each atomic operation
- using the kernel helper defined below. There is no support for
- 64-bit operations yet. */
-
-/* A privileged instruction to crash a userspace program with SIGILL. */
-#define ABORT_INSTRUCTION asm ("iitlbp %r0,(%sr0, %r0)")
-
-/* Determine kernel LWS function call (0=32-bit, 1=64-bit userspace). */
-#define LWS_CAS (sizeof(unsigned long) == 4 ? 0 : 1)
-
-/* Kernel helper for compare-and-exchange a 32-bit value. */
-static inline long
-__kernel_cmpxchg (int oldval, int newval, int *mem)
-{
- register unsigned long lws_mem asm("r26") = (unsigned long) (mem);
- register long lws_ret asm("r28");
- register long lws_errno asm("r21");
- register int lws_old asm("r25") = oldval;
- register int lws_new asm("r24") = newval;
- asm volatile ( "ble 0xb0(%%sr2, %%r0) \n\t"
- "ldi %5, %%r20 \n\t"
- : "=r" (lws_ret), "=r" (lws_errno), "=r" (lws_mem),
- "=r" (lws_old), "=r" (lws_new)
- : "i" (LWS_CAS), "2" (lws_mem), "3" (lws_old), "4" (lws_new)
- : "r1", "r20", "r22", "r23", "r29", "r31", "memory"
- );
- if (__builtin_expect (lws_errno == -EFAULT || lws_errno == -ENOSYS, 0))
- ABORT_INSTRUCTION;
-
- /* If the kernel LWS call succeeded (lws_errno == 0), lws_ret contains
- the old value from memory. If this value is equal to OLDVAL, the
- new value was written to memory. If not, return -EBUSY. */
- if (!lws_errno && lws_ret != oldval)
- lws_errno = -EBUSY;
-
- return lws_errno;
-}
-
-#define HIDDEN __attribute__ ((visibility ("hidden")))
-
-/* Big endian masks */
-#define INVERT_MASK_1 24
-#define INVERT_MASK_2 16
-
-#define MASK_1 0xffu
-#define MASK_2 0xffffu
-
-#define FETCH_AND_OP_WORD(OP, PFX_OP, INF_OP) \
- int HIDDEN \
- __sync_fetch_and_##OP##_4 (int *ptr, int val) \
- { \
- int failure, tmp; \
- \
- do { \
- tmp = *ptr; \
- failure = __kernel_cmpxchg (tmp, PFX_OP (tmp INF_OP val), ptr); \
- } while (failure != 0); \
- \
- return tmp; \
- }
-
-FETCH_AND_OP_WORD (add, , +)
-FETCH_AND_OP_WORD (sub, , -)
-FETCH_AND_OP_WORD (or, , |)
-FETCH_AND_OP_WORD (and, , &)
-FETCH_AND_OP_WORD (xor, , ^)
-FETCH_AND_OP_WORD (nand, ~, &)
-
-#define NAME_oldval(OP, WIDTH) __sync_fetch_and_##OP##_##WIDTH
-#define NAME_newval(OP, WIDTH) __sync_##OP##_and_fetch_##WIDTH
-
-/* Implement both __sync_<op>_and_fetch and __sync_fetch_and_<op> for
- subword-sized quantities. */
-
-#define SUBWORD_SYNC_OP(OP, PFX_OP, INF_OP, TYPE, WIDTH, RETURN) \
- TYPE HIDDEN \
- NAME##_##RETURN (OP, WIDTH) (TYPE *ptr, TYPE val) \
- { \
- int *wordptr = (int *) ((unsigned long) ptr & ~3); \
- unsigned int mask, shift, oldval, newval; \
- int failure; \
- \
- shift = (((unsigned long) ptr & 3) << 3) ^ INVERT_MASK_##WIDTH; \
- mask = MASK_##WIDTH << shift; \
- \
- do { \
- oldval = *wordptr; \
- newval = ((PFX_OP (((oldval & mask) >> shift) \
- INF_OP (unsigned int) val)) << shift) & mask; \
- newval |= oldval & ~mask; \
- failure = __kernel_cmpxchg (oldval, newval, wordptr); \
- } while (failure != 0); \
- \
- return (RETURN & mask) >> shift; \
- }
-
-SUBWORD_SYNC_OP (add, , +, unsigned short, 2, oldval)
-SUBWORD_SYNC_OP (sub, , -, unsigned short, 2, oldval)
-SUBWORD_SYNC_OP (or, , |, unsigned short, 2, oldval)
-SUBWORD_SYNC_OP (and, , &, unsigned short, 2, oldval)
-SUBWORD_SYNC_OP (xor, , ^, unsigned short, 2, oldval)
-SUBWORD_SYNC_OP (nand, ~, &, unsigned short, 2, oldval)
-
-SUBWORD_SYNC_OP (add, , +, unsigned char, 1, oldval)
-SUBWORD_SYNC_OP (sub, , -, unsigned char, 1, oldval)
-SUBWORD_SYNC_OP (or, , |, unsigned char, 1, oldval)
-SUBWORD_SYNC_OP (and, , &, unsigned char, 1, oldval)
-SUBWORD_SYNC_OP (xor, , ^, unsigned char, 1, oldval)
-SUBWORD_SYNC_OP (nand, ~, &, unsigned char, 1, oldval)
-
-#define OP_AND_FETCH_WORD(OP, PFX_OP, INF_OP) \
- int HIDDEN \
- __sync_##OP##_and_fetch_4 (int *ptr, int val) \
- { \
- int tmp, failure; \
- \
- do { \
- tmp = *ptr; \
- failure = __kernel_cmpxchg (tmp, PFX_OP (tmp INF_OP val), ptr); \
- } while (failure != 0); \
- \
- return PFX_OP (tmp INF_OP val); \
- }
-
-OP_AND_FETCH_WORD (add, , +)
-OP_AND_FETCH_WORD (sub, , -)
-OP_AND_FETCH_WORD (or, , |)
-OP_AND_FETCH_WORD (and, , &)
-OP_AND_FETCH_WORD (xor, , ^)
-OP_AND_FETCH_WORD (nand, ~, &)
-
-SUBWORD_SYNC_OP (add, , +, unsigned short, 2, newval)
-SUBWORD_SYNC_OP (sub, , -, unsigned short, 2, newval)
-SUBWORD_SYNC_OP (or, , |, unsigned short, 2, newval)
-SUBWORD_SYNC_OP (and, , &, unsigned short, 2, newval)
-SUBWORD_SYNC_OP (xor, , ^, unsigned short, 2, newval)
-SUBWORD_SYNC_OP (nand, ~, &, unsigned short, 2, newval)
-
-SUBWORD_SYNC_OP (add, , +, unsigned char, 1, newval)
-SUBWORD_SYNC_OP (sub, , -, unsigned char, 1, newval)
-SUBWORD_SYNC_OP (or, , |, unsigned char, 1, newval)
-SUBWORD_SYNC_OP (and, , &, unsigned char, 1, newval)
-SUBWORD_SYNC_OP (xor, , ^, unsigned char, 1, newval)
-SUBWORD_SYNC_OP (nand, ~, &, unsigned char, 1, newval)
-
-int HIDDEN
-__sync_val_compare_and_swap_4 (int *ptr, int oldval, int newval)
-{
- int actual_oldval, fail;
-
- while (1)
- {
- actual_oldval = *ptr;
-
- if (__builtin_expect (oldval != actual_oldval, 0))
- return actual_oldval;
-
- fail = __kernel_cmpxchg (actual_oldval, newval, ptr);
-
- if (__builtin_expect (!fail, 1))
- return actual_oldval;
- }
-}
-
-#define SUBWORD_VAL_CAS(TYPE, WIDTH) \
- TYPE HIDDEN \
- __sync_val_compare_and_swap_##WIDTH (TYPE *ptr, TYPE oldval, \
- TYPE newval) \
- { \
- int *wordptr = (int *)((unsigned long) ptr & ~3), fail; \
- unsigned int mask, shift, actual_oldval, actual_newval; \
- \
- shift = (((unsigned long) ptr & 3) << 3) ^ INVERT_MASK_##WIDTH; \
- mask = MASK_##WIDTH << shift; \
- \
- while (1) \
- { \
- actual_oldval = *wordptr; \
- \
- if (__builtin_expect (((actual_oldval & mask) >> shift) \
- != (unsigned int) oldval, 0)) \
- return (actual_oldval & mask) >> shift; \
- \
- actual_newval = (actual_oldval & ~mask) \
- | (((unsigned int) newval << shift) & mask); \
- \
- fail = __kernel_cmpxchg (actual_oldval, actual_newval, \
- wordptr); \
- \
- if (__builtin_expect (!fail, 1)) \
- return (actual_oldval & mask) >> shift; \
- } \
- }
-
-SUBWORD_VAL_CAS (unsigned short, 2)
-SUBWORD_VAL_CAS (unsigned char, 1)
-
-typedef unsigned char bool;
-
-bool HIDDEN
-__sync_bool_compare_and_swap_4 (int *ptr, int oldval, int newval)
-{
- int failure = __kernel_cmpxchg (oldval, newval, ptr);
- return (failure == 0);
-}
-
-#define SUBWORD_BOOL_CAS(TYPE, WIDTH) \
- bool HIDDEN \
- __sync_bool_compare_and_swap_##WIDTH (TYPE *ptr, TYPE oldval, \
- TYPE newval) \
- { \
- TYPE actual_oldval \
- = __sync_val_compare_and_swap_##WIDTH (ptr, oldval, newval); \
- return (oldval == actual_oldval); \
- }
-
-SUBWORD_BOOL_CAS (unsigned short, 2)
-SUBWORD_BOOL_CAS (unsigned char, 1)
-
-int HIDDEN
-__sync_lock_test_and_set_4 (int *ptr, int val)
-{
- int failure, oldval;
-
- do {
- oldval = *ptr;
- failure = __kernel_cmpxchg (oldval, val, ptr);
- } while (failure != 0);
-
- return oldval;
-}
-
-#define SUBWORD_TEST_AND_SET(TYPE, WIDTH) \
- TYPE HIDDEN \
- __sync_lock_test_and_set_##WIDTH (TYPE *ptr, TYPE val) \
- { \
- int failure; \
- unsigned int oldval, newval, shift, mask; \
- int *wordptr = (int *) ((unsigned long) ptr & ~3); \
- \
- shift = (((unsigned long) ptr & 3) << 3) ^ INVERT_MASK_##WIDTH; \
- mask = MASK_##WIDTH << shift; \
- \
- do { \
- oldval = *wordptr; \
- newval = (oldval & ~mask) \
- | (((unsigned int) val << shift) & mask); \
- failure = __kernel_cmpxchg (oldval, newval, wordptr); \
- } while (failure != 0); \
- \
- return (oldval & mask) >> shift; \
- }
-
-SUBWORD_TEST_AND_SET (unsigned short, 2)
-SUBWORD_TEST_AND_SET (unsigned char, 1)
-
-#define SYNC_LOCK_RELEASE(TYPE, WIDTH) \
- void HIDDEN \
- __sync_lock_release_##WIDTH (TYPE *ptr) \
- { \
- *ptr = 0; \
- }
-
-SYNC_LOCK_RELEASE (int, 4)
-SYNC_LOCK_RELEASE (short, 2)
-SYNC_LOCK_RELEASE (char, 1)
diff --git a/gcc/config/pa/quadlib.c b/gcc/config/pa/quadlib.c
deleted file mode 100644
index 2c1160015ed..00000000000
--- a/gcc/config/pa/quadlib.c
+++ /dev/null
@@ -1,245 +0,0 @@
-/* Subroutines for long double support.
- Copyright (C) 2000, 2002, 2004, 2005, 2006, 2009 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 3, or (at your option)
-any later version.
-
-GCC 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 General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/* HPUX TFmode compare requires a library call to _U_Qfcmp. It takes
- a magic number as its third argument which indicates what to do.
- The return value is an integer to be compared against zero. The
- comparison conditions are the same as those listed in Table 8-12
- of the PA-RISC 2.0 Architecture book for the fcmp instruction. */
-
-/* Raise FP_INVALID on SNaN as a side effect. */
-#define QCMP_INV 1
-
-/* Comparison relations. */
-#define QCMP_UNORD 2
-#define QCMP_EQ 4
-#define QCMP_LT 8
-#define QCMP_GT 16
-
-int _U_Qfcmp (long double a, long double b, int);
-long _U_Qfcnvfxt_quad_to_sgl (long double);
-
-int _U_Qfeq (long double, long double);
-int _U_Qfne (long double, long double);
-int _U_Qfgt (long double, long double);
-int _U_Qfge (long double, long double);
-int _U_Qflt (long double, long double);
-int _U_Qfle (long double, long double);
-int _U_Qfltgt (long double, long double);
-int _U_Qfunle (long double, long double);
-int _U_Qfunlt (long double, long double);
-int _U_Qfunge (long double, long double);
-int _U_Qfungt (long double, long double);
-int _U_Qfuneq (long double, long double);
-int _U_Qfunord (long double, long double);
-int _U_Qford (long double, long double);
-
-int _U_Qfcomp (long double, long double);
-
-long double _U_Qfneg (long double);
-long double _U_Qfcopysign (long double, long double);
-
-#ifdef __LP64__
-int __U_Qfcnvfxt_quad_to_sgl (long double);
-#endif
-unsigned int _U_Qfcnvfxt_quad_to_usgl(long double);
-long double _U_Qfcnvxf_usgl_to_quad (unsigned int);
-unsigned long long _U_Qfcnvfxt_quad_to_udbl(long double);
-long double _U_Qfcnvxf_udbl_to_quad (unsigned long long);
-
-int
-_U_Qfeq (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_EQ) != 0);
-}
-
-int
-_U_Qfne (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_EQ) == 0);
-}
-
-int
-_U_Qfgt (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_GT) != 0);
-}
-
-int
-_U_Qfge (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_EQ | QCMP_GT) != 0);
-}
-
-int
-_U_Qflt (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_LT) != 0);
-}
-
-int
-_U_Qfle (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_EQ | QCMP_LT) != 0);
-}
-
-int
-_U_Qfltgt (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_LT | QCMP_GT) != 0);
-}
-
-int
-_U_Qfunle (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_UNORD | QCMP_EQ | QCMP_LT) != 0);
-}
-
-int
-_U_Qfunlt (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_UNORD | QCMP_LT) != 0);
-}
-
-int
-_U_Qfunge (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_UNORD | QCMP_EQ | QCMP_GT) != 0);
-}
-
-int
-_U_Qfungt (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_UNORD | QCMP_GT) != 0);
-}
-
-int
-_U_Qfuneq (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_UNORD | QCMP_EQ) != 0);
-}
-
-int
-_U_Qfunord (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_UNORD) != 0);
-}
-
-int
-_U_Qford (long double a, long double b)
-{
- return (_U_Qfcmp (a, b, QCMP_INV | QCMP_EQ | QCMP_LT | QCMP_GT) != 0);
-}
-
-int
-_U_Qfcomp (long double a, long double b)
-{
- if (_U_Qfcmp (a, b, QCMP_EQ) == 0)
- return 0;
-
- return (_U_Qfcmp (a, b, QCMP_UNORD | QCMP_EQ | QCMP_GT) != 0 ? 1 : -1);
-}
-
-/* Negate long double A. */
-long double
-_U_Qfneg (long double a)
-{
- union
- {
- long double ld;
- int i[4];
- } u;
-
- u.ld = a;
- u.i[0] ^= 0x80000000;
- return u.ld;
-}
-
-/* Return long double A with sign changed to sign of long double B. */
-long double
-_U_Qfcopysign (long double a, long double b)
-{
- union
- {
- long double ld;
- int i[4];
- } ua, ub;
-
- ua.ld = a;
- ub.ld = b;
- ua.i[0] &= 0x7fffffff;
- ua.i[0] |= (0x80000000 & ub.i[0]);
- return ua.ld;
-}
-
-#ifdef __LP64__
-/* This routine is only necessary for the PA64 port; for reasons unknown
- _U_Qfcnvfxt_quad_to_sgl returns the integer in the high 32bits of the
- return value. Ugh. */
-int
-__U_Qfcnvfxt_quad_to_sgl (long double a)
-{
- return _U_Qfcnvfxt_quad_to_sgl (a) >> 32;
-}
-#endif
-
-/* HP only has signed conversion in the C library, so need to synthesize
- unsigned versions. */
-unsigned int
-_U_Qfcnvfxt_quad_to_usgl (long double a)
-{
- extern long long _U_Qfcnvfxt_quad_to_dbl (long double a);
- return (unsigned int) _U_Qfcnvfxt_quad_to_dbl (a);
-}
-
-long double
-_U_Qfcnvxf_usgl_to_quad (unsigned int a)
-{
- extern long double _U_Qfcnvxf_dbl_to_quad (long long);
- return _U_Qfcnvxf_dbl_to_quad ((long long) a);
-}
-
-typedef union {
- unsigned long long u[2];
- long double d[1];
-} quad_type;
-
-unsigned long long
-_U_Qfcnvfxt_quad_to_udbl (long double a)
-{
- extern quad_type _U_Qfcnvfxt_quad_to_quad (long double a);
- quad_type u;
- u = _U_Qfcnvfxt_quad_to_quad(a);
- return u.u[1];
-}
-
-long double
-_U_Qfcnvxf_udbl_to_quad (unsigned long long a)
-{
- extern long double _U_Qfcnvxf_quad_to_quad (quad_type a);
- quad_type u;
- u.u[0] = 0;
- u.u[1] = a;
- return _U_Qfcnvxf_quad_to_quad (u);
-}
diff --git a/gcc/config/pa/t-dce-thr b/gcc/config/pa/t-dce-thr
index 8d86a418186..51b3abcf607 100644
--- a/gcc/config/pa/t-dce-thr
+++ b/gcc/config/pa/t-dce-thr
@@ -1,5 +1,2 @@
MULTILIB_OPTIONS = threads
MULTILIB_DIRNAMES = threads
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/pa/t-linux b/gcc/config/pa/t-linux
deleted file mode 100644
index b94ebd250a8..00000000000
--- a/gcc/config/pa/t-linux
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright (C) 1999, 2001, 2002, 2008, 2011 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-# Compile libgcc2.a as PIC.
-TARGET_LIBGCC2_CFLAGS = -fPIC -DELF=1 -DLINUX=1
-
-LIB2FUNCS_EXTRA=fptr.c
-LIB2FUNCS_STATIC_EXTRA = $(srcdir)/config/pa/linux-atomic.c
-
-fptr.c: $(srcdir)/config/pa/fptr.c
- rm -f fptr.c
- cp $(srcdir)/config/pa/fptr.c .
diff --git a/gcc/config/pa/t-linux64 b/gcc/config/pa/t-linux64
deleted file mode 100644
index af803a27ed3..00000000000
--- a/gcc/config/pa/t-linux64
+++ /dev/null
@@ -1,22 +0,0 @@
-# Copyright (C) 2001, 2008, 2011 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-LIB2FUNCS_STATIC_EXTRA = $(srcdir)/config/pa/linux-atomic.c
-
-# Compile libgcc2.a as PIC.
-TARGET_LIBGCC2_CFLAGS = -fPIC -Dpa64=1 -DELF=1
diff --git a/gcc/config/pa/t-pa-hpux b/gcc/config/pa/t-pa-hpux
deleted file mode 100644
index 63eab636200..00000000000
--- a/gcc/config/pa/t-pa-hpux
+++ /dev/null
@@ -1,7 +0,0 @@
-lib2funcs.asm: $(srcdir)/config/pa/lib2funcs.asm
- rm -f lib2funcs.asm
- cp $(srcdir)/config/pa/lib2funcs.asm .
-
-quadlib.c: $(srcdir)/config/pa/quadlib.c
- rm -f quadlib.c
- cp $(srcdir)/config/pa/quadlib.c .
diff --git a/gcc/config/pa/t-pa-hpux10 b/gcc/config/pa/t-pa-hpux10
deleted file mode 100644
index fd7ff484257..00000000000
--- a/gcc/config/pa/t-pa-hpux10
+++ /dev/null
@@ -1,2 +0,0 @@
-TARGET_LIBGCC2_CFLAGS = -fPIC -frandom-seed=fixed-seed -D_T_HPUX10
-LIB2FUNCS_EXTRA=lib2funcs.asm quadlib.c
diff --git a/gcc/config/pa/t-pa-hpux11 b/gcc/config/pa/t-pa-hpux11
deleted file mode 100644
index 2773828ac39..00000000000
--- a/gcc/config/pa/t-pa-hpux11
+++ /dev/null
@@ -1,2 +0,0 @@
-TARGET_LIBGCC2_CFLAGS = -fPIC -frandom-seed=fixed-seed
-LIB2FUNCS_EXTRA=lib2funcs.asm quadlib.c
diff --git a/gcc/config/pa/t-pa64 b/gcc/config/pa/t-pa64
deleted file mode 100644
index ce21808e056..00000000000
--- a/gcc/config/pa/t-pa64
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2000, 2001, 2002, 2004, 2006,
-# 2007, 2010, 2011 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-TARGET_LIBGCC2_CFLAGS = -fPIC -Dpa64=1 -DELF=1 -mlong-calls
-LIB2FUNCS_EXTRA = quadlib.c
diff --git a/gcc/config/pdp11/t-pdp11 b/gcc/config/pdp11/t-pdp11
index 032084b381b..c0287d50da2 100644
--- a/gcc/config/pdp11/t-pdp11
+++ b/gcc/config/pdp11/t-pdp11
@@ -17,11 +17,6 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-TARGET_LIBGCC2_CFLAGS = -O2 -mfloat32
-LIB2FUNCS_EXTRA = $(srcdir)/config/udivmod.c $(srcdir)/config/udivmodsi4.c \
- $(srcdir)/config/memcmp.c $(srcdir)/config/memcpy.c \
- $(srcdir)/config/memmove.c $(srcdir)/config/memset.c
-
MULTILIB_OPTIONS = msoft-float
# Because the pdp11 POINTER_SIZE is only 16, in dwarf2out.c,
diff --git a/gcc/config/picochip/libgccExtras/adddi3.asm b/gcc/config/picochip/libgccExtras/adddi3.asm
deleted file mode 100644
index 77373ed9f64..00000000000
--- a/gcc/config/picochip/libgccExtras/adddi3.asm
+++ /dev/null
@@ -1,194 +0,0 @@
-// picoChip ASM file
-//
-// Support for 64-bit addition.
-//
-// Copyright (C) 2003, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
-// Contributed by Picochip Ltd.
-// Maintained by Hariharan Sandanagobalane (hariharan@picochip.com)
-//
-// This file is free software; you can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option) any
-// later version.
-//
-// This file 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
-// General Public License for more details.
-//
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-//
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-.section .text
-
-.align 8
-.global __adddi3
-__adddi3:
-_picoMark_FUNCTION_BEGIN=
-
-// picoChip Function Prologue : &__adddi3 = 12 bytes
-
- // The first operand of add is completely in registers r[2-5]
- // The second operand of sub is in stack FP(0-3)
- // and result need to be written pointed to by the register r0.
- // All we need to do is to load the appropriate values, add them
- // appropriately (with add or addc ) and then store the values back.
-
- ldw (FP)0, r1
- stl r[7:6], (FP)-1
- add.0 r2, r1, r6
- ldw (FP)1, r1
- addc.0 r3, r1, r7
- ldl (FP)1, r[3:2]
- stl r[7:6], (r0)0
- addc.0 r4, r2, r6
- addc.0 r5, r3, r7
- stl r[7:6], (r0)1
- jr (r12)
-=-> ldl (FP)-1, r[7:6]
-
-_picoMark_FUNCTION_END=
-
-// picoChip Function Epilogue : __adddi3
-
-
-//============================================================================
-// All DWARF information between this marker, and the END OF DWARF
-// marker should be included in the source file. Search for
-// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and
-// provide the relevent information. Add markers called
-// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the
-// function in question.
-//============================================================================
-
-//============================================================================
-// Frame information.
-//============================================================================
-
-.section .debug_frame
-_picoMark_DebugFrame=
-
-// Common CIE header.
-.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin
-_picoMark_CieBegin=
-.unalignedInitLong 0xffffffff
-.initByte 0x1 // CIE Version
-.ascii 16#0# // CIE Augmentation
-.uleb128 0x1 // CIE Code Alignment Factor
-.sleb128 2 // CIE Data Alignment Factor
-.initByte 0xc // CIE RA Column
-.initByte 0xc // DW_CFA_def_cfa
-.uleb128 0xd
-.uleb128 0x0
-.align 2
-_picoMark_CieEnd=
-
-// FDE
-_picoMark_LSFDE0I900821033007563=
-.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin
-_picoMark_FdeBegin=
-.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location
-.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0xe // <-- FUNCTION_STACK_SIZE_GOES_HERE
-.initByte 0x4 // DW_CFA_advance_loc4
-.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0
-.align 2
-_picoMark_FdeEnd=
-
-//============================================================================
-// Abbrevation information.
-//============================================================================
-
-.section .debug_abbrev
-_picoMark_ABBREVIATIONS=
-
-.section .debug_abbrev
- .uleb128 0x1 // (abbrev code)
- .uleb128 0x11 // (TAG: DW_TAG_compile_unit)
- .initByte 0x1 // DW_children_yes
- .uleb128 0x10 // (DW_AT_stmt_list)
- .uleb128 0x6 // (DW_FORM_data4)
- .uleb128 0x12 // (DW_AT_high_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x11 // (DW_AT_low_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x25 // (DW_AT_producer)
- .uleb128 0x8 // (DW_FORM_string)
- .uleb128 0x13 // (DW_AT_language)
- .uleb128 0x5 // (DW_FORM_data2)
- .uleb128 0x3 // (DW_AT_name)
- .uleb128 0x8 // (DW_FORM_string)
-.initByte 0x0
-.initByte 0x0
-
- .uleb128 0x2 ;# (abbrev code)
- .uleb128 0x2e ;# (TAG: DW_TAG_subprogram)
-.initByte 0x0 ;# DW_children_no
- .uleb128 0x3 ;# (DW_AT_name)
- .uleb128 0x8 ;# (DW_FORM_string)
- .uleb128 0x11 ;# (DW_AT_low_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
- .uleb128 0x12 ;# (DW_AT_high_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
-.initByte 0x0
-.initByte 0x0
-
-.initByte 0x0
-
-//============================================================================
-// Line information. DwarfLib requires this to be present, but it can
-// be empty.
-//============================================================================
-
-.section .debug_line
-_picoMark_LINES=
-
-//============================================================================
-// Debug Information
-//============================================================================
-.section .debug_info
-
-//Fixed header.
-.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN
-_picoMark_DEBUG_INFO_BEGIN=
-.unalignedInitWord 0x2
-.unalignedInitLong _picoMark_ABBREVIATIONS
-.initByte 0x2
-
-// Compile unit information.
-.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit)
-.unalignedInitLong _picoMark_LINES
-.unalignedInitWord _picoMark_FUNCTION_END
-.unalignedInitWord _picoMark_FUNCTION_BEGIN
-// Producer is `picoChip'
-.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00#
-.unalignedInitWord 0xcafe // ASM language
-.ascii 16#0# // Name. DwarfLib expects this to be present.
-
-.uleb128 0x2 ;# (DIE DW_TAG_subprogram)
-
-// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex
-// digit is specified using the format 16#XX#
-.ascii 16#5f# 16#61# 16#64# 16#64# 16#63# 16#69# 16#33# 16#0# // Function name `_adddi3'
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc
-.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc
-
-.initByte 0x0 // end of compile unit children.
-
-_picoMark_DEBUG_INFO_END=
-
-//============================================================================
-// END OF DWARF
-//============================================================================
-
-.section .endFile
diff --git a/gcc/config/picochip/libgccExtras/ashlsi3.asm b/gcc/config/picochip/libgccExtras/ashlsi3.asm
deleted file mode 100644
index 688cd8d96ff..00000000000
--- a/gcc/config/picochip/libgccExtras/ashlsi3.asm
+++ /dev/null
@@ -1,193 +0,0 @@
-// picoChip ASM file
-// picoChip ASM file
-//
-// Support for 32-bit arithmetic shift left.
-//
-// Copyright (C) 2003, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
-// Contributed by Picochip Ltd.
-// Maintained by Hariharan Sandanagobalane (hariharan@picochip.com)
-//
-// This file is free software; you can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option) any
-// later version.
-//
-// This file 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
-// General Public License for more details.
-//
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-//
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-.section .text
-
-.global ___ashlsi3
-___ashlsi3:
-_picoMark_FUNCTION_BEGIN=
-// picoChip Function Prologue : &___ashlsi3 = 0 bytes
-
- // if (R2 > 15) goto _L2
- SUB.0 15,R2,r15
- JMPLT _L2
-=-> SUB.0 16,R2,R5 // R5 := R5 - R4 (HI)
-
- LSL.0 R1,R2,R1 // R3 := R1 << R2
- LSL.0 R0,R2,R4 // R2 := R0 << R2
-
- LSR.0 R0,R5,R5 // R5 := R12 >> R5 NEED TO CHECK - HARI
- OR.0 R5,R1,R5 // R3 := R5 IOR R0 (HI)
- SUB.0 R2,0,r15
- COPYNE R5,R1
- JR (R12) // Return to caller
-=-> COPY.0 R4,R0
-
-_L2:
- LSL.0 R0,R2,R1 // R3 := R0 << R2
- JR (R12) // Return to caller
-=-> COPY.0 0,R0 // R2 := 0 (short constant)
-
-_picoMark_FUNCTION_END=
-
-// picoChip Function Epilogue : __ashlsi3
-
-//============================================================================
-// All DWARF information between this marker, and the END OF DWARF
-// marker should be included in the source file. Search for
-// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and
-// provide the relevent information. Add markers called
-// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the
-// function in question.
-//============================================================================
-
-//============================================================================
-// Frame information.
-//============================================================================
-
-.section .debug_frame
-_picoMark_DebugFrame=
-
-// Common CIE header.
-.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin
-_picoMark_CieBegin=
-.unalignedInitLong 0xffffffff
-.initByte 0x1 // CIE Version
-.ascii 16#0# // CIE Augmentation
-.uleb128 0x1 // CIE Code Alignment Factor
-.sleb128 2 // CIE Data Alignment Factor
-.initByte 0xc // CIE RA Column
-.initByte 0xc // DW_CFA_def_cfa
-.uleb128 0xd
-.uleb128 0x0
-.align 2
-_picoMark_CieEnd=
-
-// FDE
-_picoMark_LSFDE0I900821033007563=
-.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin
-_picoMark_FdeBegin=
-.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location
-.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0 // <-- FUNCTION_STACK_SIZE_GOES_HERE
-.initByte 0x4 // DW_CFA_advance_loc4
-.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0
-.align 2
-_picoMark_FdeEnd=
-
-//============================================================================
-// Abbrevation information.
-//============================================================================
-
-.section .debug_abbrev
-_picoMark_ABBREVIATIONS=
-
-.section .debug_abbrev
- .uleb128 0x1 // (abbrev code)
- .uleb128 0x11 // (TAG: DW_TAG_compile_unit)
- .initByte 0x1 // DW_children_yes
- .uleb128 0x10 // (DW_AT_stmt_list)
- .uleb128 0x6 // (DW_FORM_data4)
- .uleb128 0x12 // (DW_AT_high_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x11 // (DW_AT_low_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x25 // (DW_AT_producer)
- .uleb128 0x8 // (DW_FORM_string)
- .uleb128 0x13 // (DW_AT_language)
- .uleb128 0x5 // (DW_FORM_data2)
- .uleb128 0x3 // (DW_AT_name)
- .uleb128 0x8 // (DW_FORM_string)
-.initByte 0x0
-.initByte 0x0
-
- .uleb128 0x2 ;# (abbrev code)
- .uleb128 0x2e ;# (TAG: DW_TAG_subprogram)
-.initByte 0x0 ;# DW_children_no
- .uleb128 0x3 ;# (DW_AT_name)
- .uleb128 0x8 ;# (DW_FORM_string)
- .uleb128 0x11 ;# (DW_AT_low_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
- .uleb128 0x12 ;# (DW_AT_high_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
-.initByte 0x0
-.initByte 0x0
-
-.initByte 0x0
-
-//============================================================================
-// Line information. DwarfLib requires this to be present, but it can
-// be empty.
-//============================================================================
-
-.section .debug_line
-_picoMark_LINES=
-
-//============================================================================
-// Debug Information
-//============================================================================
-.section .debug_info
-
-//Fixed header.
-.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN
-_picoMark_DEBUG_INFO_BEGIN=
-.unalignedInitWord 0x2
-.unalignedInitLong _picoMark_ABBREVIATIONS
-.initByte 0x2
-
-// Compile unit information.
-.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit)
-.unalignedInitLong _picoMark_LINES
-.unalignedInitWord _picoMark_FUNCTION_END
-.unalignedInitWord _picoMark_FUNCTION_BEGIN
-// Producer is `picoChip'
-.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00#
-.unalignedInitWord 0xcafe // ASM language
-.ascii 16#0# // Name. DwarfLib expects this to be present.
-
-.uleb128 0x2 ;# (DIE DW_TAG_subprogram)
-
-// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex
-// digit is specified using the format 16#XX#
-.ascii 16#5f# 16#61# 16#73# 16#68# 16#6c# 16#73# 16#69# 16#33# 16#0# // Function name `_ashlsi3'
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc
-.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc
-
-.initByte 0x0 // end of compile unit children.
-
-_picoMark_DEBUG_INFO_END=
-
-//============================================================================
-// END OF DWARF
-//============================================================================
-
-.section .endFile
diff --git a/gcc/config/picochip/libgccExtras/ashlsi3.c b/gcc/config/picochip/libgccExtras/ashlsi3.c
deleted file mode 100644
index 600461c0b83..00000000000
--- a/gcc/config/picochip/libgccExtras/ashlsi3.c
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-
-picoChip GCC support for 32-bit shift left.
-
-Copyright (C) 2003, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
-Contributed by Picochip Ltd.
-Maintained by Daniel Towner (daniel.towner@picochip.com)
-
-This file is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 3, or (at your option) any
-later version.
-
-This file 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
-General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#ifndef PICOCHIP
-#error "Intended for compilation for PICOCHIP only."
-#endif
-
-typedef int HItype __attribute__ ((mode (HI)));
-typedef unsigned int UHItype __attribute__ ((mode (HI)));
-typedef unsigned int USItype __attribute__ ((mode (SI)));
-
-typedef struct USIstruct {
- UHItype low, high;
-} USIstruct;
-
-typedef union USIunion {
- USItype l;
- USIstruct s;
-} USIunion;
-
-USItype __ashlsi3(USIunion value, HItype count) {
- USIunion result;
- int temp;
-
- /* Ignore a zero count until we get into the (count < 16)
- clause. This is slightly slower when shifting by zero, but faster
- and smaller in all other cases (due to the better scheduling
- opportunities available by putting the test near computational
- instructions. */
- /* if (count == 0) return value.l; */
-
- if (count < 16) {
- /* Shift low and high words by the count. */
- result.s.low = value.s.low << count;
- result.s.high = value.s.high << count;
-
- /* There is now a hole in the lower `count' bits of the high
- word. Shift the upper `count' bits of the low word into the
- high word. This is only required when the count is non-zero. */
- if (count != 0) {
- temp = 16 - count;
- temp = value.s.low >> temp;
- result.s.high |= temp;
- }
-
- } else {
- /* Shift the lower word of the source into the upper word of the
- result, and zero the result's lower word. */
- count -= 16;
- result.s.high = value.s.low << count;
- result.s.low = 0;
-
- }
-
- return result.l;
-
-}
-
diff --git a/gcc/config/picochip/libgccExtras/ashrsi3.asm b/gcc/config/picochip/libgccExtras/ashrsi3.asm
deleted file mode 100644
index fddd70b6895..00000000000
--- a/gcc/config/picochip/libgccExtras/ashrsi3.asm
+++ /dev/null
@@ -1,202 +0,0 @@
-// picoChip ASM file
-//
-// Support for 32-bit arithmetic shift right.
-//
-// Copyright (C) 2003, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
-// Contributed by Picochip Ltd.
-// Maintained by Hariharan Sandanagobalane (hariharan@picochip.com)
-//
-// This file is free software; you can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option) any
-// later version.
-//
-// This file 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
-// General Public License for more details.
-//
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-//
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-.section .text
-
-.global ___ashrsi3
-___ashrsi3:
-_picoMark_FUNCTION_BEGIN=
-
-// picoChip Function Prologue : &___ashrsi3 = 0 bytes
-
- // if (R2 > 15) goto _L2
- SUB.0 15,R2,r15
- JMPLT _L2
-=-> COPY.0 R1,R3
-
- LSR.0 R1,R2,R1 // R1 := R1 >> R2
- // if (R2 == 0) goto _L4
- SUB.0 R2,0,r15
- JMPEQ _L4
-=-> LSR.0 R0,R2,R0 // R2 := R0 >> R2
-
- SUB.0 16,R2,R4 // R4 := R4 - R2 (HI)
- ASR.0 R3,15,R5 // R5 = R1 >>{arith} 15
- LSL.0 R5,R4,R5 // R5 := R5 << R4
- LSL.0 R3,R4,R4 // R4 := R1 << R4
- OR.0 R5,R1,R1 // R3 := R5 IOR R3 (HI)
- BRA _L4
- =-> OR.0 R4,R0,R0 // R2 := R4 IOR R0 (HI)
-_L2:
- ASR.0 R1,15,R1 // R4 = R1 >>{arith} 15
- SUB.0 16,R2,R5 // R5 := R5 - R2 (HI)
- LSR.0 R3,R2,R0 // R2 := R1 >> R2
- LSL.0 R1,R5,R5 // R5 := R4 << R5
- OR.0 R5,R0,R5 // R2 := R5 IOR R2 (HI)
- SUB.0 R2,16,r15 // R5 := R5 - R2 (HI)
- COPYNE R5,R0
-_L4:
- JR (R12) // Return to caller
-
-_picoMark_FUNCTION_END=
-
-// picoChip Function Epilogue : __ashrsi3
-//============================================================================
-// All DWARF information between this marker, and the END OF DWARF
-// marker should be included in the source file. Search for
-// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and
-// provide the relevent information. Add markers called
-// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the
-// function in question.
-//============================================================================
-
-//============================================================================
-// Frame information.
-//============================================================================
-
-.section .debug_frame
-_picoMark_DebugFrame=
-
-// Common CIE header.
-.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin
-_picoMark_CieBegin=
-.unalignedInitLong 0xffffffff
-.initByte 0x1 // CIE Version
-.ascii 16#0# // CIE Augmentation
-.uleb128 0x1 // CIE Code Alignment Factor
-.sleb128 2 // CIE Data Alignment Factor
-.initByte 0xc // CIE RA Column
-.initByte 0xc // DW_CFA_def_cfa
-.uleb128 0xd
-.uleb128 0x0
-.align 2
-_picoMark_CieEnd=
-
-// FDE
-_picoMark_LSFDE0I900821033007563=
-.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin
-_picoMark_FdeBegin=
-.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location
-.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0 // <-- FUNCTION_STACK_SIZE_GOES_HERE
-.initByte 0x4 // DW_CFA_advance_loc4
-.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0
-.align 2
-_picoMark_FdeEnd=
-
-//============================================================================
-// Abbrevation information.
-//============================================================================
-
-.section .debug_abbrev
-_picoMark_ABBREVIATIONS=
-
-.section .debug_abbrev
- .uleb128 0x1 // (abbrev code)
- .uleb128 0x11 // (TAG: DW_TAG_compile_unit)
- .initByte 0x1 // DW_children_yes
- .uleb128 0x10 // (DW_AT_stmt_list)
- .uleb128 0x6 // (DW_FORM_data4)
- .uleb128 0x12 // (DW_AT_high_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x11 // (DW_AT_low_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x25 // (DW_AT_producer)
- .uleb128 0x8 // (DW_FORM_string)
- .uleb128 0x13 // (DW_AT_language)
- .uleb128 0x5 // (DW_FORM_data2)
- .uleb128 0x3 // (DW_AT_name)
- .uleb128 0x8 // (DW_FORM_string)
-.initByte 0x0
-.initByte 0x0
-
- .uleb128 0x2 ;# (abbrev code)
- .uleb128 0x2e ;# (TAG: DW_TAG_subprogram)
-.initByte 0x0 ;# DW_children_no
- .uleb128 0x3 ;# (DW_AT_name)
- .uleb128 0x8 ;# (DW_FORM_string)
- .uleb128 0x11 ;# (DW_AT_low_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
- .uleb128 0x12 ;# (DW_AT_high_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
-.initByte 0x0
-.initByte 0x0
-
-.initByte 0x0
-
-//============================================================================
-// Line information. DwarfLib requires this to be present, but it can
-// be empty.
-//============================================================================
-
-.section .debug_line
-_picoMark_LINES=
-
-//============================================================================
-// Debug Information
-//============================================================================
-.section .debug_info
-
-//Fixed header.
-.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN
-_picoMark_DEBUG_INFO_BEGIN=
-.unalignedInitWord 0x2
-.unalignedInitLong _picoMark_ABBREVIATIONS
-.initByte 0x2
-
-// Compile unit information.
-.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit)
-.unalignedInitLong _picoMark_LINES
-.unalignedInitWord _picoMark_FUNCTION_END
-.unalignedInitWord _picoMark_FUNCTION_BEGIN
-// Producer is `picoChip'
-.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00#
-.unalignedInitWord 0xcafe // ASM language
-.ascii 16#0# // Name. DwarfLib expects this to be present.
-
-.uleb128 0x2 ;# (DIE DW_TAG_subprogram)
-
-// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex
-// digit is specified using the format 16#XX#
-.ascii 16#5f# 16#61# 16#73# 16#68# 16#72# 16#73# 16#69# 16#33# 16#0# // Function name `_ashrsi3'
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc
-.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc
-
-.initByte 0x0 // end of compile unit children.
-
-_picoMark_DEBUG_INFO_END=
-
-//============================================================================
-// END OF DWARF
-//============================================================================
-
-.section .endFile
-// End of picoChip ASM file
diff --git a/gcc/config/picochip/libgccExtras/ashrsi3.c b/gcc/config/picochip/libgccExtras/ashrsi3.c
deleted file mode 100644
index 4f1567b1347..00000000000
--- a/gcc/config/picochip/libgccExtras/ashrsi3.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
-
-picoChip GCC support for 32-bit arithmetic shift right.
-
-Copyright (C) 2003, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
-Contributed by Picochip Ltd.
-Maintained by Daniel Towner (daniel.towner@picochip.com)
-
-This file is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 3, or (at your option) any
-later version.
-
-This file 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
-General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-typedef int HItype __attribute__ ((mode (HI)));
-typedef unsigned int UHItype __attribute__ ((mode (HI)));
-typedef unsigned int USItype __attribute__ ((mode (SI)));
-
-typedef struct USIstruct {
- UHItype low, high;
-} USIstruct;
-
-typedef union USIunion {
- USItype l;
- USIstruct s;
-} USIunion;
-
-USItype __ashrsi3(USIunion value, HItype count) {
- USIunion result;
- int temp;
- int wordOfSignBits;
-
- /* Ignore a zero count until we get into the (count < 16)
- clause. This is slightly slower when shifting by zero, but faster
- and smaller in all other cases (due to the better scheduling
- opportunities available by putting the test near computational
- instructions. */
- /* if (count == 0) return value.l; */
-
- if (count < 16) {
- /* Shift low and high words by the count. The high word must use
- an arithmetic shift. There is no arithmetic shift-right by
- variable, so synthesise it. */
- int signWord;
- int reverseCount;
-
- /* Shift low and high parts by the count. The upper word now has
- invalid signed bits. */
- result.s.low = value.s.low >> count;
- result.s.high = value.s.high >> count;
-
- if (count != 0) {
-
- reverseCount = 16 - count;
-
- /* Given a word of sign bits, shift back left to create the
- destination sign bits. */
- wordOfSignBits = __builtin_asri(value.s.high, 15);
- signWord = wordOfSignBits << reverseCount;
- result.s.high |= signWord;
-
- /* There is now a hole in the upper `count' bits of the low
- word. Shift the lower `count' bits of the upper word into the
- low word. */
- temp = value.s.high << reverseCount;
- result.s.low |= temp;
- }
-
- } else {
- int signWord;
-
- /* Shift is greater than one word, so top word will always be set
- to sign bits, and bottom word will be shifted from top word. */
- result.s.low = value.s.high >> count;
- result.s.high = __builtin_asri(value.s.high, 15);
-
- if (count != 16) {
-
- /* Shift the upper word of the source into the lower word of the
- result. Arithmetically shift the upper word as well, to retain
- the sign. This shift must be synthesised, as no such shift
- exists in the instruction set. */
- int signWord;
-
-
- /* Given a complete word of sign-bits, shift this back left to
- create the destination sign bits. */
- signWord = result.s.high << (16 - count);
- // signWord = wordOfSignBits << (16 - count);
-
- /* Insert the sign bits to the result's low word. */
- result.s.low |= signWord;
-
- }
-
- }
-
- return result.l;
-
-}
diff --git a/gcc/config/picochip/libgccExtras/clzsi2.asm b/gcc/config/picochip/libgccExtras/clzsi2.asm
deleted file mode 100644
index 835d4694167..00000000000
--- a/gcc/config/picochip/libgccExtras/clzsi2.asm
+++ /dev/null
@@ -1,189 +0,0 @@
-// Copyright (C) 2008 Free Software Foundation, Inc.
-//
-// This file is part of GCC.
-//
-// GCC is free software; you can redistribute it and/or modify it under
-// the terms of the GNU General Public License as published by the Free
-// Software Foundation; either version 3, or (at your option) any later
-// version.
-//
-// GCC 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 General Public License
-// for more details.
-//
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-//
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// picoChip ASM file
-//.file "clzsi2.asm"
-
-.section .text
-
-.global __clzsi2
-__clzsi2:
-_picoMark_FUNCTION_BEGIN=
-
-// picoChip Function Prologue : &__clzsi2 = 0 bytes
-
- // What value should be operated on? If the top word is empty
- // then count the bits in the bottom word, and add 16. If the
- // top word is not empty, then count the bits in the top word.
-
- // R4 stores the constant 0
-
- sub.0 R1,0,r15 \ copy.1 16,r2
- copyeq r0,r1
- copyne 0,r2
-
- // R1 now stores value to count, and R2 stores current bit offset.
- sbc r1,r0
- asr.0 r1,15,r15 \ add.1 r0,1,r0
- jr (lr) \ copyne 0,r0
-=-> add.0 r0,r2,r0
-
-_picoMark_FUNCTION_END=
-
-// picoChip Function Epilogue : __clzsi2
-
-//============================================================================
-// All DWARF information between this marker, and the END OF DWARF
-// marker should be included in the source file. Search for
-// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and
-// provide the relevent information. Add markers called
-// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the
-// function in question.
-//============================================================================
-
-//============================================================================
-// Frame information.
-//============================================================================
-
-.section .debug_frame
-_picoMark_DebugFrame=
-
-// Common CIE header.
-.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin
-_picoMark_CieBegin=
-.unalignedInitLong 0xffffffff
-.initByte 0x1 // CIE Version
-.ascii 16#0# // CIE Augmentation
-.uleb128 0x1 // CIE Code Alignment Factor
-.sleb128 2 // CIE Data Alignment Factor
-.initByte 0xc // CIE RA Column
-.initByte 0xc // DW_CFA_def_cfa
-.uleb128 0xd
-.uleb128 0x0
-.align 2
-_picoMark_CieEnd=
-
-// FDE
-_picoMark_LSFDE0I900821033007563=
-.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin
-_picoMark_FdeBegin=
-.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location
-.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0 // <-- FUNCTION_STACK_SIZE_GOES_HERE
-.initByte 0x4 // DW_CFA_advance_loc4
-.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0
-.align 2
-_picoMark_FdeEnd=
-
-//============================================================================
-// Abbrevation information.
-//============================================================================
-
-.section .debug_abbrev
-_picoMark_ABBREVIATIONS=
-
-.section .debug_abbrev
- .uleb128 0x1 // (abbrev code)
- .uleb128 0x11 // (TAG: DW_TAG_compile_unit)
- .initByte 0x1 // DW_children_yes
- .uleb128 0x10 // (DW_AT_stmt_list)
- .uleb128 0x6 // (DW_FORM_data4)
- .uleb128 0x12 // (DW_AT_high_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x11 // (DW_AT_low_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x25 // (DW_AT_producer)
- .uleb128 0x8 // (DW_FORM_string)
- .uleb128 0x13 // (DW_AT_language)
- .uleb128 0x5 // (DW_FORM_data2)
- .uleb128 0x3 // (DW_AT_name)
- .uleb128 0x8 // (DW_FORM_string)
-.initByte 0x0
-.initByte 0x0
-
- .uleb128 0x2 ;# (abbrev code)
- .uleb128 0x2e ;# (TAG: DW_TAG_subprogram)
-.initByte 0x0 ;# DW_children_no
- .uleb128 0x3 ;# (DW_AT_name)
- .uleb128 0x8 ;# (DW_FORM_string)
- .uleb128 0x11 ;# (DW_AT_low_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
- .uleb128 0x12 ;# (DW_AT_high_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
-.initByte 0x0
-.initByte 0x0
-
-.initByte 0x0
-
-//============================================================================
-// Line information. DwarfLib requires this to be present, but it can
-// be empty.
-//============================================================================
-
-.section .debug_line
-_picoMark_LINES=
-
-//============================================================================
-// Debug Information
-//============================================================================
-.section .debug_info
-
-//Fixed header.
-.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN
-_picoMark_DEBUG_INFO_BEGIN=
-.unalignedInitWord 0x2
-.unalignedInitLong _picoMark_ABBREVIATIONS
-.initByte 0x2
-
-// Compile unit information.
-.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit)
-.unalignedInitLong _picoMark_LINES
-.unalignedInitWord _picoMark_FUNCTION_END
-.unalignedInitWord _picoMark_FUNCTION_BEGIN
-// Producer is `picoChip'
-.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00#
-.unalignedInitWord 0xcafe // ASM language
-.ascii 16#0# // Name. DwarfLib expects this to be present.
-
-.uleb128 0x2 ;# (DIE DW_TAG_subprogram)
-
-// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex
-// digit is specified using the format 16#XX#
-.ascii 16#5F# 16#63# 16#6C# 16#7A# 16#73# 16#69# 16#32# 16#0# // Function name `_clzsi2'
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc
-.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc
-
-.initByte 0x0 // end of compile unit children.
-
-_picoMark_DEBUG_INFO_END=
-
-//============================================================================
-// END OF DWARF
-//============================================================================
-
-.section .endFile
-// End of picoChip ASM file
diff --git a/gcc/config/picochip/libgccExtras/cmpsi2.asm b/gcc/config/picochip/libgccExtras/cmpsi2.asm
deleted file mode 100644
index 95322f32419..00000000000
--- a/gcc/config/picochip/libgccExtras/cmpsi2.asm
+++ /dev/null
@@ -1,212 +0,0 @@
-// picoChip ASM file
-//.file "ucmpsi2.c"
-//
-// Support for 32-bit signed compare.
-//
-// Copyright (C) 2003, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
-// Contributed by Picochip Ltd.
-// Maintained by Daniel Towner (daniel.towner@picochip.com)
-//
-// This file is free software; you can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option) any
-// later version.
-//
-// This file 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
-// General Public License for more details.
-//
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-//
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Compiled from the following, and then hand optimised.
-//
-// int __cmpsi2 (USItype x, USItype y)
-// {
-//
-// SIunion lx; lx.l = x;
-// SIunion ly; ly.l = y;
-//
-// if (lx.s.high < ly.s.high)
-// return 0;
-// else if (lx.s.high > ly.s.high)
-// return 2;
-// if (lx.s.low < ly.s.low)
-// return 0;
-// else if (lx.s.low > ly.s.low)
-// return 2;
-// return 1;
-// }
-
-.section .text
-
-.align 8
-.global ___cmpsi2
-___cmpsi2:
-_picoMark_FUNCTION_BEGIN=
-
-// picoChip Function Prologue : &___cmpsi2 = 0 bytes
-
- SUB.0 R1,R3,r15
-
- BLT _L1
-=-> SUB.0 R3,R1,r15 \ COPY.1 0,R5
-
- BLT _L1
-=-> SUB.0 R0,R2,r15 \ COPY.1 2,R5
-
- BLO _L1
-=-> SUB.0 R2,R0,r15 \ COPY.1 0,R5
-
- BLO _L1
-=-> COPY.0 2,R5
-
- COPY.0 1,R5
-_L1:
- JR (R12)
-=-> COPY.0 R5,R0
-
-_picoMark_FUNCTION_END=
-// picoChip Function Epilogue : __cmpsi2
-//============================================================================
-// All DWARF information between this marker, and the END OF DWARF
-// marker should be included in the source file. Search for
-// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and
-// provide the relevent information. Add markers called
-// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the
-// function in question.
-//============================================================================
-
-//============================================================================
-// Frame information.
-//============================================================================
-
-.section .debug_frame
-_picoMark_DebugFrame=
-
-// Common CIE header.
-.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin
-_picoMark_CieBegin=
-.unalignedInitLong 0xffffffff
-.initByte 0x1 // CIE Version
-.ascii 16#0# // CIE Augmentation
-.uleb128 0x1 // CIE Code Alignment Factor
-.sleb128 2 // CIE Data Alignment Factor
-.initByte 0xc // CIE RA Column
-.initByte 0xc // DW_CFA_def_cfa
-.uleb128 0xd
-.uleb128 0x0
-.align 2
-_picoMark_CieEnd=
-
-// FDE
-_picoMark_LSFDE0I900821033007563=
-.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin
-_picoMark_FdeBegin=
-.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location
-.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0 // <-- FUNCTION_STACK_SIZE_GOES_HERE
-.initByte 0x4 // DW_CFA_advance_loc4
-.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0
-.align 2
-_picoMark_FdeEnd=
-
-//============================================================================
-// Abbrevation information.
-//============================================================================
-
-.section .debug_abbrev
-_picoMark_ABBREVIATIONS=
-
-.section .debug_abbrev
- .uleb128 0x1 // (abbrev code)
- .uleb128 0x11 // (TAG: DW_TAG_compile_unit)
- .initByte 0x1 // DW_children_yes
- .uleb128 0x10 // (DW_AT_stmt_list)
- .uleb128 0x6 // (DW_FORM_data4)
- .uleb128 0x12 // (DW_AT_high_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x11 // (DW_AT_low_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x25 // (DW_AT_producer)
- .uleb128 0x8 // (DW_FORM_string)
- .uleb128 0x13 // (DW_AT_language)
- .uleb128 0x5 // (DW_FORM_data2)
- .uleb128 0x3 // (DW_AT_name)
- .uleb128 0x8 // (DW_FORM_string)
-.initByte 0x0
-.initByte 0x0
-
- .uleb128 0x2 ;# (abbrev code)
- .uleb128 0x2e ;# (TAG: DW_TAG_subprogram)
-.initByte 0x0 ;# DW_children_no
- .uleb128 0x3 ;# (DW_AT_name)
- .uleb128 0x8 ;# (DW_FORM_string)
- .uleb128 0x11 ;# (DW_AT_low_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
- .uleb128 0x12 ;# (DW_AT_high_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
-.initByte 0x0
-.initByte 0x0
-
-.initByte 0x0
-
-//============================================================================
-// Line information. DwarfLib requires this to be present, but it can
-// be empty.
-//============================================================================
-
-.section .debug_line
-_picoMark_LINES=
-
-//============================================================================
-// Debug Information
-//============================================================================
-.section .debug_info
-
-//Fixed header.
-.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN
-_picoMark_DEBUG_INFO_BEGIN=
-.unalignedInitWord 0x2
-.unalignedInitLong _picoMark_ABBREVIATIONS
-.initByte 0x2
-
-// Compile unit information.
-.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit)
-.unalignedInitLong _picoMark_LINES
-.unalignedInitWord _picoMark_FUNCTION_END
-.unalignedInitWord _picoMark_FUNCTION_BEGIN
-// Producer is `picoChip'
-.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00#
-.unalignedInitWord 0xcafe // ASM language
-.ascii 16#0# // Name. DwarfLib expects this to be present.
-
-.uleb128 0x2 ;# (DIE DW_TAG_subprogram)
-
-// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex
-// digit is specified using the format 16#XX#
-.ascii 16#5f# 16#5f# 16#63# 16#6d# 16#70# 16#73# 16#69# 16#32# 16#0# // Function name `__cmpsi2'
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc
-.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc
-
-.initByte 0x0 // end of compile unit children.
-
-_picoMark_DEBUG_INFO_END=
-
-//============================================================================
-// END OF DWARF
-//============================================================================
-
-.section .endFile
-// End of picoChip ASM file
diff --git a/gcc/config/picochip/libgccExtras/divmod15.asm b/gcc/config/picochip/libgccExtras/divmod15.asm
deleted file mode 100644
index d314b3be570..00000000000
--- a/gcc/config/picochip/libgccExtras/divmod15.asm
+++ /dev/null
@@ -1,261 +0,0 @@
-// picoChip ASM file
-//
-// Support for 16-bit unsigned division/modulus.
-//
-// Copyright (C) 2003, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
-// Contributed by Picochip Ltd.
-// Maintained by Daniel Towner (daniel.towner@picochip.com)
-//
-// This file is free software; you can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option) any
-// later version.
-//
-// This file 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
-// General Public License for more details.
-//
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-//
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-.section .text
-
-.global __divmod15
-__divmod15:
-_picoMark_FUNCTION_BEGIN=
-
-// picoChip Function Prologue : &__divmod15 = 0 bytes
-
- // The picoChip instruction set has a divstep instruction which
- // is used to perform one iteration of a binary division algorithm.
- // The instruction allows 16-bit signed division to be implemented.
- // It does not directly allow 16-bit unsigned division to be
- // implemented. Thus, this function pulls out the common division
- // iteration for 15-bits unsigned, and then special wrappers
- // provide the logic to change this into a 16-bit signed or
- // unsigned division, as appropriate. This allows the two
- // versions of division to share a common implementation, reducing
- // code size when the two are used together. It also reduces
- // the maintenance overhead.
-
- // Input:
- // r0 - dividend
- // r1 - divisor
- // Output:
- // r0 - quotient
- // r1 - remainder
- // R5 is unused
-
- // Check for special cases. The emphasis is on detecting these as
- // quickly as possible, so that the main division can be started. If
- // the user requests division by one, division by self, and so on
- // then they will just have to accept that this won't be particularly
- // quick (relatively), whereas a real division (e.g., dividing a
- // large value by a small value) will run as fast as possible
- // (i.e., special case detection should not slow down the common case)
- //
- // Special cases to consider:
- //
- // Division by zero.
- // Division of zero.
- // Inputs are equal
- // Divisor is bigger than dividend
- // Division by power of two (can be shifted instead).
- // Division by 1 (special case of power of two division)
- //
- // Division/modulus by zero is undefined (ISO C:6.5.5), so
- // don't bother handling this special case.
- //
- // The special cases of division by a power of 2 are ignored, since
- // they cause the general case to slow down. Omitting these
- // special cases also reduces code size considerably.
-
- // Handle divisor >= dividend separately. Note that this also handles
- // the case where the dividend is zero. Note that the flags must be
- // preserved, since they are also used at the branch destination.
- sub.0 r1,r0,r15
- sbc r0,r2 \ bge divisorGeDividend
-=-> sbc r1,r4
-
- // Compute the shift count. The amount by which the divisor
- // must be shifted left to be aligned with the dividend.
- sub.0 r4,r2,r3
-
- // Align the divisor to the dividend. Execute a divstep (since at
- // least one will always be executed). Skip the remaining loop
- // if the shift count is zero.
- lsl.0 r1,r3,r1 \ beq skipLoop
-=-> divstep r0,r1 \ add.1 r3,1,r2
-
- // Execute the divstep loop until temp is 0. This assumes that the
- // loop count is at least one.
- sub.0 r3,1,r4
-divLoop:
- divstep r0,r1 \ bne divLoop
-=-> sub.0 r4,1,r4
-
-skipLoop:
-
- // The top bits of the result are the remainder. The bottom
- // bits are the quotient.
- lsr.0 r0,r2,r1 \ sub.1 16,r2,r4
- jr (lr ) \ lsl.0 r0,r4,r0
-=-> lsr.0 r0,r4,r0
-
-// Special case.
-
-divisorGeDividend:
- // The divisor is greater than or equal to the dividend. The flags
- // indicate which of these alternatives it is. The COPYNE can be used
- // to set the result appropriately, without introducing any more
- // branches.
- copy.0 r0,r1 \ copy.1 0,r0
- jr (lr) \ copyeq r0,r1
-=-> copyeq 1,r0
-
-_picoMark_FUNCTION_END=
-// picoChip Function Epilogue : __divmod15
-
-
-//============================================================================
-// All DWARF information between this marker, and the END OF DWARF
-// marker should be included in the source file. Search for
-// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and
-// provide the relevent information. Add markers called
-// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the
-// function in question.
-//============================================================================
-
-//============================================================================
-// Frame information.
-//============================================================================
-
-.section .debug_frame
-_picoMark_DebugFrame=
-
-// Common CIE header.
-.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin
-_picoMark_CieBegin=
-.unalignedInitLong 0xffffffff
-.initByte 0x1 // CIE Version
-.ascii 16#0# // CIE Augmentation
-.uleb128 0x1 // CIE Code Alignment Factor
-.sleb128 2 // CIE Data Alignment Factor
-.initByte 0xc // CIE RA Column
-.initByte 0xc // DW_CFA_def_cfa
-.uleb128 0xd
-.uleb128 0x0
-.align 2
-_picoMark_CieEnd=
-
-// FDE
-_picoMark_LSFDE0I900821033007563=
-.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin
-_picoMark_FdeBegin=
-.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location
-.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0 // <-- FUNCTION_STACK_SIZE_GOES_HERE
-.initByte 0x4 // DW_CFA_advance_loc4
-.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0
-.align 2
-_picoMark_FdeEnd=
-
-//============================================================================
-// Abbrevation information.
-//============================================================================
-
-.section .debug_abbrev
-_picoMark_ABBREVIATIONS=
-
-.section .debug_abbrev
- .uleb128 0x1 // (abbrev code)
- .uleb128 0x11 // (TAG: DW_TAG_compile_unit)
- .initByte 0x1 // DW_children_yes
- .uleb128 0x10 // (DW_AT_stmt_list)
- .uleb128 0x6 // (DW_FORM_data4)
- .uleb128 0x12 // (DW_AT_high_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x11 // (DW_AT_low_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x25 // (DW_AT_producer)
- .uleb128 0x8 // (DW_FORM_string)
- .uleb128 0x13 // (DW_AT_language)
- .uleb128 0x5 // (DW_FORM_data2)
- .uleb128 0x3 // (DW_AT_name)
- .uleb128 0x8 // (DW_FORM_string)
-.initByte 0x0
-.initByte 0x0
-
- .uleb128 0x2 ;# (abbrev code)
- .uleb128 0x2e ;# (TAG: DW_TAG_subprogram)
-.initByte 0x0 ;# DW_children_no
- .uleb128 0x3 ;# (DW_AT_name)
- .uleb128 0x8 ;# (DW_FORM_string)
- .uleb128 0x11 ;# (DW_AT_low_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
- .uleb128 0x12 ;# (DW_AT_high_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
-.initByte 0x0
-.initByte 0x0
-
-.initByte 0x0
-
-//============================================================================
-// Line information. DwarfLib requires this to be present, but it can
-// be empty.
-//============================================================================
-
-.section .debug_line
-_picoMark_LINES=
-
-//============================================================================
-// Debug Information
-//============================================================================
-.section .debug_info
-
-//Fixed header.
-.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN
-_picoMark_DEBUG_INFO_BEGIN=
-.unalignedInitWord 0x2
-.unalignedInitLong _picoMark_ABBREVIATIONS
-.initByte 0x2
-
-// Compile unit information.
-.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit)
-.unalignedInitLong _picoMark_LINES
-.unalignedInitWord _picoMark_FUNCTION_END
-.unalignedInitWord _picoMark_FUNCTION_BEGIN
-// Producer is `picoChip'
-.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00#
-.unalignedInitWord 0xcafe // ASM language
-.ascii 16#0# // Name. DwarfLib expects this to be present.
-
-.uleb128 0x2 ;# (DIE DW_TAG_subprogram)
-
-// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex
-// digit is specified using the format 16#XX#
-.ascii 16#5f# 16#64# 16#69# 16#76# 16#6d# 16#6f# 16#64# 16#31# 16#35# 16#0# // Function name `_divmod15'
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc
-.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc
-
-.initByte 0x0 // end of compile unit children.
-
-_picoMark_DEBUG_INFO_END=
-
-//============================================================================
-// END OF DWARF
-//============================================================================
-
-.section .endFile
-// End of picoChip ASM file
diff --git a/gcc/config/picochip/libgccExtras/divmodhi4.asm b/gcc/config/picochip/libgccExtras/divmodhi4.asm
deleted file mode 100644
index 9dad674c7bc..00000000000
--- a/gcc/config/picochip/libgccExtras/divmodhi4.asm
+++ /dev/null
@@ -1,246 +0,0 @@
-// picoChip ASM file
-//
-// Support for 16-bit signed division/modulus.
-//
-// Copyright (C) 2003, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
-// Contributed by Picochip Ltd.
-// Maintained by Daniel Towner (daniel.towner@picochip.com)
-//
-// This file is free software; you can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option) any
-// later version.
-//
-// This file 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
-// General Public License for more details.
-//
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-//
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-.section .text
-
-.align 8
-.global __divmodhi4
-__divmodhi4:
-_picoMark_FUNCTION_BEGIN=
-
-// picoChip Function Prologue : &__divmodhi4 = 4 bytes
-
- // 16-bit signed division. Most of the special cases are dealt
- // with by the 15-bit signed division library (e.g., division by
- // zero, division by 1, and so on). This wrapper simply inverts
- // any negative inputs, calls the 15-bit library, and flips any
- // results as necessary. The
- // only special cases to be handled here are where either the
- // divisor or the dividend are the maximum negative values.
-
- // Encode r5 with a bit pattern which indicates whether the
- // outputs of the division must be negated. The MSB will be set
- // to the sign of the dividend (which controls the remainder's
- // sign), while the LSB will store the XOR of the two signs,
- // which indicates the quotient's sign. R5 is not modified by the
- // 15-bit divmod routine.
- sub.0 r1,16#8000#,r15 \ asr.1 r0,15,r4
- beq divisorIsLargestNegative \ lsr.0 r1,15,r3
-=-> sub.0 r0,16#8000#,r15 \ xor.1 r3,r4,r5
-
- // Handle least negative dividend with a special case. Note that the
- // absolute value of the divisor is also computed here.
- add.0 [asr r1,15],r1,r3 \ beq dividendIsLargestNegative
-=-> xor.0 [asr r1,15],r3,r1 \ stw lr,(fp)-1
-
- // Compute the absolute value of the dividend, and call the main
- // divide routine.
- add.0 r4,r0,r2 \ jl (&__divmod15) // fn_call &__divmod15
-=-> xor.0 r4,r2,r0
-
-handleNegatedResults:
- // Speculatively store the negation of the results.
- sub.0 0,r0,r2 \ sub.1 0,r1,r3
-
- // Does the quotient need negating? The LSB indicates this.
- and.0 r5,1,r15 \ ldw (fp)-1,lr
- copyne r2,r0
-
- asr.0 r5,15,r15 \ jr (lr)
-=-> copyne r3,r1
-
-dividendIsLargestNegative:
-
- // Divide the constant -32768. Use the Hacker's Delight
- // algorithm (i.e., ((dividend / 2) / divisor) * 2) gives
- // approximate answer). This code is a special case, so no
- // great effort is made to make it fast, only to make it
- // small.
-
- lsr.0 r0,1,r0 \ jl (&__divmod15) // fn_call &__divmod15
-=-> stw r1,(fp)-2
-
- // Load the original divisor, and compute the new quotient and
- // remainder.
- lsl.0 r0,1,r0 \ ldw (fp)-2,r3
- lsl.0 r1,1,r1 // Fill stall slot
-
- // The error in the quotient is 0 or 1. The error can be determined
- // by comparing the remainder to the original divisor. If the
- // remainder is bigger, then an error of 1 has been introduced,
- // which must be fixed.
- sub.0 r1,r3,r15
- blo noCompensationForError
-=-> nop
- add.0 r0,1,r0 \ sub.1 r1,r3,r1
-noCompensationForError:
- bra handleNegatedResults
-=-> nop
-
-divisorIsLargestNegative:
- // The flags indicate whether the dividend is also the maximum negative
- copy.0 r0,r1 \ copy.1 0,r0
- copyeq r0,r1 \ jr (lr)
-=-> copyeq 1,r0
-
-_picoMark_FUNCTION_END=
-// picoChip Function Epilogue : __divmodhi4
-
-
-//============================================================================
-// All DWARF information between this marker, and the END OF DWARF
-// marker should be included in the source file. Search for
-// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and
-// provide the relevent information. Add markers called
-// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the
-// function in question.
-//============================================================================
-
-//============================================================================
-// Frame information.
-//============================================================================
-
-.section .debug_frame
-_picoMark_DebugFrame=
-
-// Common CIE header.
-.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin
-_picoMark_CieBegin=
-.unalignedInitLong 0xffffffff
-.initByte 0x1 // CIE Version
-.ascii 16#0# // CIE Augmentation
-.uleb128 0x1 // CIE Code Alignment Factor
-.sleb128 2 // CIE Data Alignment Factor
-.initByte 0xc // CIE RA Column
-.initByte 0xc // DW_CFA_def_cfa
-.uleb128 0xd
-.uleb128 0x0
-.align 2
-_picoMark_CieEnd=
-
-// FDE
-_picoMark_LSFDE0I900821033007563=
-.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin
-_picoMark_FdeBegin=
-.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location
-.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x4 // <-- FUNCTION_STACK_SIZE_GOES_HERE
-.initByte 0x4 // DW_CFA_advance_loc4
-.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0
-.align 2
-_picoMark_FdeEnd=
-
-//============================================================================
-// Abbrevation information.
-//============================================================================
-
-.section .debug_abbrev
-_picoMark_ABBREVIATIONS=
-
-.section .debug_abbrev
- .uleb128 0x1 // (abbrev code)
- .uleb128 0x11 // (TAG: DW_TAG_compile_unit)
- .initByte 0x1 // DW_children_yes
- .uleb128 0x10 // (DW_AT_stmt_list)
- .uleb128 0x6 // (DW_FORM_data4)
- .uleb128 0x12 // (DW_AT_high_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x11 // (DW_AT_low_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x25 // (DW_AT_producer)
- .uleb128 0x8 // (DW_FORM_string)
- .uleb128 0x13 // (DW_AT_language)
- .uleb128 0x5 // (DW_FORM_data2)
- .uleb128 0x3 // (DW_AT_name)
- .uleb128 0x8 // (DW_FORM_string)
-.initByte 0x0
-.initByte 0x0
-
- .uleb128 0x2 ;# (abbrev code)
- .uleb128 0x2e ;# (TAG: DW_TAG_subprogram)
-.initByte 0x0 ;# DW_children_no
- .uleb128 0x3 ;# (DW_AT_name)
- .uleb128 0x8 ;# (DW_FORM_string)
- .uleb128 0x11 ;# (DW_AT_low_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
- .uleb128 0x12 ;# (DW_AT_high_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
-.initByte 0x0
-.initByte 0x0
-
-.initByte 0x0
-
-//============================================================================
-// Line information. DwarfLib requires this to be present, but it can
-// be empty.
-//============================================================================
-
-.section .debug_line
-_picoMark_LINES=
-
-//============================================================================
-// Debug Information
-//============================================================================
-.section .debug_info
-
-//Fixed header.
-.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN
-_picoMark_DEBUG_INFO_BEGIN=
-.unalignedInitWord 0x2
-.unalignedInitLong _picoMark_ABBREVIATIONS
-.initByte 0x2
-
-// Compile unit information.
-.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit)
-.unalignedInitLong _picoMark_LINES
-.unalignedInitWord _picoMark_FUNCTION_END
-.unalignedInitWord _picoMark_FUNCTION_BEGIN
-// Producer is `picoChip'
-.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00#
-.unalignedInitWord 0xcafe // ASM language
-.ascii 16#0# // Name. DwarfLib expects this to be present.
-
-.uleb128 0x2 ;# (DIE DW_TAG_subprogram)
-
-// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex
-// digit is specified using the format 16#XX#
-.ascii 16#5f# 16#64# 16#69# 16#76# 16#6d# 16#6f# 16#64# 16#68# 16#69# 16#34# 16#0# // Function name `_divmodhi4'
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc
-.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc
-
-.initByte 0x0 // end of compile unit children.
-
-_picoMark_DEBUG_INFO_END=
-
-//============================================================================
-// END OF DWARF
-//============================================================================
-.section .endFile
diff --git a/gcc/config/picochip/libgccExtras/divmodsi4.asm b/gcc/config/picochip/libgccExtras/divmodsi4.asm
deleted file mode 100644
index 4fc1acb1b63..00000000000
--- a/gcc/config/picochip/libgccExtras/divmodsi4.asm
+++ /dev/null
@@ -1,233 +0,0 @@
-// picoChip ASM file
-//
-// Support for 32-bit signed division/modulus.
-//
-// Copyright (C) 2003, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
-// Contributed by Picochip Ltd.
-// Maintained by Daniel Towner (daniel.towner@picochip.com)
-//
-// This file is free software; you can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option) any
-// later version.
-//
-// This file 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
-// General Public License for more details.
-//
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-//
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-.section .text
-
-.align 8
-.global __divmodsi4
-__divmodsi4:
-_picoMark_FUNCTION_BEGIN=
-// picoChip Function Prologue : &__divmodsi4 = 8 bytes
-
- // Note: optimising for size is preferred over optimising for speed.
-
- // Note: the frame is setup throughout the following instructions,
- // and is complete at the point the udivmodsi4 function is called.
-
- // Note that R9 is encoded with a pattern which indicates
- // whether the remainder and quotient should be negated on
- // completion. The MSB is set to the sign of the dividend
- // (i.e., the sign of the remainder), while the LSB encodes
- // the XOR of the two input's signs (i.e., the sign of the
- // quotient.
-
- // If dividend is negative, invert the dividend and flag.
- ASR.0 r1,15,r4
- BEQ dividendNotNegative
-=-> STL R[9:8],(FP)-2
-
- // Dividend is negative - negate dividend.
- SUB.0 0,R0,R0
- SUBB.0 0,R1,R1
-
-dividendNotNegative:
-
- // If divisor is negative, invert the divisor.
- AND.0 [lsr r3,15],1,r5
- SUB.0 R3,0, r15
- BGE divisorNotNegative
-=-> XOR.0 r4,r5,r9
-
- // Divisor is negative - negate divisor.
- SUB.0 0,R2,R2
- SUBB.0 0,R3,R3
-
-divisorNotNegative:
-
- STL R[13:12],(FP)-1 \ JL (&__udivmodsi4)
-=-> SUB.0 FP,8,FP // udivmodsi expects the frame to be valid still.
-
- // The LSB of R9 indicates whether the quotient should be negated.
- AND.0 r9,1,r15
- BEQ skipQuotientNegation
-=-> LDL (FP)1,R[13:12] // Convenient point to restore link/fp
-
- SUB.0 0,R4,R4
- SUBB.0 0,R5,R5
-
-skipQuotientNegation:
-
- // The MSB of R9 indicates whether the remainder should be negated.
- ASR.0 R9,15,r15
- BEQ epilogue
-
- SUB.0 0,R6,R6
- SUBB.0 0,R7,R7
-
-epilogue:
-
- JR (R12)
-=-> LDL (FP)-2,R[9:8]
-
-_picoMark_FUNCTION_END=
-// picoChip Function Epilogue : __divmodsi4
-
-//============================================================================
-// All DWARF information between this marker, and the END OF DWARF
-// marker should be included in the source file. Search for
-// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and
-// provide the relevent information. Add markers called
-// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the
-// function in question.
-//============================================================================
-
-//============================================================================
-// Frame information.
-//============================================================================
-
-.section .debug_frame
-_picoMark_DebugFrame=
-
-// Common CIE header.
-.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin
-_picoMark_CieBegin=
-.unalignedInitLong 0xffffffff
-.initByte 0x1 // CIE Version
-.ascii 16#0# // CIE Augmentation
-.uleb128 0x1 // CIE Code Alignment Factor
-.sleb128 2 // CIE Data Alignment Factor
-.initByte 0xc // CIE RA Column
-.initByte 0xc // DW_CFA_def_cfa
-.uleb128 0xd
-.uleb128 0x0
-.align 2
-_picoMark_CieEnd=
-
-// FDE
-_picoMark_LSFDE0I900821033007563=
-.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin
-_picoMark_FdeBegin=
-.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location
-.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x8 // <-- FUNCTION_STACK_SIZE_GOES_HERE
-.initByte 0x4 // DW_CFA_advance_loc4
-.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0
-.align 2
-_picoMark_FdeEnd=
-
-//============================================================================
-// Abbrevation information.
-//============================================================================
-
-.section .debug_abbrev
-_picoMark_ABBREVIATIONS=
-
-.section .debug_abbrev
- .uleb128 0x1 // (abbrev code)
- .uleb128 0x11 // (TAG: DW_TAG_compile_unit)
- .initByte 0x1 // DW_children_yes
- .uleb128 0x10 // (DW_AT_stmt_list)
- .uleb128 0x6 // (DW_FORM_data4)
- .uleb128 0x12 // (DW_AT_high_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x11 // (DW_AT_low_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x25 // (DW_AT_producer)
- .uleb128 0x8 // (DW_FORM_string)
- .uleb128 0x13 // (DW_AT_language)
- .uleb128 0x5 // (DW_FORM_data2)
- .uleb128 0x3 // (DW_AT_name)
- .uleb128 0x8 // (DW_FORM_string)
-.initByte 0x0
-.initByte 0x0
-
- .uleb128 0x2 ;# (abbrev code)
- .uleb128 0x2e ;# (TAG: DW_TAG_subprogram)
-.initByte 0x0 ;# DW_children_no
- .uleb128 0x3 ;# (DW_AT_name)
- .uleb128 0x8 ;# (DW_FORM_string)
- .uleb128 0x11 ;# (DW_AT_low_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
- .uleb128 0x12 ;# (DW_AT_high_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
-.initByte 0x0
-.initByte 0x0
-
-.initByte 0x0
-
-//============================================================================
-// Line information. DwarfLib requires this to be present, but it can
-// be empty.
-//============================================================================
-
-.section .debug_line
-_picoMark_LINES=
-
-//============================================================================
-// Debug Information
-//============================================================================
-.section .debug_info
-
-//Fixed header.
-.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN
-_picoMark_DEBUG_INFO_BEGIN=
-.unalignedInitWord 0x2
-.unalignedInitLong _picoMark_ABBREVIATIONS
-.initByte 0x2
-
-// Compile unit information.
-.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit)
-.unalignedInitLong _picoMark_LINES
-.unalignedInitWord _picoMark_FUNCTION_END
-.unalignedInitWord _picoMark_FUNCTION_BEGIN
-// Producer is `picoChip'
-.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00#
-.unalignedInitWord 0xcafe // ASM language
-.ascii 16#0# // Name. DwarfLib expects this to be present.
-
-.uleb128 0x2 ;# (DIE DW_TAG_subprogram)
-
-// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex
-// digit is specified using the format 16#XX#
-.ascii 16#5f# 16#64# 16#69# 16#76# 16#6d# 16#6f# 16#64# 16#73# 16#69# 16#34# 16#0# // Function name `_divmodsi4'
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc
-.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc
-
-.initByte 0x0 // end of compile unit children.
-
-_picoMark_DEBUG_INFO_END=
-
-//============================================================================
-// END OF DWARF
-//============================================================================
-
-.section .endFile
-// End of picoChip ASM file
diff --git a/gcc/config/picochip/libgccExtras/longjmp.asm b/gcc/config/picochip/libgccExtras/longjmp.asm
deleted file mode 100644
index d2a80aca730..00000000000
--- a/gcc/config/picochip/libgccExtras/longjmp.asm
+++ /dev/null
@@ -1,182 +0,0 @@
-// picoChip ASM file
-//
-// Support for 32-bit arithmetic shift right.
-//
-// Copyright (C) 2003, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
-// Contributed by Picochip Ltd.
-// Maintained by Hariharan Sandanagobalane (hariharan@picochip.com)
-//
-// This file is free software; you can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option) any
-// later version.
-//
-// This file 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
-// General Public License for more details.
-//
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-//
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-.section .text
-
-.global _longjmp
-_longjmp:
-_picoMark_FUNCTION_BEGIN=
-
-// picoChip Function Prologue : &_longjmp = 0 bytes
-
- LDL (R0)0, R[3:2]
- LDL (R0)1, R[5:4]
- LDL (R0)2, R[7:6]
- LDL (R0)3, R[9:8]
- LDL (R0)4, R[11:10]
- LDL (R0)5, R[13:12]
- LDW (R0)12, R14
- LDW (R0)13, R1
- JR (R12)
-=-> COPY.0 1,R0
-
-// picoChip Function Epilogue : longjmp
-//============================================================================
-// All DWARF information between this marker, and the END OF DWARF
-// marker should be included in the source file. Search for
-// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and
-// provide the relevent information. Add markers called
-// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the
-// function in question.
-//============================================================================
-
-//============================================================================
-// Frame information.
-//============================================================================
-
-.section .debug_frame
-_picoMark_DebugFrame=
-
-// Common CIE header.
-.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin
-_picoMark_CieBegin=
-.unalignedInitLong 0xffffffff
-.initByte 0x1 // CIE Version
-.ascii 16#0# // CIE Augmentation
-.uleb128 0x1 // CIE Code Alignment Factor
-.sleb128 2 // CIE Data Alignment Factor
-.initByte 0xc // CIE RA Column
-.initByte 0xc // DW_CFA_def_cfa
-.uleb128 0xd
-.uleb128 0x0
-.align 2
-_picoMark_CieEnd=
-
-// FDE
-_picoMark_LSFDE0I900821033007563=
-.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin
-_picoMark_FdeBegin=
-.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location
-.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0 // <-- FUNCTION_STACK_SIZE_GOES_HERE
-.initByte 0x4 // DW_CFA_advance_loc4
-.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0
-.align 2
-_picoMark_FdeEnd=
-
-//============================================================================
-// Abbrevation information.
-//============================================================================
-
-.section .debug_abbrev
-_picoMark_ABBREVIATIONS=
-
-.section .debug_abbrev
- .uleb128 0x1 // (abbrev code)
- .uleb128 0x11 // (TAG: DW_TAG_compile_unit)
- .initByte 0x1 // DW_children_yes
- .uleb128 0x10 // (DW_AT_stmt_list)
- .uleb128 0x6 // (DW_FORM_data4)
- .uleb128 0x12 // (DW_AT_high_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x11 // (DW_AT_low_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x25 // (DW_AT_producer)
- .uleb128 0x8 // (DW_FORM_string)
- .uleb128 0x13 // (DW_AT_language)
- .uleb128 0x5 // (DW_FORM_data2)
- .uleb128 0x3 // (DW_AT_name)
- .uleb128 0x8 // (DW_FORM_string)
-.initByte 0x0
-.initByte 0x0
-
- .uleb128 0x2 ;# (abbrev code)
- .uleb128 0x2e ;# (TAG: DW_TAG_subprogram)
-.initByte 0x0 ;# DW_children_no
- .uleb128 0x3 ;# (DW_AT_name)
- .uleb128 0x8 ;# (DW_FORM_string)
- .uleb128 0x11 ;# (DW_AT_low_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
- .uleb128 0x12 ;# (DW_AT_high_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
-.initByte 0x0
-.initByte 0x0
-
-.initByte 0x0
-
-//============================================================================
-// Line information. DwarfLib requires this to be present, but it can
-// be empty.
-//============================================================================
-
-.section .debug_line
-_picoMark_LINES=
-
-//============================================================================
-// Debug Information
-//============================================================================
-.section .debug_info
-
-//Fixed header.
-.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN
-_picoMark_DEBUG_INFO_BEGIN=
-.unalignedInitWord 0x2
-.unalignedInitLong _picoMark_ABBREVIATIONS
-.initByte 0x2
-
-// Compile unit information.
-.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit)
-.unalignedInitLong _picoMark_LINES
-.unalignedInitWord _picoMark_FUNCTION_END
-.unalignedInitWord _picoMark_FUNCTION_BEGIN
-// Producer is `picoChip'
-.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00#
-.unalignedInitWord 0xcafe // ASM language
-.ascii 16#0# // Name. DwarfLib expects this to be present.
-
-.uleb128 0x2 ;# (DIE DW_TAG_subprogram)
-
-// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex
-// digit is specified using the format 16#XX#
-.ascii 16#6c# 16#6f# 16#6e# 16#67# 16#6a# 16#6d# 16#70# 16#0# // Function name `longjmp'
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc
-.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc
-
-.initByte 0x0 // end of compile unit children.
-
-_picoMark_DEBUG_INFO_END=
-
-//============================================================================
-// END OF DWARF
-//============================================================================
-
-.section .endFile
-// End of picoChip ASM file
diff --git a/gcc/config/picochip/libgccExtras/lshrsi3.asm b/gcc/config/picochip/libgccExtras/lshrsi3.asm
deleted file mode 100644
index 4fc53902955..00000000000
--- a/gcc/config/picochip/libgccExtras/lshrsi3.asm
+++ /dev/null
@@ -1,190 +0,0 @@
-// picoChip ASM file
-//
-// Support for 32-bit logical shift right.
-//
-// Copyright (C) 2003, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
-// Contributed by Picochip Ltd.
-// Maintained by Hariharan Sandanagobalane (hariharan@picochip.com)
-//
-// This file is free software; you can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option) any
-// later version.
-//
-// This file 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
-// General Public License for more details.
-//
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-//
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-.section .text
-
-.global ___lshrsi3
-___lshrsi3:
-_picoMark_FUNCTION_BEGIN=
-
-// picoChip Function Prologue : &___lshrsi3 = 4 bytes
-
- // if (R2 > 15) goto _L2
- SUB.0 15,R2,r15
- JMPLT _L2
-=-> SUB.0 16,R2,R5 // R5 := R5 - R2 (HI)
-
- LSR.0 R0,R2,R0 // R4 := R0 >> R2
- LSR.0 R1,R2,R3 // R3 := R1 >> R2
- // if (R2 == 0) goto _L4
- LSL.0 R1,R5,R5 // R5 := R1 << R5
- OR.0 R5,R0,R4 // R2 := R5 IOR R2 (HI)
- SUB.0 R2,0,r15
- COPYNE R4,R0 // R0 := R2
- JR (R12) // Return to caller
-=-> COPY.0 R3,R1 // R1 := R3
-
-_L2:
- LSR.0 R1,R2,R0 // R2 := R1 >> R2
- JR (R12) // Return to caller
-=-> COPY.0 0,R1 // R3 := 0 (short constant)
-
-_picoMark_FUNCTION_END=
-// picoChip Function Epilogue : __lshrsi3
-
-//============================================================================
-// All DWARF information between this marker, and the END OF DWARF
-// marker should be included in the source file. Search for
-// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and
-// provide the relevent information. Add markers called
-// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the
-// function in question.
-//============================================================================
-
-//============================================================================
-// Frame information.
-//============================================================================
-
-.section .debug_frame
-_picoMark_DebugFrame=
-
-// Common CIE header.
-.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin
-_picoMark_CieBegin=
-.unalignedInitLong 0xffffffff
-.initByte 0x1 // CIE Version
-.ascii 16#0# // CIE Augmentation
-.uleb128 0x1 // CIE Code Alignment Factor
-.sleb128 2 // CIE Data Alignment Factor
-.initByte 0xc // CIE RA Column
-.initByte 0xc // DW_CFA_def_cfa
-.uleb128 0xd
-.uleb128 0x0
-.align 2
-_picoMark_CieEnd=
-
-// FDE
-_picoMark_LSFDE0I900821033007563=
-.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin
-_picoMark_FdeBegin=
-.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location
-.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x4 // <-- FUNCTION_STACK_SIZE_GOES_HERE
-.initByte 0x4 // DW_CFA_advance_loc4
-.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0
-.align 2
-_picoMark_FdeEnd=
-
-//============================================================================
-// Abbrevation information.
-//============================================================================
-
-.section .debug_abbrev
-_picoMark_ABBREVIATIONS=
-
-.section .debug_abbrev
- .uleb128 0x1 // (abbrev code)
- .uleb128 0x11 // (TAG: DW_TAG_compile_unit)
- .initByte 0x1 // DW_children_yes
- .uleb128 0x10 // (DW_AT_stmt_list)
- .uleb128 0x6 // (DW_FORM_data4)
- .uleb128 0x12 // (DW_AT_high_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x11 // (DW_AT_low_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x25 // (DW_AT_producer)
- .uleb128 0x8 // (DW_FORM_string)
- .uleb128 0x13 // (DW_AT_language)
- .uleb128 0x5 // (DW_FORM_data2)
- .uleb128 0x3 // (DW_AT_name)
- .uleb128 0x8 // (DW_FORM_string)
-.initByte 0x0
-.initByte 0x0
-
- .uleb128 0x2 ;# (abbrev code)
- .uleb128 0x2e ;# (TAG: DW_TAG_subprogram)
-.initByte 0x0 ;# DW_children_no
- .uleb128 0x3 ;# (DW_AT_name)
- .uleb128 0x8 ;# (DW_FORM_string)
- .uleb128 0x11 ;# (DW_AT_low_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
- .uleb128 0x12 ;# (DW_AT_high_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
-.initByte 0x0
-.initByte 0x0
-
-.initByte 0x0
-
-//============================================================================
-// Line information. DwarfLib requires this to be present, but it can
-// be empty.
-//============================================================================
-
-.section .debug_line
-_picoMark_LINES=
-
-//============================================================================
-// Debug Information
-//============================================================================
-.section .debug_info
-
-//Fixed header.
-.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN
-_picoMark_DEBUG_INFO_BEGIN=
-.unalignedInitWord 0x2
-.unalignedInitLong _picoMark_ABBREVIATIONS
-.initByte 0x2
-
-// Compile unit information.
-.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit)
-.unalignedInitLong _picoMark_LINES
-.unalignedInitWord _picoMark_FUNCTION_END
-.unalignedInitWord _picoMark_FUNCTION_BEGIN
-// Producer is `picoChip'
-.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00#
-.unalignedInitWord 0xcafe // ASM language
-.ascii 16#0# // Name. DwarfLib expects this to be present.
-
-.uleb128 0x2 ;# (DIE DW_TAG_subprogram)
-
-// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex
-// digit is specified using the format 16#XX#
-.ascii 16#5f# 16#5f# 16#6c# 16#73# 16#68# 16#72# 16#72# 16#73# 16#69# 16#33# 16#0# // Function name `__lshrsi3'
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc
-.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc
-
-.initByte 0x0 // end of compile unit children.
-
-_picoMark_DEBUG_INFO_END=
-
-//============================================================================
-// END OF DWARF
-//============================================================================
-.section .endFile
diff --git a/gcc/config/picochip/libgccExtras/lshrsi3.c b/gcc/config/picochip/libgccExtras/lshrsi3.c
deleted file mode 100644
index fa32dc726ef..00000000000
--- a/gcc/config/picochip/libgccExtras/lshrsi3.c
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-
-picoChip GCC support for 32-bit logical shift right.
-
-Copyright (C) 2003, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
-Contributed by Picochip Ltd.
-Maintained by Daniel Towner (daniel.towner@picochip.com)
-
-This file is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by the
-Free Software Foundation; either version 3, or (at your option) any
-later version.
-
-This file 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
-General Public License for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-typedef int HItype __attribute__ ((mode (HI)));
-typedef unsigned int UHItype __attribute__ ((mode (HI)));
-typedef unsigned int USItype __attribute__ ((mode (SI)));
-
-typedef struct USIstruct {
- UHItype low, high;
-} USIstruct;
-
-typedef union USIunion {
- USItype l;
- USIstruct s;
-} USIunion;
-
-USItype __lshrsi3(USIunion value, HItype count) {
- USIunion result;
- int temp;
-
- /* Ignore a zero count until we get into the (count < 16)
- clause. This is slightly slower when shifting by zero, but faster
- and smaller in all other cases (due to the better scheduling
- opportunities available by putting the test near computational
- instructions. */
-
- if (count < 16) {
- /* Shift low and high words by the count. */
- result.s.low = value.s.low >> count;
- result.s.high = value.s.high >> count;
-
- /* There is now a hole in the upper `count' bits of the low
- word. Shift the lower `count' bits of the upper word into the
- low word. This only works when count isn't zero. */
- if (count != 0) {
- temp = value.s.high << (16 - count);
- result.s.low |= temp;
- }
-
- } else {
- /* Shift the upper word of the source into the lower word of the
- result, and zero the result's upper word. Note that we actually
- ned to shift by (count - 16), but as we are only using the
- bottom 4 bits, this is equivalent to shifting by count. */
- result.s.low = value.s.high >> count;
- result.s.high = 0;
-
- }
-
- return result.l;
-
-}
diff --git a/gcc/config/picochip/libgccExtras/parityhi2.asm b/gcc/config/picochip/libgccExtras/parityhi2.asm
deleted file mode 100644
index b9d0cdc63dd..00000000000
--- a/gcc/config/picochip/libgccExtras/parityhi2.asm
+++ /dev/null
@@ -1,179 +0,0 @@
-// picoChip ASM file
-//.file "ucmpsi2.c"
-//
-// Support for parity checks.
-//
-// Copyright (C) 2003, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
-// Contributed by Picochip Ltd.
-// Maintained by Daniel Towner (daniel.towner@picochip.com)
-//
-// This file is free software; you can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option) any
-// later version.
-//
-// This file 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
-// General Public License for more details.
-//
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-//
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-.section .text
-
-.align 8
-.global ___parityhi2
-___parityhi2:
-_picoMark_FUNCTION_BEGIN=
-
-// picoChip Function Prologue : &___parityhi2 = 0 bytes
- XOR.0 [LSR R0,8],R0,R0
- XOR.0 [LSR R0,4],R0,R0
- XOR.0 [LSR R0,2],R0,R0
- JR (R12) \ XOR.0 [LSR R0,1],R0,R0
-=-> AND.0 R0,1,R0
-
-_picoMark_FUNCTION_END=
-// picoChip Function Epilogue : __parityhi2
-//============================================================================
-// All DWARF information between this marker, and the END OF DWARF
-// marker should be included in the source file. Search for
-// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and
-// provide the relevent information. Add markers called
-// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the
-// function in question.
-//============================================================================
-
-//============================================================================
-// Frame information.
-//============================================================================
-
-.section .debug_frame
-_picoMark_DebugFrame=
-
-// Common CIE header.
-.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin
-_picoMark_CieBegin=
-.unalignedInitLong 0xffffffff
-.initByte 0x1 // CIE Version
-.ascii 16#0# // CIE Augmentation
-.uleb128 0x1 // CIE Code Alignment Factor
-.sleb128 2 // CIE Data Alignment Factor
-.initByte 0xc // CIE RA Column
-.initByte 0xc // DW_CFA_def_cfa
-.uleb128 0xd
-.uleb128 0x0
-.align 2
-_picoMark_CieEnd=
-
-// FDE
-_picoMark_LSFDE0I900821033007563=
-.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin
-_picoMark_FdeBegin=
-.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location
-.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0 // <-- FUNCTION_STACK_SIZE_GOES_HERE
-.initByte 0x4 // DW_CFA_advance_loc4
-.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0
-.align 2
-_picoMark_FdeEnd=
-
-//============================================================================
-// Abbrevation information.
-//============================================================================
-
-.section .debug_abbrev
-_picoMark_ABBREVIATIONS=
-
-.section .debug_abbrev
- .uleb128 0x1 // (abbrev code)
- .uleb128 0x11 // (TAG: DW_TAG_compile_unit)
- .initByte 0x1 // DW_children_yes
- .uleb128 0x10 // (DW_AT_stmt_list)
- .uleb128 0x6 // (DW_FORM_data4)
- .uleb128 0x12 // (DW_AT_high_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x11 // (DW_AT_low_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x25 // (DW_AT_producer)
- .uleb128 0x8 // (DW_FORM_string)
- .uleb128 0x13 // (DW_AT_language)
- .uleb128 0x5 // (DW_FORM_data2)
- .uleb128 0x3 // (DW_AT_name)
- .uleb128 0x8 // (DW_FORM_string)
-.initByte 0x0
-.initByte 0x0
-
- .uleb128 0x2 ;# (abbrev code)
- .uleb128 0x2e ;# (TAG: DW_TAG_subprogram)
-.initByte 0x0 ;# DW_children_no
- .uleb128 0x3 ;# (DW_AT_name)
- .uleb128 0x8 ;# (DW_FORM_string)
- .uleb128 0x11 ;# (DW_AT_low_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
- .uleb128 0x12 ;# (DW_AT_high_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
-.initByte 0x0
-.initByte 0x0
-
-.initByte 0x0
-
-//============================================================================
-// Line information. DwarfLib requires this to be present, but it can
-// be empty.
-//============================================================================
-
-.section .debug_line
-_picoMark_LINES=
-
-//============================================================================
-// Debug Information
-//============================================================================
-.section .debug_info
-
-//Fixed header.
-.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN
-_picoMark_DEBUG_INFO_BEGIN=
-.unalignedInitWord 0x2
-.unalignedInitLong _picoMark_ABBREVIATIONS
-.initByte 0x2
-
-// Compile unit information.
-.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit)
-.unalignedInitLong _picoMark_LINES
-.unalignedInitWord _picoMark_FUNCTION_END
-.unalignedInitWord _picoMark_FUNCTION_BEGIN
-// Producer is `picoChip'
-.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00#
-.unalignedInitWord 0xcafe // ASM language
-.ascii 16#0# // Name. DwarfLib expects this to be present.
-
-.uleb128 0x2 ;# (DIE DW_TAG_subprogram)
-
-// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex
-// digit is specified using the format 16#XX#
-.ascii 16#5f# 16#5f# 16#70# 16#61# 16#72# 16#69# 16#74# 16#79# 16#68# 16#69# 16#32# 16#0# // Function name `__parityhi2'
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc
-.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc
-
-.initByte 0x0 // end of compile unit children.
-
-_picoMark_DEBUG_INFO_END=
-
-//============================================================================
-// END OF DWARF
-//============================================================================
-
-.section .endFile
-// End of picoChip ASM file
diff --git a/gcc/config/picochip/libgccExtras/popcounthi2.asm b/gcc/config/picochip/libgccExtras/popcounthi2.asm
deleted file mode 100644
index 2da618c96de..00000000000
--- a/gcc/config/picochip/libgccExtras/popcounthi2.asm
+++ /dev/null
@@ -1,201 +0,0 @@
-// picoChip ASM file
-//.file "popcounthi2.S"
-//
-// Support for 16-bit population count.
-//
-// Copyright (C) 2003, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
-// Contributed by Picochip Ltd.
-// Maintained by Daniel Towner (daniel.towner@picochip.com)
-//
-// This file is free software; you can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option) any
-// later version.
-//
-// This file 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
-// General Public License for more details.
-//
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-//
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-.section .text
-
-// The following code (taken from a newsgroup posting) was compiled, and then
-// hand assembled (a similar version is given in the Hacker's Delight
-// book, chapter 5).
-//
-// int
-// popcount (int value)
-// {
-// value = ((value & 0xAAAA) >> 1) + (value & 0x5555);
-// value = ((value & 0xCCCC) >> 2) + (value & 0x3333);
-// value = ((value & 0xF0F0) >> 4) + (value & 0x0F0F);
-// return ((value & 0xFF00) >> 8) + (value & 0x00FF);
-// }
-//
-// This assembly function is approx. 20x faster than a naive loop
-// implementation of the population count, but about 30% bigger
-// (45 bytes v. 34 bytes).
-
-.align 8
-.global ___popcounthi2
-___popcounthi2:
-
-_picoMark_FUNCTION_BEGIN=
-
-// picoChip Function Prologue : &___popcounthi2 = 0 bytes
-
- AND.0 [LSR R0,1],21845,R0 \ AND.1 R0,21845,R5
- ADD.0 R0,R5,R0
- AND.0 [LSR R0,2],13107,R0 \ AND.1 R0,13107,R5
- ADD.0 R0,R5,R0 \ COPY.1 1807,R2
- AND.0 [LSR R0,4],R2,R0 \ AND.1 R0,3855,R5
- ADD.0 R0,R5,R0
- JR (R12) \ AND.0 R0, 255, R5
-=-> ADD.0 [LSR R0,8],R5,R0
-
-_picoMark_FUNCTION_END=
-// picoChip Function Epilogue : ___popcounthi2
-//============================================================================
-// All DWARF information between this marker, and the END OF DWARF
-// marker should be included in the source file. Search for
-// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and
-// provide the relevent information. Add markers called
-// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the
-// function in question.
-//============================================================================
-
-//============================================================================
-// Frame information.
-//============================================================================
-
-.section .debug_frame
-_picoMark_DebugFrame=
-
-// Common CIE header.
-.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin
-_picoMark_CieBegin=
-.unalignedInitLong 0xffffffff
-.initByte 0x1 // CIE Version
-.ascii 16#0# // CIE Augmentation
-.uleb128 0x1 // CIE Code Alignment Factor
-.sleb128 2 // CIE Data Alignment Factor
-.initByte 0xc // CIE RA Column
-.initByte 0xc // DW_CFA_def_cfa
-.uleb128 0xd
-.uleb128 0x0
-.align 2
-_picoMark_CieEnd=
-
-// FDE
-_picoMark_LSFDE0I900821033007563=
-.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin
-_picoMark_FdeBegin=
-.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location
-.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0 // <-- FUNCTION_STACK_SIZE_GOES_HERE
-.initByte 0x4 // DW_CFA_advance_loc4
-.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0
-.align 2
-_picoMark_FdeEnd=
-
-//============================================================================
-// Abbrevation information.
-//============================================================================
-
-.section .debug_abbrev
-_picoMark_ABBREVIATIONS=
-
-.section .debug_abbrev
- .uleb128 0x1 // (abbrev code)
- .uleb128 0x11 // (TAG: DW_TAG_compile_unit)
- .initByte 0x1 // DW_children_yes
- .uleb128 0x10 // (DW_AT_stmt_list)
- .uleb128 0x6 // (DW_FORM_data4)
- .uleb128 0x12 // (DW_AT_high_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x11 // (DW_AT_low_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x25 // (DW_AT_producer)
- .uleb128 0x8 // (DW_FORM_string)
- .uleb128 0x13 // (DW_AT_language)
- .uleb128 0x5 // (DW_FORM_data2)
- .uleb128 0x3 // (DW_AT_name)
- .uleb128 0x8 // (DW_FORM_string)
-.initByte 0x0
-.initByte 0x0
-
- .uleb128 0x2 ;# (abbrev code)
- .uleb128 0x2e ;# (TAG: DW_TAG_subprogram)
-.initByte 0x0 ;# DW_children_no
- .uleb128 0x3 ;# (DW_AT_name)
- .uleb128 0x8 ;# (DW_FORM_string)
- .uleb128 0x11 ;# (DW_AT_low_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
- .uleb128 0x12 ;# (DW_AT_high_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
-.initByte 0x0
-.initByte 0x0
-
-.initByte 0x0
-
-//============================================================================
-// Line information. DwarfLib requires this to be present, but it can
-// be empty.
-//============================================================================
-
-.section .debug_line
-_picoMark_LINES=
-
-//============================================================================
-// Debug Information
-//============================================================================
-.section .debug_info
-
-//Fixed header.
-.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN
-_picoMark_DEBUG_INFO_BEGIN=
-.unalignedInitWord 0x2
-.unalignedInitLong _picoMark_ABBREVIATIONS
-.initByte 0x2
-
-// Compile unit information.
-.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit)
-.unalignedInitLong _picoMark_LINES
-.unalignedInitWord _picoMark_FUNCTION_END
-.unalignedInitWord _picoMark_FUNCTION_BEGIN
-// Producer is `picoChip'
-.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00#
-.unalignedInitWord 0xcafe // ASM language
-.ascii 16#0# // Name. DwarfLib expects this to be present.
-
-.uleb128 0x2 ;# (DIE DW_TAG_subprogram)
-
-// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex
-// digit is specified using the format 16#XX#
-.ascii 16#5f# 16#5f# 16#70# 16#6f# 16#70# 16#63# 16#6f# 16#75# 16#6e# 16#74# 16#68# 16#69# 16#32# 16#0# // Function name `__popcounthi2'
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc
-.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc
-
-.initByte 0x0 // end of compile unit children.
-
-_picoMark_DEBUG_INFO_END=
-
-//============================================================================
-// END OF DWARF
-//============================================================================
-
-.section .endFile
-// End of picoChip ASM file
diff --git a/gcc/config/picochip/libgccExtras/setjmp.asm b/gcc/config/picochip/libgccExtras/setjmp.asm
deleted file mode 100644
index 247c715f6a9..00000000000
--- a/gcc/config/picochip/libgccExtras/setjmp.asm
+++ /dev/null
@@ -1,182 +0,0 @@
-// picoChip ASM file
-//
-// Support for 32-bit arithmetic shift right.
-//
-// Copyright (C) 2003, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
-// Contributed by Picochip Ltd.
-// Maintained by Hariharan Sandanagobalane (hariharan@picochip.com)
-//
-// This file is free software; you can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option) any
-// later version.
-//
-// This file 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
-// General Public License for more details.
-//
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-//
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-.section .text
-
-.global _setjmp
-_setjmp:
-_picoMark_FUNCTION_BEGIN=
-
-// picoChip Function Prologue : &_setjmp = 0 bytes
-
- STL R[3:2],(R0)0
- STL R[5:4],(R0)1
- STL R[7:6],(R0)2
- STL R[9:8],(R0)3
- STL R[11:10],(R0)4
- STL R[13:12],(R0)5
- STW R14,(R0)12
- STW R1,(R0)13
- JR (R12)
-=-> COPY.0 0,R0
-
-// picoChip Function Epilogue : setjmp
-//============================================================================
-// All DWARF information between this marker, and the END OF DWARF
-// marker should be included in the source file. Search for
-// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and
-// provide the relevent information. Add markers called
-// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the
-// function in question.
-//============================================================================
-
-//============================================================================
-// Frame information.
-//============================================================================
-
-.section .debug_frame
-_picoMark_DebugFrame=
-
-// Common CIE header.
-.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin
-_picoMark_CieBegin=
-.unalignedInitLong 0xffffffff
-.initByte 0x1 // CIE Version
-.ascii 16#0# // CIE Augmentation
-.uleb128 0x1 // CIE Code Alignment Factor
-.sleb128 2 // CIE Data Alignment Factor
-.initByte 0xc // CIE RA Column
-.initByte 0xc // DW_CFA_def_cfa
-.uleb128 0xd
-.uleb128 0x0
-.align 2
-_picoMark_CieEnd=
-
-// FDE
-_picoMark_LSFDE0I900821033007563=
-.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin
-_picoMark_FdeBegin=
-.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location
-.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0 // <-- FUNCTION_STACK_SIZE_GOES_HERE
-.initByte 0x4 // DW_CFA_advance_loc4
-.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0
-.align 2
-_picoMark_FdeEnd=
-
-//============================================================================
-// Abbrevation information.
-//============================================================================
-
-.section .debug_abbrev
-_picoMark_ABBREVIATIONS=
-
-.section .debug_abbrev
- .uleb128 0x1 // (abbrev code)
- .uleb128 0x11 // (TAG: DW_TAG_compile_unit)
- .initByte 0x1 // DW_children_yes
- .uleb128 0x10 // (DW_AT_stmt_list)
- .uleb128 0x6 // (DW_FORM_data4)
- .uleb128 0x12 // (DW_AT_high_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x11 // (DW_AT_low_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x25 // (DW_AT_producer)
- .uleb128 0x8 // (DW_FORM_string)
- .uleb128 0x13 // (DW_AT_language)
- .uleb128 0x5 // (DW_FORM_data2)
- .uleb128 0x3 // (DW_AT_name)
- .uleb128 0x8 // (DW_FORM_string)
-.initByte 0x0
-.initByte 0x0
-
- .uleb128 0x2 ;# (abbrev code)
- .uleb128 0x2e ;# (TAG: DW_TAG_subprogram)
-.initByte 0x0 ;# DW_children_no
- .uleb128 0x3 ;# (DW_AT_name)
- .uleb128 0x8 ;# (DW_FORM_string)
- .uleb128 0x11 ;# (DW_AT_low_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
- .uleb128 0x12 ;# (DW_AT_high_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
-.initByte 0x0
-.initByte 0x0
-
-.initByte 0x0
-
-//============================================================================
-// Line information. DwarfLib requires this to be present, but it can
-// be empty.
-//============================================================================
-
-.section .debug_line
-_picoMark_LINES=
-
-//============================================================================
-// Debug Information
-//============================================================================
-.section .debug_info
-
-//Fixed header.
-.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN
-_picoMark_DEBUG_INFO_BEGIN=
-.unalignedInitWord 0x2
-.unalignedInitLong _picoMark_ABBREVIATIONS
-.initByte 0x2
-
-// Compile unit information.
-.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit)
-.unalignedInitLong _picoMark_LINES
-.unalignedInitWord _picoMark_FUNCTION_END
-.unalignedInitWord _picoMark_FUNCTION_BEGIN
-// Producer is `picoChip'
-.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00#
-.unalignedInitWord 0xcafe // ASM language
-.ascii 16#0# // Name. DwarfLib expects this to be present.
-
-.uleb128 0x2 ;# (DIE DW_TAG_subprogram)
-
-// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex
-// digit is specified using the format 16#XX#
-.ascii 16#73# 16#65# 16#74# 16#6a# 16#6d# 16#70# 16#0# // Function name `setjmp'
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc
-.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc
-
-.initByte 0x0 // end of compile unit children.
-
-_picoMark_DEBUG_INFO_END=
-
-//============================================================================
-// END OF DWARF
-//============================================================================
-
-.section .endFile
-// End of picoChip ASM file
diff --git a/gcc/config/picochip/libgccExtras/subdi3.asm b/gcc/config/picochip/libgccExtras/subdi3.asm
deleted file mode 100644
index d1c833ea824..00000000000
--- a/gcc/config/picochip/libgccExtras/subdi3.asm
+++ /dev/null
@@ -1,191 +0,0 @@
-// picoChip ASM file
-//
-// Support for 64-bit subtraction.
-//
-// Copyright (C) 2003, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
-// Contributed by Picochip Ltd.
-// Maintained by Hariharan Sandanagobalane (hariharan@picochip.com)
-//
-// This file is free software; you can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option) any
-// later version.
-//
-// This file 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
-// General Public License for more details.
-//
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-//
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-.section .text
-
-.align 8
-.global __subdi3
-__subdi3:
-
-_picoMark_FUNCTION_BEGIN=
-// picoChip Function Prologue : &__subdi3 = 4 bytes
-
- // The first operand of sub is completely in registers r[2-5]
- // The second operand of sub is in stack FP(0-3)
- // and result need to be written pointed to by the register r0.
- // All we need to do is to load the appropriate values, sub them
- // appropriately (with sub or subb) and then store the values back.
- ldw (FP)0, r1
- stl r[7:6], (FP)-1
- sub.0 r2, r1, r6
- ldw (FP)1, r1
- subb.0 r3, r1, r7
- ldl (FP)1, r[3:2]
- stl r[7:6], (r0)0
- subb.0 r4, r2, r6
- subb.0 r5, r3, r7
- stl r[7:6], (r0)1
- jr (r12)
-=-> ldl (FP)2, r[7:6]
-
-_picoMark_FUNCTION_END=
-// picoChip Function Epilogue : __subdi3
-
-//============================================================================
-// All DWARF information between this marker, and the END OF DWARF
-// marker should be included in the source file. Search for
-// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and
-// provide the relevent information. Add markers called
-// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the
-// function in question.
-//============================================================================
-
-//============================================================================
-// Frame information.
-//============================================================================
-
-.section .debug_frame
-_picoMark_DebugFrame=
-
-// Common CIE header.
-.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin
-_picoMark_CieBegin=
-.unalignedInitLong 0xffffffff
-.initByte 0x1 // CIE Version
-.ascii 16#0# // CIE Augmentation
-.uleb128 0x1 // CIE Code Alignment Factor
-.sleb128 2 // CIE Data Alignment Factor
-.initByte 0xc // CIE RA Column
-.initByte 0xc // DW_CFA_def_cfa
-.uleb128 0xd
-.uleb128 0x0
-.align 2
-_picoMark_CieEnd=
-
-// FDE
-_picoMark_LSFDE0I900821033007563=
-.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin
-_picoMark_FdeBegin=
-.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location
-.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x4 // <-- FUNCTION_STACK_SIZE_GOES_HERE
-.initByte 0x4 // DW_CFA_advance_loc4
-.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0
-.align 2
-_picoMark_FdeEnd=
-
-//============================================================================
-// Abbrevation information.
-//============================================================================
-
-.section .debug_abbrev
-_picoMark_ABBREVIATIONS=
-
-.section .debug_abbrev
- .uleb128 0x1 // (abbrev code)
- .uleb128 0x11 // (TAG: DW_TAG_compile_unit)
- .initByte 0x1 // DW_children_yes
- .uleb128 0x10 // (DW_AT_stmt_list)
- .uleb128 0x6 // (DW_FORM_data4)
- .uleb128 0x12 // (DW_AT_high_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x11 // (DW_AT_low_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x25 // (DW_AT_producer)
- .uleb128 0x8 // (DW_FORM_string)
- .uleb128 0x13 // (DW_AT_language)
- .uleb128 0x5 // (DW_FORM_data2)
- .uleb128 0x3 // (DW_AT_name)
- .uleb128 0x8 // (DW_FORM_string)
-.initByte 0x0
-.initByte 0x0
-
- .uleb128 0x2 ;# (abbrev code)
- .uleb128 0x2e ;# (TAG: DW_TAG_subprogram)
-.initByte 0x0 ;# DW_children_no
- .uleb128 0x3 ;# (DW_AT_name)
- .uleb128 0x8 ;# (DW_FORM_string)
- .uleb128 0x11 ;# (DW_AT_low_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
- .uleb128 0x12 ;# (DW_AT_high_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
-.initByte 0x0
-.initByte 0x0
-
-.initByte 0x0
-
-//============================================================================
-// Line information. DwarfLib requires this to be present, but it can
-// be empty.
-//============================================================================
-
-.section .debug_line
-_picoMark_LINES=
-
-//============================================================================
-// Debug Information
-//============================================================================
-.section .debug_info
-
-//Fixed header.
-.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN
-_picoMark_DEBUG_INFO_BEGIN=
-.unalignedInitWord 0x2
-.unalignedInitLong _picoMark_ABBREVIATIONS
-.initByte 0x2
-
-// Compile unit information.
-.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit)
-.unalignedInitLong _picoMark_LINES
-.unalignedInitWord _picoMark_FUNCTION_END
-.unalignedInitWord _picoMark_FUNCTION_BEGIN
-// Producer is `picoChip'
-.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00#
-.unalignedInitWord 0xcafe // ASM language
-.ascii 16#0# // Name. DwarfLib expects this to be present.
-
-.uleb128 0x2 ;# (DIE DW_TAG_subprogram)
-
-// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex
-// digit is specified using the format 16#XX#
-.ascii 16#5f# 16#73# 16#75# 16#62# 16#64# 16#69# 16#33# 16#0# // Function name `_subdi3'
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc
-.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc
-
-.initByte 0x0 // end of compile unit children.
-
-_picoMark_DEBUG_INFO_END=
-
-//============================================================================
-// END OF DWARF
-//============================================================================
-.section .endFile
-
diff --git a/gcc/config/picochip/libgccExtras/ucmpsi2.asm b/gcc/config/picochip/libgccExtras/ucmpsi2.asm
deleted file mode 100644
index 10c03cfcd6e..00000000000
--- a/gcc/config/picochip/libgccExtras/ucmpsi2.asm
+++ /dev/null
@@ -1,209 +0,0 @@
-// picoChip ASM file
-//.file "ucmpsi2.c"
-//
-// Support for 32-bit unsigned compare.
-//
-// Copyright (C) 2003, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
-// Contributed by Picochip Ltd.
-// Maintained by Daniel Towner (daniel.towner@picochip.com)
-//
-// This file is free software; you can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option) any
-// later version.
-//
-// This file 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
-// General Public License for more details.
-//
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-//
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-//
-// Compiled from the following, and then hand optimised.
-//
-// int __ucmpsi2 (USItype x, USItype y)
-// {
-//
-// USIunion lx; lx.l = x;
-// USIunion ly; ly.l = y;
-//
-// if (lx.s.high < ly.s.high)
-// return 0;
-// else if (lx.s.high > ly.s.high)
-// return 2;
-// if (lx.s.low < ly.s.low)
-// return 0;
-// else if (lx.s.low > ly.s.low)
-// return 2;
-// return 1;
-// }
-
-.section .text
-
-.align 8
-.global ___ucmpsi2
-___ucmpsi2:
-_picoMark_FUNCTION_BEGIN=
-// picoChip Function Prologue : &___ucmpsi2 = 0 bytes
- SUB.0 R1,R3,r15
-
- BLO _L1
-=-> SUB.0 R3,R1,r15 \ COPY.1 0,R5
-
- BLO _L1
-=-> SUB.0 R0,R2,r15 \ COPY.1 2,R5
-
- BLO _L1
-=-> SUB.0 R2,R0,r15 \ COPY.1 0,R5
-
- BLO _L1
-=-> COPY.0 2,R5
-
- COPY.0 1,R5
-_L1:
- JR (R12)
-=-> COPY.0 R5,R0 // R0 := R5
-
-_picoMark_FUNCTION_END=
-// picoChip Function Epilogue : __ucmpsi2
-//============================================================================
-// All DWARF information between this marker, and the END OF DWARF
-// marker should be included in the source file. Search for
-// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and
-// provide the relevent information. Add markers called
-// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the
-// function in question.
-//============================================================================
-
-//============================================================================
-// Frame information.
-//============================================================================
-
-.section .debug_frame
-_picoMark_DebugFrame=
-
-// Common CIE header.
-.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin
-_picoMark_CieBegin=
-.unalignedInitLong 0xffffffff
-.initByte 0x1 // CIE Version
-.ascii 16#0# // CIE Augmentation
-.uleb128 0x1 // CIE Code Alignment Factor
-.sleb128 2 // CIE Data Alignment Factor
-.initByte 0xc // CIE RA Column
-.initByte 0xc // DW_CFA_def_cfa
-.uleb128 0xd
-.uleb128 0x0
-.align 2
-_picoMark_CieEnd=
-
-// FDE
-_picoMark_LSFDE0I900821033007563=
-.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin
-_picoMark_FdeBegin=
-.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location
-.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0 // <-- FUNCTION_STACK_SIZE_GOES_HERE
-.initByte 0x4 // DW_CFA_advance_loc4
-.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0
-.align 2
-_picoMark_FdeEnd=
-
-//============================================================================
-// Abbrevation information.
-//============================================================================
-
-.section .debug_abbrev
-_picoMark_ABBREVIATIONS=
-
-.section .debug_abbrev
- .uleb128 0x1 // (abbrev code)
- .uleb128 0x11 // (TAG: DW_TAG_compile_unit)
- .initByte 0x1 // DW_children_yes
- .uleb128 0x10 // (DW_AT_stmt_list)
- .uleb128 0x6 // (DW_FORM_data4)
- .uleb128 0x12 // (DW_AT_high_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x11 // (DW_AT_low_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x25 // (DW_AT_producer)
- .uleb128 0x8 // (DW_FORM_string)
- .uleb128 0x13 // (DW_AT_language)
- .uleb128 0x5 // (DW_FORM_data2)
- .uleb128 0x3 // (DW_AT_name)
- .uleb128 0x8 // (DW_FORM_string)
-.initByte 0x0
-.initByte 0x0
-
- .uleb128 0x2 ;# (abbrev code)
- .uleb128 0x2e ;# (TAG: DW_TAG_subprogram)
-.initByte 0x0 ;# DW_children_no
- .uleb128 0x3 ;# (DW_AT_name)
- .uleb128 0x8 ;# (DW_FORM_string)
- .uleb128 0x11 ;# (DW_AT_low_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
- .uleb128 0x12 ;# (DW_AT_high_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
-.initByte 0x0
-.initByte 0x0
-
-.initByte 0x0
-
-//============================================================================
-// Line information. DwarfLib requires this to be present, but it can
-// be empty.
-//============================================================================
-
-.section .debug_line
-_picoMark_LINES=
-
-//============================================================================
-// Debug Information
-//============================================================================
-.section .debug_info
-
-//Fixed header.
-.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN
-_picoMark_DEBUG_INFO_BEGIN=
-.unalignedInitWord 0x2
-.unalignedInitLong _picoMark_ABBREVIATIONS
-.initByte 0x2
-
-// Compile unit information.
-.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit)
-.unalignedInitLong _picoMark_LINES
-.unalignedInitWord _picoMark_FUNCTION_END
-.unalignedInitWord _picoMark_FUNCTION_BEGIN
-// Producer is `picoChip'
-.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00#
-.unalignedInitWord 0xcafe // ASM language
-.ascii 16#0# // Name. DwarfLib expects this to be present.
-
-.uleb128 0x2 ;# (DIE DW_TAG_subprogram)
-
-// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex
-// digit is specified using the format 16#XX#
-.ascii 16#5f# 16#5f# 16#75# 16#63# 16#6d# 16#70# 16#73# 16#69# 16#32# 16#0# // Function name `__ucmpsi2'
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc
-.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc
-
-.initByte 0x0 // end of compile unit children.
-
-_picoMark_DEBUG_INFO_END=
-
-//============================================================================
-// END OF DWARF
-//============================================================================
-.section .endFile
-// End of picoChip ASM file
diff --git a/gcc/config/picochip/libgccExtras/udivmodhi4.asm b/gcc/config/picochip/libgccExtras/udivmodhi4.asm
deleted file mode 100644
index ac16fae39cf..00000000000
--- a/gcc/config/picochip/libgccExtras/udivmodhi4.asm
+++ /dev/null
@@ -1,238 +0,0 @@
-// picoChip ASM file
-//
-// Support for 16-bit unsigned division/modulus.
-//
-// Copyright (C) 2003, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
-// Contributed by Picochip Ltd.
-// Maintained by Daniel Towner (daniel.towner@picochip.com)
-//
-// This file is free software; you can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option) any
-// later version.
-//
-// This file 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
-// General Public License for more details.
-//
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-//
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-.section .text
-
-.global __udivmodhi4
-__udivmodhi4:
-_picoMark_FUNCTION_BEGIN=
-
-// picoChip Function Prologue : &__udivmodhi4 = 6 bytes
-
- // 16-bit unsigned division. The divstep function is only capable of
- // handling 15-bit division (plus a sign to give 16-bits). It is not
- // capable of handling unsigned division directly. Instead, take
- // advantage of the special property that
- // ((divisor / 2) / dividend) * 2 will be almost good enough. The
- // error in the result is only 0 or 1, and this can be easily
- // tested and corrected. A full description of the algorithm can
- // be found in `Hacker's Delight', by Henry Warren, page 146.
-
- // Input:
- // r0 - dividend
- // r1 - divisor
- // Output:
- // r0 - quotient
- // r1 - remainder
-
- // Note that the lr, and original inputs are speculatively saved. They
- // will only be restored if the 15-bit division function is called.
-
- sub.0 r1,0,r15 \ stl r[0:1],(fp)-1
- bge divisorIs15bit
-=-> sub.0 r0,r1,r2 \ stw lr,(fp)-3
-
- // The divisor is >= 2^15.
- bhs quotientIs1
-
- // The dividend < divisor. The quotient is thus 0, and the
- // remainder is the dividend.
- copy.0 r0,r1 \ jr (lr)
-=-> copy.0 0,r0
-
-quotientIs1:
- // The dividend >= divisor. The quotient is thus 1, and the
- // remainder can be computed directly by subtraction (i.e., the
- // result of the comparison already performed to branch here).
- jr (lr) \ copy.0 r2,r1
-=-> copy.0 1,r0
-
-divisorIs15bit:
- // The divisor is < 2^15.
-
- // Divide the original dividend by 2, and call the 15-bit division.
- // Note that the original dividend is stored in r5, which is
- // known to be unused by the called function, so that
- // a memory stall isn't introduced immediately after the
- // function returns, to reload this value from memory.
-
- jl (&__divmod15) \ copy.0 r0,r5 // fn_call &__divmod15
-=-> lsr.0 r0,1,r0
-
- // Compute the new quotient and remainder by multiplying them by 2.
- // The remainder will be 1 out, if the original dividend was odd.
- and.0 r5,1,r5 \ ldl (fp)-1,r[2:3]
- add.0 [lsl r1,1],r5,r1 \ lsl.1 r0,1,r0
-
- // The error in the quotient is 0 or 1. The error can be determined
- // by comparing the remainder to the original divisor. If the
- // remainder is bigger, then an error of 1 has been introduced.
- sub.0 r1,r3,r15 \ ldw (fp)-3,lr
- blo noCompensation
-=-> nop
- add.0 r0,1,r0 \ sub.1 r1,r3,r1
-noCompensation:
- jr (lr)
-
-_picoMark_FUNCTION_END=
-// picoChip Function Epilogue : udivmodhi4
-
-
-//============================================================================
-// All DWARF information between this marker, and the END OF DWARF
-// marker should be included in the source file. Search for
-// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and
-// provide the relevent information. Add markers called
-// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the
-// function in question.
-//============================================================================
-
-//============================================================================
-// Frame information.
-//============================================================================
-
-.section .debug_frame
-_picoMark_DebugFrame=
-
-// Common CIE header.
-.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin
-_picoMark_CieBegin=
-.unalignedInitLong 0xffffffff
-.initByte 0x1 // CIE Version
-.ascii 16#0# // CIE Augmentation
-.uleb128 0x1 // CIE Code Alignment Factor
-.sleb128 2 // CIE Data Alignment Factor
-.initByte 0xc // CIE RA Column
-.initByte 0xc // DW_CFA_def_cfa
-.uleb128 0xd
-.uleb128 0x0
-.align 2
-_picoMark_CieEnd=
-
-// FDE
-_picoMark_LSFDE0I900821033007563=
-.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin
-_picoMark_FdeBegin=
-.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location
-.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x6 // <-- FUNCTION_STACK_SIZE_GOES_HERE
-.initByte 0x4 // DW_CFA_advance_loc4
-.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0
-.align 2
-_picoMark_FdeEnd=
-
-//============================================================================
-// Abbrevation information.
-//============================================================================
-
-.section .debug_abbrev
-_picoMark_ABBREVIATIONS=
-
-.section .debug_abbrev
- .uleb128 0x1 // (abbrev code)
- .uleb128 0x11 // (TAG: DW_TAG_compile_unit)
- .initByte 0x1 // DW_children_yes
- .uleb128 0x10 // (DW_AT_stmt_list)
- .uleb128 0x6 // (DW_FORM_data4)
- .uleb128 0x12 // (DW_AT_high_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x11 // (DW_AT_low_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x25 // (DW_AT_producer)
- .uleb128 0x8 // (DW_FORM_string)
- .uleb128 0x13 // (DW_AT_language)
- .uleb128 0x5 // (DW_FORM_data2)
- .uleb128 0x3 // (DW_AT_name)
- .uleb128 0x8 // (DW_FORM_string)
-.initByte 0x0
-.initByte 0x0
-
- .uleb128 0x2 ;# (abbrev code)
- .uleb128 0x2e ;# (TAG: DW_TAG_subprogram)
-.initByte 0x0 ;# DW_children_no
- .uleb128 0x3 ;# (DW_AT_name)
- .uleb128 0x8 ;# (DW_FORM_string)
- .uleb128 0x11 ;# (DW_AT_low_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
- .uleb128 0x12 ;# (DW_AT_high_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
-.initByte 0x0
-.initByte 0x0
-
-.initByte 0x0
-
-//============================================================================
-// Line information. DwarfLib requires this to be present, but it can
-// be empty.
-//============================================================================
-
-.section .debug_line
-_picoMark_LINES=
-
-//============================================================================
-// Debug Information
-//============================================================================
-.section .debug_info
-
-//Fixed header.
-.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN
-_picoMark_DEBUG_INFO_BEGIN=
-.unalignedInitWord 0x2
-.unalignedInitLong _picoMark_ABBREVIATIONS
-.initByte 0x2
-
-// Compile unit information.
-.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit)
-.unalignedInitLong _picoMark_LINES
-.unalignedInitWord _picoMark_FUNCTION_END
-.unalignedInitWord _picoMark_FUNCTION_BEGIN
-// Producer is `picoChip'
-.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00#
-.unalignedInitWord 0xcafe // ASM language
-.ascii 16#0# // Name. DwarfLib expects this to be present.
-
-.uleb128 0x2 ;# (DIE DW_TAG_subprogram)
-
-// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex
-// digit is specified using the format 16#XX#
-.ascii 16#5f# 16#75# 16#64# 16#69# 16#76# 16#6d# 16#6f# 16#64# 16#68# 16#69# 16#34# 16#0# // Function name `_udivmodhi4'
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc
-.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc
-
-.initByte 0x0 // end of compile unit children.
-
-_picoMark_DEBUG_INFO_END=
-
-//============================================================================
-// END OF DWARF
-//============================================================================
-.section .endFile
-// End of picoChip ASM file
diff --git a/gcc/config/picochip/libgccExtras/udivmodsi4.asm b/gcc/config/picochip/libgccExtras/udivmodsi4.asm
deleted file mode 100644
index 92c2a4983ce..00000000000
--- a/gcc/config/picochip/libgccExtras/udivmodsi4.asm
+++ /dev/null
@@ -1,318 +0,0 @@
-// picoChip ASM file
-//
-// Support for 32-bit unsigned division/modulus.
-//
-// Copyright (C) 2003, 2004, 2005, 2008, 2009 Free Software Foundation, Inc.
-// Contributed by Picochip Ltd.
-// Maintained by Daniel Towner (daniel.towner@picochip.com)
-//
-// This file is free software; you can redistribute it and/or modify it
-// under the terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option) any
-// later version.
-//
-// This file 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
-// General Public License for more details.
-//
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-//
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-.section .text
-
-.align 8
-.global __udivmodsi4
-__udivmodsi4:
-_picoMark_FUNCTION_BEGIN=
-// picoChip Function Prologue : &__udivmodsi4 = 24 bytes
-
- // Schedule the register saves alongside the special cases, so that
- // if the special cases fail, the registers will have already
- // been stored onto the stack.
- SUB.0 R3,R1,r15 \ STL R[13:12],(FP)-1
- BHS skipCommonCase \ STL R[9:8],(FP)-4
-=-> SUB.0 R2,1,r15 \ STL R[11:10],(FP)-3
-
-_L2:
- // Flags set above, and in _L2 caller.
- BNE restOfCode
-=-> SUB.0 R3,0,r15
- BNE restOfCode
-=-> COPY.0 R0,R4 \ COPY.1 R1,R5
- JR (R12) // Return to caller
-=-> COPY.0 0,R6 \ COPY.1 0,R7
- // Never reach here
-
-skipCommonCase:
- SUB.0 R3,R1,r15
- BNE _L3 // (Reversed branch)
-=-> SUB.0 R2,R0,r15 // Must be set in delay slot, so ready by _L9
-
-_L9:
- BLO _L2 // (Reversed branch)
-=-> SUB.0 R2,1,r15
-
-_L3:
- SUB.0 R2,R0,r15
- BEQ _L10 // (Reversed branch)
-=-> SUB.0 R1,R3,r15 // Set flags for branch at _L10
-
-_L4:
- // greater than
- COPY.0 0,R4 \ COPY.1 0,R5 \ JR (R12) // Return to caller
-=-> COPY.0 R0,R6 \ COPY.1 R1,R7
- // Doesn't reach here.
-
-_L10:
- // Flags set in _L10 call delay slot.
- BNE _L4
-=-> COPY.0 1,R4 \ COPY.1 0,R5
- JR (R12) // Return to caller
-=-> COPY.0 0,R6 \ COPY.1 0,R7
-
-restOfCode:
-
-// Prologue
-
- // Register saves scheduled alongside special cases above.
- ADD.0 FP,-20,FP \ STW R14,(FP)-4
-
- // The following can be scheduled together.
- // dividend in R[9:8] (from R[1:0])
- // divisor in R[7:6] (from R[3:2])
- // R14 := clzsi2 (dividend)
- // R0 := clzsi2 (divisor)
- JL (&__clzsi2) \ COPY.0 R0,R8 \ COPY.1 R1,R9
-=-> COPY.0 R2,R6 \ COPY.1 R3,R7
- COPY.0 R0,R14 \ JL (&__clzsi2)
-=-> COPY.0 R6,R0 \ COPY.1 R7,R1
-
- // R14 := R0 - R14
- SUB.0 R0,R14,R14
-
- ADD.0 R14,1,R0 // R0 := R14 + 1 (HI)
-
- // R[11:10] = R[7,6] << R14
- SUB.0 15,R14,r15
- LSL.0 R6,R14,R11 \ BLT setupDivstepLoop
-=-> SUB.0 0,R14,R4 \ COPY.1 0,R10
-
- // Zero shift is a special case. Shifting by zero within a 16-bit
- // source object is fine, but don't execute the OR of the right-shift
- // into the final result.
- LSL.0 R7,R14,R11 \ BEQ setupDivstepLoop
-=-> LSL.0 R6,R14,R10
-
- LSR.0 R6,R4,R4
- OR.0 R11,R4,R11
-
-setupDivstepLoop:
-
- // R[5:4] := R[9:8] (SI)
- COPY.0 R8,R4 \ COPY.1 R9,R5
- COPY.0 0,R6 \ COPY.1 R0,R8
-
- // Store original value of loopCount for use after the loop.
- // The Subtraction is handled in the tail of the loop iteration
- // after this point.
- SUB.0 R4,R10,R0 \ COPY.1 R8,R14
-
- // workingResult in R4,5,6
- // temps in r0,1,2 and r7
- // alignedDivisor in R10,11
- // loopCount in r8
- // r3, r9 scratch, used for renaming.
-
-loopStart:
- // R0 := R4 - zeroExtend (R10) - only need 33-bits (i.e., 48-bits)
- SUBB.0 R5,R11,R1 \ LSR.1 R0,15,R3
- SUBB.0 R6,0,R2 \ LSR.1 R1,15,R6
-
- // if (carry) goto shiftOnly
- SUB.0 R8,1,R8 \ BNE shiftOnly
-=-> LSR.0 R4,15,R7 \ LSL.1 R1,1,R9
-
- OR.0 [LSL R0,1],1,R4 \ BNE loopStart
-=-> SUB.0 R4,R10,R0 \ OR.1 R9,R3,R5
-
- BRA loopEnd
-
-shiftOnly:
-
- OR.0 [LSL R5,1],R7,R5 \ BNE loopStart \ LSR.1 R5,15,R6
-=-> SUB.0 [LSL R4,1],R10,R0 \LSL.1 R4,1,R4
-
-// End of loop
-loopEnd:
-
- // Schedule the computation of the upper word after shifting
- // alongside the decision over whether to branch, and the register
- // restores.
- // R10 is filled with a useful constant.
- SUB.0 15,r14,r15 \ LDL (FP)4,R[13:12]
- SUB.1 0,R14,R1 // Don't set flags!
- LSL.0 R6,R1,R3 \ LDL (FP)-4,R[9:8]
-
- BLT remainderHasMoreThan16Bits \ LSR.0 R5,R14,R7 \ COPY.1 -1,R10
-=-> LSL.0 R5,R1,R2 \ OR.1 R7,R3,R3
-
- LSR.0 R4,R14,R3 \ COPY.1 R3,R7
- BRA epilogue \ LSR.0 -1,R1,R0 \ COPY.1 0,R5
-=-> OR.0 R3,R2,R6 \ AND.1 R0,R4,R4
-
-remainderHasMoreThan16Bits:
-
- LSL.0 R10,R14,R1 \ COPY.1 R3,R6
- XOR.0 R10,R1,R1 \ COPY.1 0,R7
- AND.0 R1,R5,R5
-
-epilogue:
-
- JR (R12) \ LDW (FP)-4,R14
-=-> LDL (FP)-3,R[11:10]
-
-_picoMark_FUNCTION_END=
-
-// picoChip Function Epilogue : udivmodsi4
-
-//============================================================================
-// All DWARF information between this marker, and the END OF DWARF
-// marker should be included in the source file. Search for
-// FUNCTION_STACK_SIZE_GOES_HERE and FUNCTION NAME GOES HERE, and
-// provide the relevent information. Add markers called
-// _picoMark_FUNCTION_BEGIN and _picoMark_FUNCTION_END around the
-// function in question.
-//============================================================================
-
-//============================================================================
-// Frame information.
-//============================================================================
-
-.section .debug_frame
-_picoMark_DebugFrame=
-
-// Common CIE header.
-.unalignedInitLong _picoMark_CieEnd-_picoMark_CieBegin
-_picoMark_CieBegin=
-.unalignedInitLong 0xffffffff
-.initByte 0x1 // CIE Version
-.ascii 16#0# // CIE Augmentation
-.uleb128 0x1 // CIE Code Alignment Factor
-.sleb128 2 // CIE Data Alignment Factor
-.initByte 0xc // CIE RA Column
-.initByte 0xc // DW_CFA_def_cfa
-.uleb128 0xd
-.uleb128 0x0
-.align 2
-_picoMark_CieEnd=
-
-// FDE
-_picoMark_LSFDE0I900821033007563=
-.unalignedInitLong _picoMark_FdeEnd-_picoMark_FdeBegin
-_picoMark_FdeBegin=
-.unalignedInitLong _picoMark_DebugFrame // FDE CIE offset
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // FDE initial location
-.unalignedInitWord _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x18 // <-- FUNCTION_STACK_SIZE_GOES_HERE
-.initByte 0x4 // DW_CFA_advance_loc4
-.unalignedInitLong _picoMark_FUNCTION_END-_picoMark_FUNCTION_BEGIN
-.initByte 0xe // DW_CFA_def_cfa_offset
-.uleb128 0x0
-.align 2
-_picoMark_FdeEnd=
-
-//============================================================================
-// Abbrevation information.
-//============================================================================
-
-.section .debug_abbrev
-_picoMark_ABBREVIATIONS=
-
-.section .debug_abbrev
- .uleb128 0x1 // (abbrev code)
- .uleb128 0x11 // (TAG: DW_TAG_compile_unit)
- .initByte 0x1 // DW_children_yes
- .uleb128 0x10 // (DW_AT_stmt_list)
- .uleb128 0x6 // (DW_FORM_data4)
- .uleb128 0x12 // (DW_AT_high_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x11 // (DW_AT_low_pc)
- .uleb128 0x1 // (DW_FORM_addr)
- .uleb128 0x25 // (DW_AT_producer)
- .uleb128 0x8 // (DW_FORM_string)
- .uleb128 0x13 // (DW_AT_language)
- .uleb128 0x5 // (DW_FORM_data2)
- .uleb128 0x3 // (DW_AT_name)
- .uleb128 0x8 // (DW_FORM_string)
-.initByte 0x0
-.initByte 0x0
-
- .uleb128 0x2 ;# (abbrev code)
- .uleb128 0x2e ;# (TAG: DW_TAG_subprogram)
-.initByte 0x0 ;# DW_children_no
- .uleb128 0x3 ;# (DW_AT_name)
- .uleb128 0x8 ;# (DW_FORM_string)
- .uleb128 0x11 ;# (DW_AT_low_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
- .uleb128 0x12 ;# (DW_AT_high_pc)
- .uleb128 0x1 ;# (DW_FORM_addr)
-.initByte 0x0
-.initByte 0x0
-
-.initByte 0x0
-
-//============================================================================
-// Line information. DwarfLib requires this to be present, but it can
-// be empty.
-//============================================================================
-
-.section .debug_line
-_picoMark_LINES=
-
-//============================================================================
-// Debug Information
-//============================================================================
-.section .debug_info
-
-//Fixed header.
-.unalignedInitLong _picoMark_DEBUG_INFO_END-_picoMark_DEBUG_INFO_BEGIN
-_picoMark_DEBUG_INFO_BEGIN=
-.unalignedInitWord 0x2
-.unalignedInitLong _picoMark_ABBREVIATIONS
-.initByte 0x2
-
-// Compile unit information.
-.uleb128 0x1 // (DIE 0xb) DW_TAG_compile_unit)
-.unalignedInitLong _picoMark_LINES
-.unalignedInitWord _picoMark_FUNCTION_END
-.unalignedInitWord _picoMark_FUNCTION_BEGIN
-// Producer is `picoChip'
-.ascii 16#70# 16#69# 16#63# 16#6f# 16#43# 16#68# 16#69# 16#70# 16#00#
-.unalignedInitWord 0xcafe // ASM language
-.ascii 16#0# // Name. DwarfLib expects this to be present.
-
-.uleb128 0x2 ;# (DIE DW_TAG_subprogram)
-
-// FUNCTION NAME GOES HERE. Use `echo name | od -t x1' to get the hex. Each hex
-// digit is specified using the format 16#XX#
-.ascii 16#5f# 16#75# 16#64# 16#69# 16#76# 16#6d# 16#6f# 16#64# 16#73# 16#69# 16#34# 16#0# // Function name `_udivmodsi4'
-.unalignedInitWord _picoMark_FUNCTION_BEGIN // DW_AT_low_pc
-.unalignedInitWord _picoMark_FUNCTION_END // DW_AT_high_pc
-
-.initByte 0x0 // end of compile unit children.
-
-_picoMark_DEBUG_INFO_END=
-
-//============================================================================
-// END OF DWARF
-//============================================================================
-.section .endFile
-// End of picoChip ASM file
diff --git a/gcc/config/picochip/t-picochip b/gcc/config/picochip/t-picochip
index 0f3fe8c3d81..269a0551407 100644
--- a/gcc/config/picochip/t-picochip
+++ b/gcc/config/picochip/t-picochip
@@ -16,37 +16,6 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-# Compile the extra library functions.
-
-LIB2FUNCS_EXTRA = \
- $(srcdir)/config/picochip/libgccExtras/ashrsi3.asm \
- $(srcdir)/config/picochip/libgccExtras/ashlsi3.asm \
- $(srcdir)/config/picochip/libgccExtras/divmodhi4.asm \
- $(srcdir)/config/picochip/libgccExtras/udivmodhi4.asm \
- $(srcdir)/config/picochip/libgccExtras/divmodsi4.asm \
- $(srcdir)/config/picochip/libgccExtras/udivmodsi4.asm \
- $(srcdir)/config/picochip/libgccExtras/divmod15.asm \
- $(srcdir)/config/picochip/libgccExtras/ucmpsi2.asm \
- $(srcdir)/config/picochip/libgccExtras/cmpsi2.asm \
- $(srcdir)/config/picochip/libgccExtras/clzsi2.asm \
- $(srcdir)/config/picochip/libgccExtras/adddi3.asm \
- $(srcdir)/config/picochip/libgccExtras/subdi3.asm \
- $(srcdir)/config/picochip/libgccExtras/lshrsi3.asm \
- $(srcdir)/config/picochip/libgccExtras/parityhi2.asm \
- $(srcdir)/config/picochip/libgccExtras/popcounthi2.asm
-
-# Turn off ranlib on target libraries.
-RANLIB_FOR_TARGET = cat
-
-# Special libgcc setup. Make single/double floating point the same,
-# and use our own include files.
-TARGET_LIBGCC2_CFLAGS = -DDF=SF -I../../includes/
-
-# Switch off all debugging for the embedded libraries.
-# (embedded processors need small libraries by default).
-# NOTE: If the debug level is increased, turn off instruction scheduling.
-LIBGCC2_DEBUG_CFLAGS = -g0
-
# Build all combinations of library for different multiply units, and
# presence/absence of byte access.
MULTILIB_OPTIONS = mmul-type=none/mmul-type=mac/mmul-type=mul mno-byte-access/mbyte-access
diff --git a/gcc/config/rs6000/crtresfpr.asm b/gcc/config/rs6000/crtresfpr.asm
deleted file mode 100644
index 9fb228cf458..00000000000
--- a/gcc/config/rs6000/crtresfpr.asm
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Special support for eabi and SVR4
- *
- * Copyright (C) 1995, 1996, 1998, 2000, 2001, 2008, 2009
- * Free Software Foundation, Inc.
- * Written By Michael Meissner
- * 64-bit support written by David Edelsohn
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
-/* Do any initializations needed for the eabi environment */
-
- .section ".text"
- #include "ppc-asm.h"
-
-/* On PowerPC64 Linux, these functions are provided by the linker. */
-#ifndef __powerpc64__
-
-/* Routines for restoring floating point registers, called by the compiler. */
-/* Called with r11 pointing to the stack header word of the caller of the */
-/* function, just beyond the end of the floating point save area. */
-
-CFI_STARTPROC
-HIDDEN_FUNC(_restfpr_14) lfd 14,-144(11) /* restore fp registers */
-HIDDEN_FUNC(_restfpr_15) lfd 15,-136(11)
-HIDDEN_FUNC(_restfpr_16) lfd 16,-128(11)
-HIDDEN_FUNC(_restfpr_17) lfd 17,-120(11)
-HIDDEN_FUNC(_restfpr_18) lfd 18,-112(11)
-HIDDEN_FUNC(_restfpr_19) lfd 19,-104(11)
-HIDDEN_FUNC(_restfpr_20) lfd 20,-96(11)
-HIDDEN_FUNC(_restfpr_21) lfd 21,-88(11)
-HIDDEN_FUNC(_restfpr_22) lfd 22,-80(11)
-HIDDEN_FUNC(_restfpr_23) lfd 23,-72(11)
-HIDDEN_FUNC(_restfpr_24) lfd 24,-64(11)
-HIDDEN_FUNC(_restfpr_25) lfd 25,-56(11)
-HIDDEN_FUNC(_restfpr_26) lfd 26,-48(11)
-HIDDEN_FUNC(_restfpr_27) lfd 27,-40(11)
-HIDDEN_FUNC(_restfpr_28) lfd 28,-32(11)
-HIDDEN_FUNC(_restfpr_29) lfd 29,-24(11)
-HIDDEN_FUNC(_restfpr_30) lfd 30,-16(11)
-HIDDEN_FUNC(_restfpr_31) lfd 31,-8(11)
- blr
-FUNC_END(_restfpr_31)
-FUNC_END(_restfpr_30)
-FUNC_END(_restfpr_29)
-FUNC_END(_restfpr_28)
-FUNC_END(_restfpr_27)
-FUNC_END(_restfpr_26)
-FUNC_END(_restfpr_25)
-FUNC_END(_restfpr_24)
-FUNC_END(_restfpr_23)
-FUNC_END(_restfpr_22)
-FUNC_END(_restfpr_21)
-FUNC_END(_restfpr_20)
-FUNC_END(_restfpr_19)
-FUNC_END(_restfpr_18)
-FUNC_END(_restfpr_17)
-FUNC_END(_restfpr_16)
-FUNC_END(_restfpr_15)
-FUNC_END(_restfpr_14)
-CFI_ENDPROC
-
-#endif
diff --git a/gcc/config/rs6000/crtresgpr.asm b/gcc/config/rs6000/crtresgpr.asm
deleted file mode 100644
index 9f9cec9f9ca..00000000000
--- a/gcc/config/rs6000/crtresgpr.asm
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Special support for eabi and SVR4
- *
- * Copyright (C) 1995, 1996, 1998, 2000, 2001, 2008, 2009
- * Free Software Foundation, Inc.
- * Written By Michael Meissner
- * 64-bit support written by David Edelsohn
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
-/* Do any initializations needed for the eabi environment */
-
- .section ".text"
- #include "ppc-asm.h"
-
-/* On PowerPC64 Linux, these functions are provided by the linker. */
-#ifndef __powerpc64__
-
-/* Routines for restoring integer registers, called by the compiler. */
-/* Called with r11 pointing to the stack header word of the caller of the */
-/* function, just beyond the end of the integer restore area. */
-
-CFI_STARTPROC
-HIDDEN_FUNC(_restgpr_14) lwz 14,-72(11) /* restore gp registers */
-HIDDEN_FUNC(_restgpr_15) lwz 15,-68(11)
-HIDDEN_FUNC(_restgpr_16) lwz 16,-64(11)
-HIDDEN_FUNC(_restgpr_17) lwz 17,-60(11)
-HIDDEN_FUNC(_restgpr_18) lwz 18,-56(11)
-HIDDEN_FUNC(_restgpr_19) lwz 19,-52(11)
-HIDDEN_FUNC(_restgpr_20) lwz 20,-48(11)
-HIDDEN_FUNC(_restgpr_21) lwz 21,-44(11)
-HIDDEN_FUNC(_restgpr_22) lwz 22,-40(11)
-HIDDEN_FUNC(_restgpr_23) lwz 23,-36(11)
-HIDDEN_FUNC(_restgpr_24) lwz 24,-32(11)
-HIDDEN_FUNC(_restgpr_25) lwz 25,-28(11)
-HIDDEN_FUNC(_restgpr_26) lwz 26,-24(11)
-HIDDEN_FUNC(_restgpr_27) lwz 27,-20(11)
-HIDDEN_FUNC(_restgpr_28) lwz 28,-16(11)
-HIDDEN_FUNC(_restgpr_29) lwz 29,-12(11)
-HIDDEN_FUNC(_restgpr_30) lwz 30,-8(11)
-HIDDEN_FUNC(_restgpr_31) lwz 31,-4(11)
- blr
-FUNC_END(_restgpr_31)
-FUNC_END(_restgpr_30)
-FUNC_END(_restgpr_29)
-FUNC_END(_restgpr_28)
-FUNC_END(_restgpr_27)
-FUNC_END(_restgpr_26)
-FUNC_END(_restgpr_25)
-FUNC_END(_restgpr_24)
-FUNC_END(_restgpr_23)
-FUNC_END(_restgpr_22)
-FUNC_END(_restgpr_21)
-FUNC_END(_restgpr_20)
-FUNC_END(_restgpr_19)
-FUNC_END(_restgpr_18)
-FUNC_END(_restgpr_17)
-FUNC_END(_restgpr_16)
-FUNC_END(_restgpr_15)
-FUNC_END(_restgpr_14)
-CFI_ENDPROC
-
-#endif
diff --git a/gcc/config/rs6000/crtresxfpr.asm b/gcc/config/rs6000/crtresxfpr.asm
deleted file mode 100644
index 633f2db61f0..00000000000
--- a/gcc/config/rs6000/crtresxfpr.asm
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Special support for eabi and SVR4
- *
- * Copyright (C) 1995, 1996, 1998, 2000, 2001, 2008, 2009
- * Free Software Foundation, Inc.
- * Written By Michael Meissner
- * 64-bit support written by David Edelsohn
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
-/* Do any initializations needed for the eabi environment */
-
- .section ".text"
- #include "ppc-asm.h"
-
-/* On PowerPC64 Linux, these functions are provided by the linker. */
-#ifndef __powerpc64__
-
-/* Routines for restoring floating point registers, called by the compiler. */
-/* Called with r11 pointing to the stack header word of the caller of the */
-/* function, just beyond the end of the floating point save area. */
-/* In addition to restoring the fp registers, it will return to the caller's */
-/* caller */
-
-CFI_STARTPROC
-CFI_DEF_CFA_REGISTER (11)
-CFI_OFFSET (65, 4)
-CFI_OFFSET (46, -144)
-CFI_OFFSET (47, -136)
-CFI_OFFSET (48, -128)
-CFI_OFFSET (49, -120)
-CFI_OFFSET (50, -112)
-CFI_OFFSET (51, -104)
-CFI_OFFSET (52, -96)
-CFI_OFFSET (53, -88)
-CFI_OFFSET (54, -80)
-CFI_OFFSET (55, -72)
-CFI_OFFSET (56, -64)
-CFI_OFFSET (57, -56)
-CFI_OFFSET (58, -48)
-CFI_OFFSET (59, -40)
-CFI_OFFSET (60, -32)
-CFI_OFFSET (61, -24)
-CFI_OFFSET (62, -16)
-CFI_OFFSET (63, -8)
-HIDDEN_FUNC(_restfpr_14_x) lfd 14,-144(11) /* restore fp registers */
-CFI_RESTORE (46)
-HIDDEN_FUNC(_restfpr_15_x) lfd 15,-136(11)
-CFI_RESTORE (47)
-HIDDEN_FUNC(_restfpr_16_x) lfd 16,-128(11)
-CFI_RESTORE (48)
-HIDDEN_FUNC(_restfpr_17_x) lfd 17,-120(11)
-CFI_RESTORE (49)
-HIDDEN_FUNC(_restfpr_18_x) lfd 18,-112(11)
-CFI_RESTORE (50)
-HIDDEN_FUNC(_restfpr_19_x) lfd 19,-104(11)
-CFI_RESTORE (51)
-HIDDEN_FUNC(_restfpr_20_x) lfd 20,-96(11)
-CFI_RESTORE (52)
-HIDDEN_FUNC(_restfpr_21_x) lfd 21,-88(11)
-CFI_RESTORE (53)
-HIDDEN_FUNC(_restfpr_22_x) lfd 22,-80(11)
-CFI_RESTORE (54)
-HIDDEN_FUNC(_restfpr_23_x) lfd 23,-72(11)
-CFI_RESTORE (55)
-HIDDEN_FUNC(_restfpr_24_x) lfd 24,-64(11)
-CFI_RESTORE (56)
-HIDDEN_FUNC(_restfpr_25_x) lfd 25,-56(11)
-CFI_RESTORE (57)
-HIDDEN_FUNC(_restfpr_26_x) lfd 26,-48(11)
-CFI_RESTORE (58)
-HIDDEN_FUNC(_restfpr_27_x) lfd 27,-40(11)
-CFI_RESTORE (59)
-HIDDEN_FUNC(_restfpr_28_x) lfd 28,-32(11)
-CFI_RESTORE (60)
-HIDDEN_FUNC(_restfpr_29_x) lfd 29,-24(11)
-CFI_RESTORE (61)
-HIDDEN_FUNC(_restfpr_30_x) lfd 30,-16(11)
-CFI_RESTORE (62)
-HIDDEN_FUNC(_restfpr_31_x) lwz 0,4(11)
- lfd 31,-8(11)
-CFI_RESTORE (63)
- mtlr 0
-CFI_RESTORE (65)
- mr 1,11
-CFI_DEF_CFA_REGISTER (1)
- blr
-FUNC_END(_restfpr_31_x)
-FUNC_END(_restfpr_30_x)
-FUNC_END(_restfpr_29_x)
-FUNC_END(_restfpr_28_x)
-FUNC_END(_restfpr_27_x)
-FUNC_END(_restfpr_26_x)
-FUNC_END(_restfpr_25_x)
-FUNC_END(_restfpr_24_x)
-FUNC_END(_restfpr_23_x)
-FUNC_END(_restfpr_22_x)
-FUNC_END(_restfpr_21_x)
-FUNC_END(_restfpr_20_x)
-FUNC_END(_restfpr_19_x)
-FUNC_END(_restfpr_18_x)
-FUNC_END(_restfpr_17_x)
-FUNC_END(_restfpr_16_x)
-FUNC_END(_restfpr_15_x)
-FUNC_END(_restfpr_14_x)
-CFI_ENDPROC
-
-#endif
diff --git a/gcc/config/rs6000/crtresxgpr.asm b/gcc/config/rs6000/crtresxgpr.asm
deleted file mode 100644
index 451b2b69d1e..00000000000
--- a/gcc/config/rs6000/crtresxgpr.asm
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Special support for eabi and SVR4
- *
- * Copyright (C) 1995, 1996, 1998, 2000, 2001, 2008, 2009
- * Free Software Foundation, Inc.
- * Written By Michael Meissner
- * 64-bit support written by David Edelsohn
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
-/* Do any initializations needed for the eabi environment */
-
- .section ".text"
- #include "ppc-asm.h"
-
-/* On PowerPC64 Linux, these functions are provided by the linker. */
-#ifndef __powerpc64__
-
-/* Routines for restoring integer registers, called by the compiler. */
-/* Called with r11 pointing to the stack header word of the caller of the */
-/* function, just beyond the end of the integer restore area. */
-
-CFI_STARTPROC
-CFI_DEF_CFA_REGISTER (11)
-CFI_OFFSET (65, 4)
-CFI_OFFSET (14, -72)
-CFI_OFFSET (15, -68)
-CFI_OFFSET (16, -64)
-CFI_OFFSET (17, -60)
-CFI_OFFSET (18, -56)
-CFI_OFFSET (19, -52)
-CFI_OFFSET (20, -48)
-CFI_OFFSET (21, -44)
-CFI_OFFSET (22, -40)
-CFI_OFFSET (23, -36)
-CFI_OFFSET (24, -32)
-CFI_OFFSET (25, -28)
-CFI_OFFSET (26, -24)
-CFI_OFFSET (27, -20)
-CFI_OFFSET (28, -16)
-CFI_OFFSET (29, -12)
-CFI_OFFSET (30, -8)
-CFI_OFFSET (31, -4)
-HIDDEN_FUNC(_restgpr_14_x) lwz 14,-72(11) /* restore gp registers */
-CFI_RESTORE (14)
-HIDDEN_FUNC(_restgpr_15_x) lwz 15,-68(11)
-CFI_RESTORE (15)
-HIDDEN_FUNC(_restgpr_16_x) lwz 16,-64(11)
-CFI_RESTORE (16)
-HIDDEN_FUNC(_restgpr_17_x) lwz 17,-60(11)
-CFI_RESTORE (17)
-HIDDEN_FUNC(_restgpr_18_x) lwz 18,-56(11)
-CFI_RESTORE (18)
-HIDDEN_FUNC(_restgpr_19_x) lwz 19,-52(11)
-CFI_RESTORE (19)
-HIDDEN_FUNC(_restgpr_20_x) lwz 20,-48(11)
-CFI_RESTORE (20)
-HIDDEN_FUNC(_restgpr_21_x) lwz 21,-44(11)
-CFI_RESTORE (21)
-HIDDEN_FUNC(_restgpr_22_x) lwz 22,-40(11)
-CFI_RESTORE (22)
-HIDDEN_FUNC(_restgpr_23_x) lwz 23,-36(11)
-CFI_RESTORE (23)
-HIDDEN_FUNC(_restgpr_24_x) lwz 24,-32(11)
-CFI_RESTORE (24)
-HIDDEN_FUNC(_restgpr_25_x) lwz 25,-28(11)
-CFI_RESTORE (25)
-HIDDEN_FUNC(_restgpr_26_x) lwz 26,-24(11)
-CFI_RESTORE (26)
-HIDDEN_FUNC(_restgpr_27_x) lwz 27,-20(11)
-CFI_RESTORE (27)
-HIDDEN_FUNC(_restgpr_28_x) lwz 28,-16(11)
-CFI_RESTORE (28)
-HIDDEN_FUNC(_restgpr_29_x) lwz 29,-12(11)
-CFI_RESTORE (29)
-HIDDEN_FUNC(_restgpr_30_x) lwz 30,-8(11)
-CFI_RESTORE (30)
-HIDDEN_FUNC(_restgpr_31_x) lwz 0,4(11)
- lwz 31,-4(11)
-CFI_RESTORE (31)
- mtlr 0
-CFI_RESTORE (65)
- mr 1,11
-CFI_DEF_CFA_REGISTER (1)
- blr
-FUNC_END(_restgpr_31_x)
-FUNC_END(_restgpr_30_x)
-FUNC_END(_restgpr_29_x)
-FUNC_END(_restgpr_28_x)
-FUNC_END(_restgpr_27_x)
-FUNC_END(_restgpr_26_x)
-FUNC_END(_restgpr_25_x)
-FUNC_END(_restgpr_24_x)
-FUNC_END(_restgpr_23_x)
-FUNC_END(_restgpr_22_x)
-FUNC_END(_restgpr_21_x)
-FUNC_END(_restgpr_20_x)
-FUNC_END(_restgpr_19_x)
-FUNC_END(_restgpr_18_x)
-FUNC_END(_restgpr_17_x)
-FUNC_END(_restgpr_16_x)
-FUNC_END(_restgpr_15_x)
-FUNC_END(_restgpr_14_x)
-CFI_ENDPROC
-
-#endif
diff --git a/gcc/config/rs6000/crtsavfpr.asm b/gcc/config/rs6000/crtsavfpr.asm
deleted file mode 100644
index 3cdb25033ca..00000000000
--- a/gcc/config/rs6000/crtsavfpr.asm
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Special support for eabi and SVR4
- *
- * Copyright (C) 1995, 1996, 1998, 2000, 2001, 2008, 2009
- * Free Software Foundation, Inc.
- * Written By Michael Meissner
- * 64-bit support written by David Edelsohn
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
-/* Do any initializations needed for the eabi environment */
-
- .section ".text"
- #include "ppc-asm.h"
-
-/* On PowerPC64 Linux, these functions are provided by the linker. */
-#ifndef __powerpc64__
-
-/* Routines for saving floating point registers, called by the compiler. */
-/* Called with r11 pointing to the stack header word of the caller of the */
-/* function, just beyond the end of the floating point save area. */
-
-CFI_STARTPROC
-HIDDEN_FUNC(_savefpr_14) stfd 14,-144(11) /* save fp registers */
-HIDDEN_FUNC(_savefpr_15) stfd 15,-136(11)
-HIDDEN_FUNC(_savefpr_16) stfd 16,-128(11)
-HIDDEN_FUNC(_savefpr_17) stfd 17,-120(11)
-HIDDEN_FUNC(_savefpr_18) stfd 18,-112(11)
-HIDDEN_FUNC(_savefpr_19) stfd 19,-104(11)
-HIDDEN_FUNC(_savefpr_20) stfd 20,-96(11)
-HIDDEN_FUNC(_savefpr_21) stfd 21,-88(11)
-HIDDEN_FUNC(_savefpr_22) stfd 22,-80(11)
-HIDDEN_FUNC(_savefpr_23) stfd 23,-72(11)
-HIDDEN_FUNC(_savefpr_24) stfd 24,-64(11)
-HIDDEN_FUNC(_savefpr_25) stfd 25,-56(11)
-HIDDEN_FUNC(_savefpr_26) stfd 26,-48(11)
-HIDDEN_FUNC(_savefpr_27) stfd 27,-40(11)
-HIDDEN_FUNC(_savefpr_28) stfd 28,-32(11)
-HIDDEN_FUNC(_savefpr_29) stfd 29,-24(11)
-HIDDEN_FUNC(_savefpr_30) stfd 30,-16(11)
-HIDDEN_FUNC(_savefpr_31) stfd 31,-8(11)
- blr
-FUNC_END(_savefpr_31)
-FUNC_END(_savefpr_30)
-FUNC_END(_savefpr_29)
-FUNC_END(_savefpr_28)
-FUNC_END(_savefpr_27)
-FUNC_END(_savefpr_26)
-FUNC_END(_savefpr_25)
-FUNC_END(_savefpr_24)
-FUNC_END(_savefpr_23)
-FUNC_END(_savefpr_22)
-FUNC_END(_savefpr_21)
-FUNC_END(_savefpr_20)
-FUNC_END(_savefpr_19)
-FUNC_END(_savefpr_18)
-FUNC_END(_savefpr_17)
-FUNC_END(_savefpr_16)
-FUNC_END(_savefpr_15)
-FUNC_END(_savefpr_14)
-CFI_ENDPROC
-
-#endif
diff --git a/gcc/config/rs6000/crtsavgpr.asm b/gcc/config/rs6000/crtsavgpr.asm
deleted file mode 100644
index 6d473963bad..00000000000
--- a/gcc/config/rs6000/crtsavgpr.asm
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Special support for eabi and SVR4
- *
- * Copyright (C) 1995, 1996, 1998, 2000, 2001, 2008, 2009
- * Free Software Foundation, Inc.
- * Written By Michael Meissner
- * 64-bit support written by David Edelsohn
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
-/* Do any initializations needed for the eabi environment */
-
- .section ".text"
- #include "ppc-asm.h"
-
-/* On PowerPC64 Linux, these functions are provided by the linker. */
-#ifndef __powerpc64__
-
-/* Routines for saving integer registers, called by the compiler. */
-/* Called with r11 pointing to the stack header word of the caller of the */
-/* function, just beyond the end of the integer save area. */
-
-CFI_STARTPROC
-HIDDEN_FUNC(_savegpr_14) stw 14,-72(11) /* save gp registers */
-HIDDEN_FUNC(_savegpr_15) stw 15,-68(11)
-HIDDEN_FUNC(_savegpr_16) stw 16,-64(11)
-HIDDEN_FUNC(_savegpr_17) stw 17,-60(11)
-HIDDEN_FUNC(_savegpr_18) stw 18,-56(11)
-HIDDEN_FUNC(_savegpr_19) stw 19,-52(11)
-HIDDEN_FUNC(_savegpr_20) stw 20,-48(11)
-HIDDEN_FUNC(_savegpr_21) stw 21,-44(11)
-HIDDEN_FUNC(_savegpr_22) stw 22,-40(11)
-HIDDEN_FUNC(_savegpr_23) stw 23,-36(11)
-HIDDEN_FUNC(_savegpr_24) stw 24,-32(11)
-HIDDEN_FUNC(_savegpr_25) stw 25,-28(11)
-HIDDEN_FUNC(_savegpr_26) stw 26,-24(11)
-HIDDEN_FUNC(_savegpr_27) stw 27,-20(11)
-HIDDEN_FUNC(_savegpr_28) stw 28,-16(11)
-HIDDEN_FUNC(_savegpr_29) stw 29,-12(11)
-HIDDEN_FUNC(_savegpr_30) stw 30,-8(11)
-HIDDEN_FUNC(_savegpr_31) stw 31,-4(11)
- blr
-FUNC_END(_savegpr_31)
-FUNC_END(_savegpr_30)
-FUNC_END(_savegpr_29)
-FUNC_END(_savegpr_28)
-FUNC_END(_savegpr_27)
-FUNC_END(_savegpr_26)
-FUNC_END(_savegpr_25)
-FUNC_END(_savegpr_24)
-FUNC_END(_savegpr_23)
-FUNC_END(_savegpr_22)
-FUNC_END(_savegpr_21)
-FUNC_END(_savegpr_20)
-FUNC_END(_savegpr_19)
-FUNC_END(_savegpr_18)
-FUNC_END(_savegpr_17)
-FUNC_END(_savegpr_16)
-FUNC_END(_savegpr_15)
-FUNC_END(_savegpr_14)
-CFI_ENDPROC
-
-#endif
diff --git a/gcc/config/rs6000/darwin-asm.h b/gcc/config/rs6000/darwin-asm.h
deleted file mode 100644
index 837b7a33ef8..00000000000
--- a/gcc/config/rs6000/darwin-asm.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Macro definitions to used to support 32/64-bit code in Darwin's
- * assembly files.
- *
- * Copyright (C) 2004, 2009 Free Software Foundation, Inc.
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
-/* These are donated from /usr/include/architecture/ppc . */
-
-#if defined(__ppc64__)
-#define MODE_CHOICE(x, y) y
-#else
-#define MODE_CHOICE(x, y) x
-#endif
-
-#define cmpg MODE_CHOICE(cmpw, cmpd)
-#define lg MODE_CHOICE(lwz, ld)
-#define stg MODE_CHOICE(stw, std)
-#define lgx MODE_CHOICE(lwzx, ldx)
-#define stgx MODE_CHOICE(stwx, stdx)
-#define lgu MODE_CHOICE(lwzu, ldu)
-#define stgu MODE_CHOICE(stwu, stdu)
-#define lgux MODE_CHOICE(lwzux, ldux)
-#define stgux MODE_CHOICE(stwux, stdux)
-#define lgwa MODE_CHOICE(lwz, lwa)
-
-#define g_long MODE_CHOICE(long, quad) /* usage is ".g_long" */
-
-#define GPR_BYTES MODE_CHOICE(4,8) /* size of a GPR in bytes */
-#define LOG2_GPR_BYTES MODE_CHOICE(2,3) /* log2(GPR_BYTES) */
-
-#define SAVED_LR_OFFSET MODE_CHOICE(8,16) /* position of saved
- LR in frame */
diff --git a/gcc/config/rs6000/darwin-fpsave.asm b/gcc/config/rs6000/darwin-fpsave.asm
deleted file mode 100644
index 47fdc92f860..00000000000
--- a/gcc/config/rs6000/darwin-fpsave.asm
+++ /dev/null
@@ -1,92 +0,0 @@
-/* This file contains the floating-point save and restore routines.
- *
- * Copyright (C) 2004, 2009 Free Software Foundation, Inc.
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
-/* THE SAVE AND RESTORE ROUTINES CAN HAVE ONLY ONE GLOBALLY VISIBLE
- ENTRY POINT - callers have to jump to "saveFP+60" to save f29..f31,
- for example. For FP reg saves/restores, it takes one instruction
- (4 bytes) to do the operation; for Vector regs, 2 instructions are
- required (8 bytes.)
-
- MORAL: DO NOT MESS AROUND WITH THESE FUNCTIONS! */
-
-#include "darwin-asm.h"
-
-.text
- .align 2
-
-/* saveFP saves R0 -- assumed to be the callers LR -- to 8/16(R1). */
-
-.private_extern saveFP
-saveFP:
- stfd f14,-144(r1)
- stfd f15,-136(r1)
- stfd f16,-128(r1)
- stfd f17,-120(r1)
- stfd f18,-112(r1)
- stfd f19,-104(r1)
- stfd f20,-96(r1)
- stfd f21,-88(r1)
- stfd f22,-80(r1)
- stfd f23,-72(r1)
- stfd f24,-64(r1)
- stfd f25,-56(r1)
- stfd f26,-48(r1)
- stfd f27,-40(r1)
- stfd f28,-32(r1)
- stfd f29,-24(r1)
- stfd f30,-16(r1)
- stfd f31,-8(r1)
- stg r0,SAVED_LR_OFFSET(r1)
- blr
-
-/* restFP restores the caller`s LR from 8/16(R1). Note that the code for
- this starts at the offset of F30 restoration, so calling this
- routine in an attempt to restore only F31 WILL NOT WORK (it would
- be a stupid thing to do, anyway.) */
-
-.private_extern restFP
-restFP:
- lfd f14,-144(r1)
- lfd f15,-136(r1)
- lfd f16,-128(r1)
- lfd f17,-120(r1)
- lfd f18,-112(r1)
- lfd f19,-104(r1)
- lfd f20,-96(r1)
- lfd f21,-88(r1)
- lfd f22,-80(r1)
- lfd f23,-72(r1)
- lfd f24,-64(r1)
- lfd f25,-56(r1)
- lfd f26,-48(r1)
- lfd f27,-40(r1)
- lfd f28,-32(r1)
- lfd f29,-24(r1)
- /* <OFFSET OF F30 RESTORE> restore callers LR */
- lg r0,SAVED_LR_OFFSET(r1)
- lfd f30,-16(r1)
- /* and prepare for return to caller */
- mtlr r0
- lfd f31,-8(r1)
- blr
diff --git a/gcc/config/rs6000/darwin-gpsave.asm b/gcc/config/rs6000/darwin-gpsave.asm
deleted file mode 100644
index d3c3b912d27..00000000000
--- a/gcc/config/rs6000/darwin-gpsave.asm
+++ /dev/null
@@ -1,118 +0,0 @@
-/* This file contains the GPR save and restore routines for Darwin.
- *
- * Copyright (C) 2011 Free Software Foundation, Inc.
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
-/* Contributed by Iain Sandoe <iains@gcc.gnu.org> */
-
-/* Like their FP and VEC counterparts, these routines have only one externally
- visible entry point. Calls have to be constructed as offsets from this.
- (I.E. callers have to jump to "saveGPR+((x-13)*4" to save registers x..31).
-
- Each save/load instruction is 4 bytes long (for both m32 and m64 builds).
-
- The save/restores here are done w.r.t r11.
-
- restGPRx restores the link reg from the stack and returns to the saved
- address.
-
- */
-
-#include "darwin-asm.h"
-
- .text
- .align 2
-
- .private_extern saveGPR
-saveGPR:
- stg r13,(-19 * GPR_BYTES)(r11)
- stg r14,(-18 * GPR_BYTES)(r11)
- stg r15,(-17 * GPR_BYTES)(r11)
- stg r16,(-16 * GPR_BYTES)(r11)
- stg r17,(-15 * GPR_BYTES)(r11)
- stg r18,(-14 * GPR_BYTES)(r11)
- stg r19,(-13 * GPR_BYTES)(r11)
- stg r20,(-12 * GPR_BYTES)(r11)
- stg r21,(-11 * GPR_BYTES)(r11)
- stg r22,(-10 * GPR_BYTES)(r11)
- stg r23,( -9 * GPR_BYTES)(r11)
- stg r24,( -8 * GPR_BYTES)(r11)
- stg r25,( -7 * GPR_BYTES)(r11)
- stg r26,( -6 * GPR_BYTES)(r11)
- stg r27,( -5 * GPR_BYTES)(r11)
- stg r28,( -4 * GPR_BYTES)(r11)
- stg r29,( -3 * GPR_BYTES)(r11)
- stg r30,( -2 * GPR_BYTES)(r11)
- stg r31,( -1 * GPR_BYTES)(r11)
- blr
-
-/* */
-
- .private_extern restGPR
-restGPR:
- lg r13,(-19 * GPR_BYTES)(r11)
- lg r14,(-18 * GPR_BYTES)(r11)
- lg r15,(-17 * GPR_BYTES)(r11)
- lg r16,(-16 * GPR_BYTES)(r11)
- lg r17,(-15 * GPR_BYTES)(r11)
- lg r18,(-14 * GPR_BYTES)(r11)
- lg r19,(-13 * GPR_BYTES)(r11)
- lg r20,(-12 * GPR_BYTES)(r11)
- lg r21,(-11 * GPR_BYTES)(r11)
- lg r22,(-10 * GPR_BYTES)(r11)
- lg r23,( -9 * GPR_BYTES)(r11)
- lg r24,( -8 * GPR_BYTES)(r11)
- lg r25,( -7 * GPR_BYTES)(r11)
- lg r26,( -6 * GPR_BYTES)(r11)
- lg r27,( -5 * GPR_BYTES)(r11)
- lg r28,( -4 * GPR_BYTES)(r11)
- lg r29,( -3 * GPR_BYTES)(r11)
- lg r30,( -2 * GPR_BYTES)(r11)
- lg r31,( -1 * GPR_BYTES)(r11)
- blr
-
- .private_extern restGPRx
-restGPRx:
- lg r13,(-19 * GPR_BYTES)(r11)
- lg r14,(-18 * GPR_BYTES)(r11)
- lg r15,(-17 * GPR_BYTES)(r11)
- lg r16,(-16 * GPR_BYTES)(r11)
- lg r17,(-15 * GPR_BYTES)(r11)
- lg r18,(-14 * GPR_BYTES)(r11)
- lg r19,(-13 * GPR_BYTES)(r11)
- lg r20,(-12 * GPR_BYTES)(r11)
- lg r21,(-11 * GPR_BYTES)(r11)
- lg r22,(-10 * GPR_BYTES)(r11)
- lg r23,( -9 * GPR_BYTES)(r11)
- lg r24,( -8 * GPR_BYTES)(r11)
- lg r25,( -7 * GPR_BYTES)(r11)
- lg r26,( -6 * GPR_BYTES)(r11)
- lg r27,( -5 * GPR_BYTES)(r11)
- lg r28,( -4 * GPR_BYTES)(r11)
- lg r29,( -3 * GPR_BYTES)(r11)
- /* Like the FP restore, we start from the offset for r30
- thus a restore of only r31 is not going to work. */
- lg r0,SAVED_LR_OFFSET(r1)
- lg r30,( -2 * GPR_BYTES)(r11)
- mtlr r0
- lg r31,( -1 * GPR_BYTES)(r11)
- blr
diff --git a/gcc/config/rs6000/darwin-tramp.asm b/gcc/config/rs6000/darwin-tramp.asm
deleted file mode 100644
index 5188c98ef05..00000000000
--- a/gcc/config/rs6000/darwin-tramp.asm
+++ /dev/null
@@ -1,125 +0,0 @@
-/* Special support for trampolines
- *
- * Copyright (C) 1996, 1997, 2000, 2004, 2005, 2009 Free Software Foundation, Inc.
- * Written By Michael Meissner
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
-#include "darwin-asm.h"
-
-/* Set up trampolines. */
-
-.text
- .align LOG2_GPR_BYTES
-Ltrampoline_initial:
- mflr r0
- bl 1f
-Lfunc = .-Ltrampoline_initial
- .g_long 0 /* will be replaced with function address */
-Lchain = .-Ltrampoline_initial
- .g_long 0 /* will be replaced with static chain */
-1: mflr r11
- lg r12,0(r11) /* function address */
- mtlr r0
- mtctr r12
- lg r11,GPR_BYTES(r11) /* static chain */
- bctr
-
-trampoline_size = .-Ltrampoline_initial
-
-/* R3 = stack address to store trampoline */
-/* R4 = length of trampoline area */
-/* R5 = function address */
-/* R6 = static chain */
-
- .globl ___trampoline_setup
-___trampoline_setup:
- mflr r0 /* save return address */
- bcl 20,31,LCF0 /* load up __trampoline_initial into r7 */
-LCF0:
- mflr r11
- addis r7,r11,ha16(LTRAMP-LCF0)
- lg r7,lo16(LTRAMP-LCF0)(r7)
- subi r7,r7,4
- li r8,trampoline_size /* verify trampoline big enough */
- cmpg cr1,r8,r4
- srwi r4,r4,2 /* # words to move (insns always 4-byte) */
- addi r9,r3,-4 /* adjust pointer for lgu */
- mtctr r4
- blt cr1,Labort
-
- mtlr r0
-
- /* Copy the instructions to the stack */
-Lmove:
- lwzu r10,4(r7)
- stwu r10,4(r9)
- bdnz Lmove
-
- /* Store correct function and static chain */
- stg r5,Lfunc(r3)
- stg r6,Lchain(r3)
-
- /* Now flush both caches */
- mtctr r4
-Lcache:
- icbi 0,r3
- dcbf 0,r3
- addi r3,r3,4
- bdnz Lcache
-
- /* Ensure cache-flushing has finished. */
- sync
- isync
-
- /* Make stack writeable. */
- b ___enable_execute_stack
-
-Labort:
-#ifdef __DYNAMIC__
- bl L_abort$stub
-.data
-.section __TEXT,__picsymbolstub1,symbol_stubs,pure_instructions,32
- .align 2
-L_abort$stub:
- .indirect_symbol _abort
- mflr r0
- bcl 20,31,L0$_abort
-L0$_abort:
- mflr r11
- addis r11,r11,ha16(L_abort$lazy_ptr-L0$_abort)
- mtlr r0
- lgu r12,lo16(L_abort$lazy_ptr-L0$_abort)(r11)
- mtctr r12
- bctr
-.data
-.lazy_symbol_pointer
-L_abort$lazy_ptr:
- .indirect_symbol _abort
- .g_long dyld_stub_binding_helper
-#else
- bl _abort
-#endif
-.data
- .align LOG2_GPR_BYTES
-LTRAMP:
- .g_long Ltrampoline_initial
-
diff --git a/gcc/config/rs6000/darwin-vecsave.asm b/gcc/config/rs6000/darwin-vecsave.asm
deleted file mode 100644
index 0a46be20c89..00000000000
--- a/gcc/config/rs6000/darwin-vecsave.asm
+++ /dev/null
@@ -1,155 +0,0 @@
-/* This file contains the vector save and restore routines.
- *
- * Copyright (C) 2004, 2009 Free Software Foundation, Inc.
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
-/* Vector save/restore routines for Darwin. Note that each vector
- save/restore requires 2 instructions (8 bytes.)
-
- THE SAVE AND RESTORE ROUTINES CAN HAVE ONLY ONE GLOBALLY VISIBLE
- ENTRY POINT - callers have to jump to "saveFP+60" to save f29..f31,
- for example. For FP reg saves/restores, it takes one instruction
- (4 bytes) to do the operation; for Vector regs, 2 instructions are
- required (8 bytes.). */
-
- .machine ppc7400
-.text
- .align 2
-
-.private_extern saveVEC
-saveVEC:
- li r11,-192
- stvx v20,r11,r0
- li r11,-176
- stvx v21,r11,r0
- li r11,-160
- stvx v22,r11,r0
- li r11,-144
- stvx v23,r11,r0
- li r11,-128
- stvx v24,r11,r0
- li r11,-112
- stvx v25,r11,r0
- li r11,-96
- stvx v26,r11,r0
- li r11,-80
- stvx v27,r11,r0
- li r11,-64
- stvx v28,r11,r0
- li r11,-48
- stvx v29,r11,r0
- li r11,-32
- stvx v30,r11,r0
- li r11,-16
- stvx v31,r11,r0
- blr
-
-.private_extern restVEC
-restVEC:
- li r11,-192
- lvx v20,r11,r0
- li r11,-176
- lvx v21,r11,r0
- li r11,-160
- lvx v22,r11,r0
- li r11,-144
- lvx v23,r11,r0
- li r11,-128
- lvx v24,r11,r0
- li r11,-112
- lvx v25,r11,r0
- li r11,-96
- lvx v26,r11,r0
- li r11,-80
- lvx v27,r11,r0
- li r11,-64
- lvx v28,r11,r0
- li r11,-48
- lvx v29,r11,r0
- li r11,-32
- lvx v30,r11,r0
- li r11,-16
- lvx v31,r11,r0
- blr
-
-/* saveVEC_vr11 -- as saveVEC but VRsave is returned in R11. */
-
-.private_extern saveVEC_vr11
-saveVEC_vr11:
- li r11,-192
- stvx v20,r11,r0
- li r11,-176
- stvx v21,r11,r0
- li r11,-160
- stvx v22,r11,r0
- li r11,-144
- stvx v23,r11,r0
- li r11,-128
- stvx v24,r11,r0
- li r11,-112
- stvx v25,r11,r0
- li r11,-96
- stvx v26,r11,r0
- li r11,-80
- stvx v27,r11,r0
- li r11,-64
- stvx v28,r11,r0
- li r11,-48
- stvx v29,r11,r0
- li r11,-32
- stvx v30,r11,r0
- li r11,-16
- stvx v31,r11,r0
- mfspr r11,VRsave
- blr
-
-/* As restVec, but the original VRsave value passed in R10. */
-
-.private_extern restVEC_vr10
-restVEC_vr10:
- li r11,-192
- lvx v20,r11,r0
- li r11,-176
- lvx v21,r11,r0
- li r11,-160
- lvx v22,r11,r0
- li r11,-144
- lvx v23,r11,r0
- li r11,-128
- lvx v24,r11,r0
- li r11,-112
- lvx v25,r11,r0
- li r11,-96
- lvx v26,r11,r0
- li r11,-80
- lvx v27,r11,r0
- li r11,-64
- lvx v28,r11,r0
- li r11,-48
- lvx v29,r11,r0
- li r11,-32
- lvx v30,r11,r0
- li r11,-16
- lvx v31,r11,r0
- /* restore VRsave from R10. */
- mtspr VRsave,r10
- blr
diff --git a/gcc/config/rs6000/darwin-world.asm b/gcc/config/rs6000/darwin-world.asm
deleted file mode 100644
index c0b1bf1a2b1..00000000000
--- a/gcc/config/rs6000/darwin-world.asm
+++ /dev/null
@@ -1,259 +0,0 @@
-/* This file contains the exception-handling save_world and
- * restore_world routines, which need to do a run-time check to see if
- * they should save and restore the vector registers.
- *
- * Copyright (C) 2004, 2009 Free Software Foundation, Inc.
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
- .machine ppc7400
-.data
- .align 2
-
-#ifdef __DYNAMIC__
-
-.non_lazy_symbol_pointer
-L_has_vec$non_lazy_ptr:
- .indirect_symbol __cpu_has_altivec
-#ifdef __ppc64__
- .quad 0
-#else
- .long 0
-#endif
-
-#else
-
-/* For static, "pretend" we have a non-lazy-pointer. */
-
-L_has_vec$non_lazy_ptr:
- .long __cpu_has_altivec
-
-#endif
-
-
-.text
- .align 2
-
-/* save_world and rest_world save/restore F14-F31 and possibly V20-V31
- (assuming you have a CPU with vector registers; we use a global var
- provided by the System Framework to determine this.)
-
- SAVE_WORLD takes R0 (the caller`s caller`s return address) and R11
- (the stack frame size) as parameters. It returns VRsave in R0 if
- we`re on a CPU with vector regs.
-
- With gcc3, we now need to save and restore CR as well, since gcc3's
- scheduled prologs can cause comparisons to be moved before calls to
- save_world!
-
- USES: R0 R11 R12 */
-
-.private_extern save_world
-save_world:
- stw r0,8(r1)
- mflr r0
- bcl 20,31,Ls$pb
-Ls$pb: mflr r12
- addis r12,r12,ha16(L_has_vec$non_lazy_ptr-Ls$pb)
- lwz r12,lo16(L_has_vec$non_lazy_ptr-Ls$pb)(r12)
- mtlr r0
- lwz r12,0(r12)
- /* grab CR */
- mfcr r0
- /* test HAS_VEC */
- cmpwi r12,0
- stfd f14,-144(r1)
- stfd f15,-136(r1)
- stfd f16,-128(r1)
- stfd f17,-120(r1)
- stfd f18,-112(r1)
- stfd f19,-104(r1)
- stfd f20,-96(r1)
- stfd f21,-88(r1)
- stfd f22,-80(r1)
- stfd f23,-72(r1)
- stfd f24,-64(r1)
- stfd f25,-56(r1)
- stfd f26,-48(r1)
- stfd f27,-40(r1)
- stfd f28,-32(r1)
- stfd f29,-24(r1)
- stfd f30,-16(r1)
- stfd f31,-8(r1)
- stmw r13,-220(r1)
- /* stash CR */
- stw r0,4(r1)
- /* set R12 pointing at Vector Reg save area */
- addi r12,r1,-224
- /* allocate stack frame */
- stwux r1,r1,r11
- /* ...but return if HAS_VEC is zero */
- bne+ L$saveVMX
- /* Not forgetting to restore CR. */
- mtcr r0
- blr
-
-L$saveVMX:
- /* We're saving Vector regs too. */
- /* Restore CR from R0. No More Branches! */
- mtcr r0
-
- /* We should really use VRSAVE to figure out which vector regs
- we actually need to save and restore. Some other time :-/ */
-
- li r11,-192
- stvx v20,r11,r12
- li r11,-176
- stvx v21,r11,r12
- li r11,-160
- stvx v22,r11,r12
- li r11,-144
- stvx v23,r11,r12
- li r11,-128
- stvx v24,r11,r12
- li r11,-112
- stvx v25,r11,r12
- li r11,-96
- stvx v26,r11,r12
- li r11,-80
- stvx v27,r11,r12
- li r11,-64
- stvx v28,r11,r12
- li r11,-48
- stvx v29,r11,r12
- li r11,-32
- stvx v30,r11,r12
- mfspr r0,VRsave
- li r11,-16
- stvx v31,r11,r12
- /* VRsave lives at -224(R1) */
- stw r0,0(r12)
- blr
-
-
-/* eh_rest_world_r10 is jumped to, not called, so no need to worry about LR.
- R10 is the C++ EH stack adjust parameter, we return to the caller`s caller.
-
- USES: R0 R10 R11 R12 and R7 R8
- RETURNS: C++ EH Data registers (R3 - R6.)
-
- We now set up R7/R8 and jump to rest_world_eh_r7r8.
-
- rest_world doesn't use the R10 stack adjust parameter, nor does it
- pick up the R3-R6 exception handling stuff. */
-
-.private_extern rest_world
-rest_world:
- /* Pickup previous SP */
- lwz r11, 0(r1)
- li r7, 0
- lwz r8, 8(r11)
- li r10, 0
- b rest_world_eh_r7r8
-
-.private_extern eh_rest_world_r10
-eh_rest_world_r10:
- /* Pickup previous SP */
- lwz r11, 0(r1)
- mr r7,r10
- lwz r8, 8(r11)
- /* pickup the C++ EH data regs (R3 - R6.) */
- lwz r6,-420(r11)
- lwz r5,-424(r11)
- lwz r4,-428(r11)
- lwz r3,-432(r11)
-
- b rest_world_eh_r7r8
-
-/* rest_world_eh_r7r8 is jumped to -- not called! -- when we're doing
- the exception-handling epilog. R7 contains the offset to add to
- the SP, and R8 contains the 'real' return address.
-
- USES: R0 R11 R12 [R7/R8]
- RETURNS: C++ EH Data registers (R3 - R6.) */
-
-rest_world_eh_r7r8:
- bcl 20,31,Lr7r8$pb
-Lr7r8$pb: mflr r12
- lwz r11,0(r1)
- /* R11 := previous SP */
- addis r12,r12,ha16(L_has_vec$non_lazy_ptr-Lr7r8$pb)
- lwz r12,lo16(L_has_vec$non_lazy_ptr-Lr7r8$pb)(r12)
- lwz r0,4(r11)
- /* R0 := old CR */
- lwz r12,0(r12)
- /* R12 := HAS_VEC */
- mtcr r0
- cmpwi r12,0
- lmw r13,-220(r11)
- beq L.rest_world_fp_eh
- /* restore VRsave and V20..V31 */
- lwz r0,-224(r11)
- li r12,-416
- mtspr VRsave,r0
- lvx v20,r11,r12
- li r12,-400
- lvx v21,r11,r12
- li r12,-384
- lvx v22,r11,r12
- li r12,-368
- lvx v23,r11,r12
- li r12,-352
- lvx v24,r11,r12
- li r12,-336
- lvx v25,r11,r12
- li r12,-320
- lvx v26,r11,r12
- li r12,-304
- lvx v27,r11,r12
- li r12,-288
- lvx v28,r11,r12
- li r12,-272
- lvx v29,r11,r12
- li r12,-256
- lvx v30,r11,r12
- li r12,-240
- lvx v31,r11,r12
-
-L.rest_world_fp_eh:
- lfd f14,-144(r11)
- lfd f15,-136(r11)
- lfd f16,-128(r11)
- lfd f17,-120(r11)
- lfd f18,-112(r11)
- lfd f19,-104(r11)
- lfd f20,-96(r11)
- lfd f21,-88(r11)
- lfd f22,-80(r11)
- lfd f23,-72(r11)
- lfd f24,-64(r11)
- lfd f25,-56(r11)
- lfd f26,-48(r11)
- lfd f27,-40(r11)
- lfd f28,-32(r11)
- lfd f29,-24(r11)
- lfd f30,-16(r11)
- /* R8 is the exception-handler's address */
- mtctr r8
- lfd f31,-8(r11)
- /* set SP to original value + R7 offset */
- add r1,r11,r7
- bctr
diff --git a/gcc/config/rs6000/e500crtres32gpr.asm b/gcc/config/rs6000/e500crtres32gpr.asm
deleted file mode 100644
index 6fbff820b88..00000000000
--- a/gcc/config/rs6000/e500crtres32gpr.asm
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Special support for e500 eabi and SVR4
- *
- * Copyright (C) 2008, 2009 Free Software Foundation, Inc.
- * Written by Nathan Froyd
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
- .section ".text"
- #include "ppc-asm.h"
-
-#ifdef __SPE__
-
-/* Routines for restoring 32-bit integer registers, called by the compiler. */
-/* "Bare" versions that simply return to their caller. */
-
-HIDDEN_FUNC(_rest32gpr_14) lwz 14,-72(11)
-HIDDEN_FUNC(_rest32gpr_15) lwz 15,-68(11)
-HIDDEN_FUNC(_rest32gpr_16) lwz 16,-64(11)
-HIDDEN_FUNC(_rest32gpr_17) lwz 17,-60(11)
-HIDDEN_FUNC(_rest32gpr_18) lwz 18,-56(11)
-HIDDEN_FUNC(_rest32gpr_19) lwz 19,-52(11)
-HIDDEN_FUNC(_rest32gpr_20) lwz 20,-48(11)
-HIDDEN_FUNC(_rest32gpr_21) lwz 21,-44(11)
-HIDDEN_FUNC(_rest32gpr_22) lwz 22,-40(11)
-HIDDEN_FUNC(_rest32gpr_23) lwz 23,-36(11)
-HIDDEN_FUNC(_rest32gpr_24) lwz 24,-32(11)
-HIDDEN_FUNC(_rest32gpr_25) lwz 25,-28(11)
-HIDDEN_FUNC(_rest32gpr_26) lwz 26,-24(11)
-HIDDEN_FUNC(_rest32gpr_27) lwz 27,-20(11)
-HIDDEN_FUNC(_rest32gpr_28) lwz 28,-16(11)
-HIDDEN_FUNC(_rest32gpr_29) lwz 29,-12(11)
-HIDDEN_FUNC(_rest32gpr_30) lwz 30,-8(11)
-HIDDEN_FUNC(_rest32gpr_31) lwz 31,-4(11)
- blr
-FUNC_END(_rest32gpr_31)
-FUNC_END(_rest32gpr_30)
-FUNC_END(_rest32gpr_29)
-FUNC_END(_rest32gpr_28)
-FUNC_END(_rest32gpr_27)
-FUNC_END(_rest32gpr_26)
-FUNC_END(_rest32gpr_25)
-FUNC_END(_rest32gpr_24)
-FUNC_END(_rest32gpr_23)
-FUNC_END(_rest32gpr_22)
-FUNC_END(_rest32gpr_21)
-FUNC_END(_rest32gpr_20)
-FUNC_END(_rest32gpr_19)
-FUNC_END(_rest32gpr_18)
-FUNC_END(_rest32gpr_17)
-FUNC_END(_rest32gpr_16)
-FUNC_END(_rest32gpr_15)
-FUNC_END(_rest32gpr_14)
-
-#endif
diff --git a/gcc/config/rs6000/e500crtres64gpr.asm b/gcc/config/rs6000/e500crtres64gpr.asm
deleted file mode 100644
index 5182e55392d..00000000000
--- a/gcc/config/rs6000/e500crtres64gpr.asm
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Special support for e500 eabi and SVR4
- *
- * Copyright (C) 2008, 2009 Free Software Foundation, Inc.
- * Written by Nathan Froyd
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
- .section ".text"
- #include "ppc-asm.h"
-
-#ifdef __SPE__
-
-/* Routines for restoring 64-bit integer registers, called by the compiler. */
-/* "Bare" versions that return to their caller. */
-
-HIDDEN_FUNC(_rest64gpr_14) evldd 14,0(11)
-HIDDEN_FUNC(_rest64gpr_15) evldd 15,8(11)
-HIDDEN_FUNC(_rest64gpr_16) evldd 16,16(11)
-HIDDEN_FUNC(_rest64gpr_17) evldd 17,24(11)
-HIDDEN_FUNC(_rest64gpr_18) evldd 18,32(11)
-HIDDEN_FUNC(_rest64gpr_19) evldd 19,40(11)
-HIDDEN_FUNC(_rest64gpr_20) evldd 20,48(11)
-HIDDEN_FUNC(_rest64gpr_21) evldd 21,56(11)
-HIDDEN_FUNC(_rest64gpr_22) evldd 22,64(11)
-HIDDEN_FUNC(_rest64gpr_23) evldd 23,72(11)
-HIDDEN_FUNC(_rest64gpr_24) evldd 24,80(11)
-HIDDEN_FUNC(_rest64gpr_25) evldd 25,88(11)
-HIDDEN_FUNC(_rest64gpr_26) evldd 26,96(11)
-HIDDEN_FUNC(_rest64gpr_27) evldd 27,104(11)
-HIDDEN_FUNC(_rest64gpr_28) evldd 28,112(11)
-HIDDEN_FUNC(_rest64gpr_29) evldd 29,120(11)
-HIDDEN_FUNC(_rest64gpr_30) evldd 30,128(11)
-HIDDEN_FUNC(_rest64gpr_31) evldd 31,136(11)
- blr
-FUNC_END(_rest64gpr_31)
-FUNC_END(_rest64gpr_30)
-FUNC_END(_rest64gpr_29)
-FUNC_END(_rest64gpr_28)
-FUNC_END(_rest64gpr_27)
-FUNC_END(_rest64gpr_26)
-FUNC_END(_rest64gpr_25)
-FUNC_END(_rest64gpr_24)
-FUNC_END(_rest64gpr_23)
-FUNC_END(_rest64gpr_22)
-FUNC_END(_rest64gpr_21)
-FUNC_END(_rest64gpr_20)
-FUNC_END(_rest64gpr_19)
-FUNC_END(_rest64gpr_18)
-FUNC_END(_rest64gpr_17)
-FUNC_END(_rest64gpr_16)
-FUNC_END(_rest64gpr_15)
-FUNC_END(_rest64gpr_14)
-
-#endif
diff --git a/gcc/config/rs6000/e500crtres64gprctr.asm b/gcc/config/rs6000/e500crtres64gprctr.asm
deleted file mode 100644
index 74309d6bed6..00000000000
--- a/gcc/config/rs6000/e500crtres64gprctr.asm
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Special support for e500 eabi and SVR4
- *
- * Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
- * Written by Nathan Froyd
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
- .section ".text"
- #include "ppc-asm.h"
-
-#ifdef __SPE__
-
-/* Routines for restoring 64-bit integer registers where the number of
- registers to be restored is passed in CTR, called by the compiler. */
-
-HIDDEN_FUNC(_rest64gpr_ctr_14) evldd 14,0(11)
- bdz _rest64gpr_ctr_done
-HIDDEN_FUNC(_rest64gpr_ctr_15) evldd 15,8(11)
- bdz _rest64gpr_ctr_done
-HIDDEN_FUNC(_rest64gpr_ctr_16) evldd 16,16(11)
- bdz _rest64gpr_ctr_done
-HIDDEN_FUNC(_rest64gpr_ctr_17) evldd 17,24(11)
- bdz _rest64gpr_ctr_done
-HIDDEN_FUNC(_rest64gpr_ctr_18) evldd 18,32(11)
- bdz _rest64gpr_ctr_done
-HIDDEN_FUNC(_rest64gpr_ctr_19) evldd 19,40(11)
- bdz _rest64gpr_ctr_done
-HIDDEN_FUNC(_rest64gpr_ctr_20) evldd 20,48(11)
- bdz _rest64gpr_ctr_done
-HIDDEN_FUNC(_rest64gpr_ctr_21) evldd 21,56(11)
- bdz _rest64gpr_ctr_done
-HIDDEN_FUNC(_rest64gpr_ctr_22) evldd 22,64(11)
- bdz _rest64gpr_ctr_done
-HIDDEN_FUNC(_rest64gpr_ctr_23) evldd 23,72(11)
- bdz _rest64gpr_ctr_done
-HIDDEN_FUNC(_rest64gpr_ctr_24) evldd 24,80(11)
- bdz _rest64gpr_ctr_done
-HIDDEN_FUNC(_rest64gpr_ctr_25) evldd 25,88(11)
- bdz _rest64gpr_ctr_done
-HIDDEN_FUNC(_rest64gpr_ctr_26) evldd 26,96(11)
- bdz _rest64gpr_ctr_done
-HIDDEN_FUNC(_rest64gpr_ctr_27) evldd 27,104(11)
- bdz _rest64gpr_ctr_done
-HIDDEN_FUNC(_rest64gpr_ctr_28) evldd 28,112(11)
- bdz _rest64gpr_ctr_done
-HIDDEN_FUNC(_rest64gpr_ctr_29) evldd 29,120(11)
- bdz _rest64gpr_ctr_done
-HIDDEN_FUNC(_rest64gpr_ctr_30) evldd 30,128(11)
- bdz _rest64gpr_ctr_done
-HIDDEN_FUNC(_rest64gpr_ctr_31) evldd 31,136(11)
-_rest64gpr_ctr_done: blr
-FUNC_END(_rest64gpr_ctr_31)
-FUNC_END(_rest64gpr_ctr_30)
-FUNC_END(_rest64gpr_ctr_29)
-FUNC_END(_rest64gpr_ctr_28)
-FUNC_END(_rest64gpr_ctr_27)
-FUNC_END(_rest64gpr_ctr_26)
-FUNC_END(_rest64gpr_ctr_25)
-FUNC_END(_rest64gpr_ctr_24)
-FUNC_END(_rest64gpr_ctr_23)
-FUNC_END(_rest64gpr_ctr_22)
-FUNC_END(_rest64gpr_ctr_21)
-FUNC_END(_rest64gpr_ctr_20)
-FUNC_END(_rest64gpr_ctr_19)
-FUNC_END(_rest64gpr_ctr_18)
-FUNC_END(_rest64gpr_ctr_17)
-FUNC_END(_rest64gpr_ctr_16)
-FUNC_END(_rest64gpr_ctr_15)
-FUNC_END(_rest64gpr_ctr_14)
-
-#endif
diff --git a/gcc/config/rs6000/e500crtrest32gpr.asm b/gcc/config/rs6000/e500crtrest32gpr.asm
deleted file mode 100644
index 4e61010dcff..00000000000
--- a/gcc/config/rs6000/e500crtrest32gpr.asm
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Special support for e500 eabi and SVR4
- *
- * Copyright (C) 2008, 2009 Free Software Foundation, Inc.
- * Written by Nathan Froyd
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
- .section ".text"
- #include "ppc-asm.h"
-
-#ifdef __SPE__
-
-/* Routines for restoring 32-bit integer registers, called by the compiler. */
-/* "Tail" versions that perform a tail call. */
-
-HIDDEN_FUNC(_rest32gpr_14_t) lwz 14,-72(11)
-HIDDEN_FUNC(_rest32gpr_15_t) lwz 15,-68(11)
-HIDDEN_FUNC(_rest32gpr_16_t) lwz 16,-64(11)
-HIDDEN_FUNC(_rest32gpr_17_t) lwz 17,-60(11)
-HIDDEN_FUNC(_rest32gpr_18_t) lwz 18,-56(11)
-HIDDEN_FUNC(_rest32gpr_19_t) lwz 19,-52(11)
-HIDDEN_FUNC(_rest32gpr_20_t) lwz 20,-48(11)
-HIDDEN_FUNC(_rest32gpr_21_t) lwz 21,-44(11)
-HIDDEN_FUNC(_rest32gpr_22_t) lwz 22,-40(11)
-HIDDEN_FUNC(_rest32gpr_23_t) lwz 23,-36(11)
-HIDDEN_FUNC(_rest32gpr_24_t) lwz 24,-32(11)
-HIDDEN_FUNC(_rest32gpr_25_t) lwz 25,-28(11)
-HIDDEN_FUNC(_rest32gpr_26_t) lwz 26,-24(11)
-HIDDEN_FUNC(_rest32gpr_27_t) lwz 27,-20(11)
-HIDDEN_FUNC(_rest32gpr_28_t) lwz 28,-16(11)
-HIDDEN_FUNC(_rest32gpr_29_t) lwz 29,-12(11)
-HIDDEN_FUNC(_rest32gpr_30_t) lwz 30,-8(11)
-HIDDEN_FUNC(_rest32gpr_31_t) lwz 31,-4(11)
- lwz 0,4(11)
- mr 1,11
- blr
-FUNC_END(_rest32gpr_31_t)
-FUNC_END(_rest32gpr_30_t)
-FUNC_END(_rest32gpr_29_t)
-FUNC_END(_rest32gpr_28_t)
-FUNC_END(_rest32gpr_27_t)
-FUNC_END(_rest32gpr_26_t)
-FUNC_END(_rest32gpr_25_t)
-FUNC_END(_rest32gpr_24_t)
-FUNC_END(_rest32gpr_23_t)
-FUNC_END(_rest32gpr_22_t)
-FUNC_END(_rest32gpr_21_t)
-FUNC_END(_rest32gpr_20_t)
-FUNC_END(_rest32gpr_19_t)
-FUNC_END(_rest32gpr_18_t)
-FUNC_END(_rest32gpr_17_t)
-FUNC_END(_rest32gpr_16_t)
-FUNC_END(_rest32gpr_15_t)
-FUNC_END(_rest32gpr_14_t)
-
-#endif
diff --git a/gcc/config/rs6000/e500crtrest64gpr.asm b/gcc/config/rs6000/e500crtrest64gpr.asm
deleted file mode 100644
index 090786fdc71..00000000000
--- a/gcc/config/rs6000/e500crtrest64gpr.asm
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Special support for e500 eabi and SVR4
- *
- * Copyright (C) 2008, 2009 Free Software Foundation, Inc.
- * Written by Nathan Froyd
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
- .section ".text"
- #include "ppc-asm.h"
-
-#ifdef __SPE__
-
-/* "Tail" versions that perform a tail call. */
-
-HIDDEN_FUNC(_rest64gpr_14_t) evldd 14,0(11)
-HIDDEN_FUNC(_rest64gpr_15_t) evldd 15,8(11)
-HIDDEN_FUNC(_rest64gpr_16_t) evldd 16,16(11)
-HIDDEN_FUNC(_rest64gpr_17_t) evldd 17,24(11)
-HIDDEN_FUNC(_rest64gpr_18_t) evldd 18,32(11)
-HIDDEN_FUNC(_rest64gpr_19_t) evldd 19,40(11)
-HIDDEN_FUNC(_rest64gpr_20_t) evldd 20,48(11)
-HIDDEN_FUNC(_rest64gpr_21_t) evldd 21,56(11)
-HIDDEN_FUNC(_rest64gpr_22_t) evldd 22,64(11)
-HIDDEN_FUNC(_rest64gpr_23_t) evldd 23,72(11)
-HIDDEN_FUNC(_rest64gpr_24_t) evldd 24,80(11)
-HIDDEN_FUNC(_rest64gpr_25_t) evldd 25,88(11)
-HIDDEN_FUNC(_rest64gpr_26_t) evldd 26,96(11)
-HIDDEN_FUNC(_rest64gpr_27_t) evldd 27,104(11)
-HIDDEN_FUNC(_rest64gpr_28_t) evldd 28,112(11)
-HIDDEN_FUNC(_rest64gpr_29_t) evldd 29,120(11)
-HIDDEN_FUNC(_rest64gpr_30_t) evldd 30,128(11)
-HIDDEN_FUNC(_rest64gpr_31_t) lwz 0,148(11)
- evldd 31,136(11)
- addi 1,11,144
- blr
-FUNC_END(_rest64gpr_31_t)
-FUNC_END(_rest64gpr_30_t)
-FUNC_END(_rest64gpr_29_t)
-FUNC_END(_rest64gpr_28_t)
-FUNC_END(_rest64gpr_27_t)
-FUNC_END(_rest64gpr_26_t)
-FUNC_END(_rest64gpr_25_t)
-FUNC_END(_rest64gpr_24_t)
-FUNC_END(_rest64gpr_23_t)
-FUNC_END(_rest64gpr_22_t)
-FUNC_END(_rest64gpr_21_t)
-FUNC_END(_rest64gpr_20_t)
-FUNC_END(_rest64gpr_19_t)
-FUNC_END(_rest64gpr_18_t)
-FUNC_END(_rest64gpr_17_t)
-FUNC_END(_rest64gpr_16_t)
-FUNC_END(_rest64gpr_15_t)
-FUNC_END(_rest64gpr_14_t)
-
-#endif
diff --git a/gcc/config/rs6000/e500crtresx32gpr.asm b/gcc/config/rs6000/e500crtresx32gpr.asm
deleted file mode 100644
index 0b35245df42..00000000000
--- a/gcc/config/rs6000/e500crtresx32gpr.asm
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Special support for e500 eabi and SVR4
- *
- * Copyright (C) 2008, 2009 Free Software Foundation, Inc.
- * Written by Nathan Froyd
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
- .section ".text"
- #include "ppc-asm.h"
-
-#ifdef __SPE__
-
-/* Routines for restoring 32-bit integer registers, called by the compiler. */
-/* "Exit" versions that return to the caller's caller. */
-
-HIDDEN_FUNC(_rest32gpr_14_x) lwz 14,-72(11)
-HIDDEN_FUNC(_rest32gpr_15_x) lwz 15,-68(11)
-HIDDEN_FUNC(_rest32gpr_16_x) lwz 16,-64(11)
-HIDDEN_FUNC(_rest32gpr_17_x) lwz 17,-60(11)
-HIDDEN_FUNC(_rest32gpr_18_x) lwz 18,-56(11)
-HIDDEN_FUNC(_rest32gpr_19_x) lwz 19,-52(11)
-HIDDEN_FUNC(_rest32gpr_20_x) lwz 20,-48(11)
-HIDDEN_FUNC(_rest32gpr_21_x) lwz 21,-44(11)
-HIDDEN_FUNC(_rest32gpr_22_x) lwz 22,-40(11)
-HIDDEN_FUNC(_rest32gpr_23_x) lwz 23,-36(11)
-HIDDEN_FUNC(_rest32gpr_24_x) lwz 24,-32(11)
-HIDDEN_FUNC(_rest32gpr_25_x) lwz 25,-28(11)
-HIDDEN_FUNC(_rest32gpr_26_x) lwz 26,-24(11)
-HIDDEN_FUNC(_rest32gpr_27_x) lwz 27,-20(11)
-HIDDEN_FUNC(_rest32gpr_28_x) lwz 28,-16(11)
-HIDDEN_FUNC(_rest32gpr_29_x) lwz 29,-12(11)
-HIDDEN_FUNC(_rest32gpr_30_x) lwz 30,-8(11)
-HIDDEN_FUNC(_rest32gpr_31_x) lwz 0,4(11)
- lwz 31,-4(11)
- mr 1,11
- mtlr 0
- blr
-FUNC_END(_rest32gpr_31_x)
-FUNC_END(_rest32gpr_30_x)
-FUNC_END(_rest32gpr_29_x)
-FUNC_END(_rest32gpr_28_x)
-FUNC_END(_rest32gpr_27_x)
-FUNC_END(_rest32gpr_26_x)
-FUNC_END(_rest32gpr_25_x)
-FUNC_END(_rest32gpr_24_x)
-FUNC_END(_rest32gpr_23_x)
-FUNC_END(_rest32gpr_22_x)
-FUNC_END(_rest32gpr_21_x)
-FUNC_END(_rest32gpr_20_x)
-FUNC_END(_rest32gpr_19_x)
-FUNC_END(_rest32gpr_18_x)
-FUNC_END(_rest32gpr_17_x)
-FUNC_END(_rest32gpr_16_x)
-FUNC_END(_rest32gpr_15_x)
-FUNC_END(_rest32gpr_14_x)
-
-#endif
diff --git a/gcc/config/rs6000/e500crtresx64gpr.asm b/gcc/config/rs6000/e500crtresx64gpr.asm
deleted file mode 100644
index ce2a6cfa2aa..00000000000
--- a/gcc/config/rs6000/e500crtresx64gpr.asm
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Special support for e500 eabi and SVR4
- *
- * Copyright (C) 2008, 2009 Free Software Foundation, Inc.
- * Written by Nathan Froyd
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
- .section ".text"
- #include "ppc-asm.h"
-
-#ifdef __SPE__
-
-/* "Exit" versions that return to their caller's caller. */
-
-HIDDEN_FUNC(_rest64gpr_14_x) evldd 14,0(11)
-HIDDEN_FUNC(_rest64gpr_15_x) evldd 15,8(11)
-HIDDEN_FUNC(_rest64gpr_16_x) evldd 16,16(11)
-HIDDEN_FUNC(_rest64gpr_17_x) evldd 17,24(11)
-HIDDEN_FUNC(_rest64gpr_18_x) evldd 18,32(11)
-HIDDEN_FUNC(_rest64gpr_19_x) evldd 19,40(11)
-HIDDEN_FUNC(_rest64gpr_20_x) evldd 20,48(11)
-HIDDEN_FUNC(_rest64gpr_21_x) evldd 21,56(11)
-HIDDEN_FUNC(_rest64gpr_22_x) evldd 22,64(11)
-HIDDEN_FUNC(_rest64gpr_23_x) evldd 23,72(11)
-HIDDEN_FUNC(_rest64gpr_24_x) evldd 24,80(11)
-HIDDEN_FUNC(_rest64gpr_25_x) evldd 25,88(11)
-HIDDEN_FUNC(_rest64gpr_26_x) evldd 26,96(11)
-HIDDEN_FUNC(_rest64gpr_27_x) evldd 27,104(11)
-HIDDEN_FUNC(_rest64gpr_28_x) evldd 28,112(11)
-HIDDEN_FUNC(_rest64gpr_29_x) evldd 29,120(11)
-HIDDEN_FUNC(_rest64gpr_30_x) evldd 30,128(11)
-HIDDEN_FUNC(_rest64gpr_31_x) lwz 0,148(11)
- evldd 31,136(11)
- addi 1,11,144
- mtlr 0
- blr
-FUNC_END(_rest64gpr_31_x)
-FUNC_END(_rest64gpr_30_x)
-FUNC_END(_rest64gpr_29_x)
-FUNC_END(_rest64gpr_28_x)
-FUNC_END(_rest64gpr_27_x)
-FUNC_END(_rest64gpr_26_x)
-FUNC_END(_rest64gpr_25_x)
-FUNC_END(_rest64gpr_24_x)
-FUNC_END(_rest64gpr_23_x)
-FUNC_END(_rest64gpr_22_x)
-FUNC_END(_rest64gpr_21_x)
-FUNC_END(_rest64gpr_20_x)
-FUNC_END(_rest64gpr_19_x)
-FUNC_END(_rest64gpr_18_x)
-FUNC_END(_rest64gpr_17_x)
-FUNC_END(_rest64gpr_16_x)
-FUNC_END(_rest64gpr_15_x)
-FUNC_END(_rest64gpr_14_x)
-
-#endif
diff --git a/gcc/config/rs6000/e500crtsav32gpr.asm b/gcc/config/rs6000/e500crtsav32gpr.asm
deleted file mode 100644
index c891030507e..00000000000
--- a/gcc/config/rs6000/e500crtsav32gpr.asm
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Special support for e500 eabi and SVR4
- *
- * Copyright (C) 2008, 2009 Free Software Foundation, Inc.
- * Written by Nathan Froyd
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
- .section ".text"
- #include "ppc-asm.h"
-
-#ifdef __SPE__
-
-/* Routines for saving 32-bit integer registers, called by the compiler. */
-/* "Bare" versions that simply return to their caller. */
-
-HIDDEN_FUNC(_save32gpr_14) stw 14,-72(11)
-HIDDEN_FUNC(_save32gpr_15) stw 15,-68(11)
-HIDDEN_FUNC(_save32gpr_16) stw 16,-64(11)
-HIDDEN_FUNC(_save32gpr_17) stw 17,-60(11)
-HIDDEN_FUNC(_save32gpr_18) stw 18,-56(11)
-HIDDEN_FUNC(_save32gpr_19) stw 19,-52(11)
-HIDDEN_FUNC(_save32gpr_20) stw 20,-48(11)
-HIDDEN_FUNC(_save32gpr_21) stw 21,-44(11)
-HIDDEN_FUNC(_save32gpr_22) stw 22,-40(11)
-HIDDEN_FUNC(_save32gpr_23) stw 23,-36(11)
-HIDDEN_FUNC(_save32gpr_24) stw 24,-32(11)
-HIDDEN_FUNC(_save32gpr_25) stw 25,-28(11)
-HIDDEN_FUNC(_save32gpr_26) stw 26,-24(11)
-HIDDEN_FUNC(_save32gpr_27) stw 27,-20(11)
-HIDDEN_FUNC(_save32gpr_28) stw 28,-16(11)
-HIDDEN_FUNC(_save32gpr_29) stw 29,-12(11)
-HIDDEN_FUNC(_save32gpr_30) stw 30,-8(11)
-HIDDEN_FUNC(_save32gpr_31) stw 31,-4(11)
- blr
-FUNC_END(_save32gpr_31)
-FUNC_END(_save32gpr_30)
-FUNC_END(_save32gpr_29)
-FUNC_END(_save32gpr_28)
-FUNC_END(_save32gpr_27)
-FUNC_END(_save32gpr_26)
-FUNC_END(_save32gpr_25)
-FUNC_END(_save32gpr_24)
-FUNC_END(_save32gpr_23)
-FUNC_END(_save32gpr_22)
-FUNC_END(_save32gpr_21)
-FUNC_END(_save32gpr_20)
-FUNC_END(_save32gpr_19)
-FUNC_END(_save32gpr_18)
-FUNC_END(_save32gpr_17)
-FUNC_END(_save32gpr_16)
-FUNC_END(_save32gpr_15)
-FUNC_END(_save32gpr_14)
-
-#endif
diff --git a/gcc/config/rs6000/e500crtsav64gpr.asm b/gcc/config/rs6000/e500crtsav64gpr.asm
deleted file mode 100644
index 2a5d3e475fd..00000000000
--- a/gcc/config/rs6000/e500crtsav64gpr.asm
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Special support for e500 eabi and SVR4
- *
- * Copyright (C) 2008, 2009 Free Software Foundation, Inc.
- * Written by Nathan Froyd
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
- .section ".text"
- #include "ppc-asm.h"
-
-#ifdef __SPE__
-
-/* Routines for saving 64-bit integer registers, called by the compiler. */
-
-HIDDEN_FUNC(_save64gpr_14) evstdd 14,0(11)
-HIDDEN_FUNC(_save64gpr_15) evstdd 15,8(11)
-HIDDEN_FUNC(_save64gpr_16) evstdd 16,16(11)
-HIDDEN_FUNC(_save64gpr_17) evstdd 17,24(11)
-HIDDEN_FUNC(_save64gpr_18) evstdd 18,32(11)
-HIDDEN_FUNC(_save64gpr_19) evstdd 19,40(11)
-HIDDEN_FUNC(_save64gpr_20) evstdd 20,48(11)
-HIDDEN_FUNC(_save64gpr_21) evstdd 21,56(11)
-HIDDEN_FUNC(_save64gpr_22) evstdd 22,64(11)
-HIDDEN_FUNC(_save64gpr_23) evstdd 23,72(11)
-HIDDEN_FUNC(_save64gpr_24) evstdd 24,80(11)
-HIDDEN_FUNC(_save64gpr_25) evstdd 25,88(11)
-HIDDEN_FUNC(_save64gpr_26) evstdd 26,96(11)
-HIDDEN_FUNC(_save64gpr_27) evstdd 27,104(11)
-HIDDEN_FUNC(_save64gpr_28) evstdd 28,112(11)
-HIDDEN_FUNC(_save64gpr_29) evstdd 29,120(11)
-HIDDEN_FUNC(_save64gpr_30) evstdd 30,128(11)
-HIDDEN_FUNC(_save64gpr_31) evstdd 31,136(11)
- blr
-FUNC_END(_save64gpr_31)
-FUNC_END(_save64gpr_30)
-FUNC_END(_save64gpr_29)
-FUNC_END(_save64gpr_28)
-FUNC_END(_save64gpr_27)
-FUNC_END(_save64gpr_26)
-FUNC_END(_save64gpr_25)
-FUNC_END(_save64gpr_24)
-FUNC_END(_save64gpr_23)
-FUNC_END(_save64gpr_22)
-FUNC_END(_save64gpr_21)
-FUNC_END(_save64gpr_20)
-FUNC_END(_save64gpr_19)
-FUNC_END(_save64gpr_18)
-FUNC_END(_save64gpr_17)
-FUNC_END(_save64gpr_16)
-FUNC_END(_save64gpr_15)
-FUNC_END(_save64gpr_14)
-
-#endif
diff --git a/gcc/config/rs6000/e500crtsav64gprctr.asm b/gcc/config/rs6000/e500crtsav64gprctr.asm
deleted file mode 100644
index dd0bdf3c89a..00000000000
--- a/gcc/config/rs6000/e500crtsav64gprctr.asm
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Special support for e500 eabi and SVR4
- *
- * Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
- * Written by Nathan Froyd
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
- .section ".text"
- #include "ppc-asm.h"
-
-#ifdef __SPE__
-
-/* Routines for saving 64-bit integer registers where the number of
- registers to be saved is passed in CTR, called by the compiler. */
-/* "Bare" versions that return to their caller. */
-
-HIDDEN_FUNC(_save64gpr_ctr_14) evstdd 14,0(11)
- bdz _save64gpr_ctr_done
-HIDDEN_FUNC(_save64gpr_ctr_15) evstdd 15,8(11)
- bdz _save64gpr_ctr_done
-HIDDEN_FUNC(_save64gpr_ctr_16) evstdd 16,16(11)
- bdz _save64gpr_ctr_done
-HIDDEN_FUNC(_save64gpr_ctr_17) evstdd 17,24(11)
- bdz _save64gpr_ctr_done
-HIDDEN_FUNC(_save64gpr_ctr_18) evstdd 18,32(11)
- bdz _save64gpr_ctr_done
-HIDDEN_FUNC(_save64gpr_ctr_19) evstdd 19,40(11)
- bdz _save64gpr_ctr_done
-HIDDEN_FUNC(_save64gpr_ctr_20) evstdd 20,48(11)
- bdz _save64gpr_ctr_done
-HIDDEN_FUNC(_save64gpr_ctr_21) evstdd 21,56(11)
- bdz _save64gpr_ctr_done
-HIDDEN_FUNC(_save64gpr_ctr_22) evstdd 22,64(11)
- bdz _save64gpr_ctr_done
-HIDDEN_FUNC(_save64gpr_ctr_23) evstdd 23,72(11)
- bdz _save64gpr_ctr_done
-HIDDEN_FUNC(_save64gpr_ctr_24) evstdd 24,80(11)
- bdz _save64gpr_ctr_done
-HIDDEN_FUNC(_save64gpr_ctr_25) evstdd 25,88(11)
- bdz _save64gpr_ctr_done
-HIDDEN_FUNC(_save64gpr_ctr_26) evstdd 26,96(11)
- bdz _save64gpr_ctr_done
-HIDDEN_FUNC(_save64gpr_ctr_27) evstdd 27,104(11)
- bdz _save64gpr_ctr_done
-HIDDEN_FUNC(_save64gpr_ctr_28) evstdd 28,112(11)
- bdz _save64gpr_ctr_done
-HIDDEN_FUNC(_save64gpr_ctr_29) evstdd 29,120(11)
- bdz _save64gpr_ctr_done
-HIDDEN_FUNC(_save64gpr_ctr_30) evstdd 30,128(11)
- bdz _save64gpr_ctr_done
-HIDDEN_FUNC(_save64gpr_ctr_31) evstdd 31,136(11)
-_save64gpr_ctr_done: blr
-FUNC_END(_save64gpr_ctr_31)
-FUNC_END(_save64gpr_ctr_30)
-FUNC_END(_save64gpr_ctr_29)
-FUNC_END(_save64gpr_ctr_28)
-FUNC_END(_save64gpr_ctr_27)
-FUNC_END(_save64gpr_ctr_26)
-FUNC_END(_save64gpr_ctr_25)
-FUNC_END(_save64gpr_ctr_24)
-FUNC_END(_save64gpr_ctr_23)
-FUNC_END(_save64gpr_ctr_22)
-FUNC_END(_save64gpr_ctr_21)
-FUNC_END(_save64gpr_ctr_20)
-FUNC_END(_save64gpr_ctr_19)
-FUNC_END(_save64gpr_ctr_18)
-FUNC_END(_save64gpr_ctr_17)
-FUNC_END(_save64gpr_ctr_16)
-FUNC_END(_save64gpr_ctr_15)
-FUNC_END(_save64gpr_ctr_14)
-
-#endif
diff --git a/gcc/config/rs6000/e500crtsavg32gpr.asm b/gcc/config/rs6000/e500crtsavg32gpr.asm
deleted file mode 100644
index d14088e0dec..00000000000
--- a/gcc/config/rs6000/e500crtsavg32gpr.asm
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Special support for e500 eabi and SVR4
- *
- * Copyright (C) 2008, 2009 Free Software Foundation, Inc.
- * Written by Nathan Froyd
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
- .section ".text"
- #include "ppc-asm.h"
-
-#ifdef __SPE__
-
-/* Routines for saving 32-bit integer registers, called by the compiler. */
-/* "GOT" versions that load the address of the GOT into lr before returning. */
-
-HIDDEN_FUNC(_save32gpr_14_g) stw 14,-72(11)
-HIDDEN_FUNC(_save32gpr_15_g) stw 15,-68(11)
-HIDDEN_FUNC(_save32gpr_16_g) stw 16,-64(11)
-HIDDEN_FUNC(_save32gpr_17_g) stw 17,-60(11)
-HIDDEN_FUNC(_save32gpr_18_g) stw 18,-56(11)
-HIDDEN_FUNC(_save32gpr_19_g) stw 19,-52(11)
-HIDDEN_FUNC(_save32gpr_20_g) stw 20,-48(11)
-HIDDEN_FUNC(_save32gpr_21_g) stw 21,-44(11)
-HIDDEN_FUNC(_save32gpr_22_g) stw 22,-40(11)
-HIDDEN_FUNC(_save32gpr_23_g) stw 23,-36(11)
-HIDDEN_FUNC(_save32gpr_24_g) stw 24,-32(11)
-HIDDEN_FUNC(_save32gpr_25_g) stw 25,-28(11)
-HIDDEN_FUNC(_save32gpr_26_g) stw 26,-24(11)
-HIDDEN_FUNC(_save32gpr_27_g) stw 27,-20(11)
-HIDDEN_FUNC(_save32gpr_28_g) stw 28,-16(11)
-HIDDEN_FUNC(_save32gpr_29_g) stw 29,-12(11)
-HIDDEN_FUNC(_save32gpr_30_g) stw 30,-8(11)
-HIDDEN_FUNC(_save32gpr_31_g) stw 31,-4(11)
- b _GLOBAL_OFFSET_TABLE_-4
-FUNC_END(_save32gpr_31_g)
-FUNC_END(_save32gpr_30_g)
-FUNC_END(_save32gpr_29_g)
-FUNC_END(_save32gpr_28_g)
-FUNC_END(_save32gpr_27_g)
-FUNC_END(_save32gpr_26_g)
-FUNC_END(_save32gpr_25_g)
-FUNC_END(_save32gpr_24_g)
-FUNC_END(_save32gpr_23_g)
-FUNC_END(_save32gpr_22_g)
-FUNC_END(_save32gpr_21_g)
-FUNC_END(_save32gpr_20_g)
-FUNC_END(_save32gpr_19_g)
-FUNC_END(_save32gpr_18_g)
-FUNC_END(_save32gpr_17_g)
-FUNC_END(_save32gpr_16_g)
-FUNC_END(_save32gpr_15_g)
-FUNC_END(_save32gpr_14_g)
-
-#endif
diff --git a/gcc/config/rs6000/e500crtsavg64gpr.asm b/gcc/config/rs6000/e500crtsavg64gpr.asm
deleted file mode 100644
index cbad75bc053..00000000000
--- a/gcc/config/rs6000/e500crtsavg64gpr.asm
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Special support for e500 eabi and SVR4
- *
- * Copyright (C) 2008, 2009 Free Software Foundation, Inc.
- * Written by Nathan Froyd
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
- .section ".text"
- #include "ppc-asm.h"
-
-#ifdef __SPE__
-
-/* Routines for saving 64-bit integer registers, called by the compiler. */
-/* "GOT" versions that load the address of the GOT into lr before returning. */
-
-HIDDEN_FUNC(_save64gpr_14_g) evstdd 14,0(11)
-HIDDEN_FUNC(_save64gpr_15_g) evstdd 15,8(11)
-HIDDEN_FUNC(_save64gpr_16_g) evstdd 16,16(11)
-HIDDEN_FUNC(_save64gpr_17_g) evstdd 17,24(11)
-HIDDEN_FUNC(_save64gpr_18_g) evstdd 18,32(11)
-HIDDEN_FUNC(_save64gpr_19_g) evstdd 19,40(11)
-HIDDEN_FUNC(_save64gpr_20_g) evstdd 20,48(11)
-HIDDEN_FUNC(_save64gpr_21_g) evstdd 21,56(11)
-HIDDEN_FUNC(_save64gpr_22_g) evstdd 22,64(11)
-HIDDEN_FUNC(_save64gpr_23_g) evstdd 23,72(11)
-HIDDEN_FUNC(_save64gpr_24_g) evstdd 24,80(11)
-HIDDEN_FUNC(_save64gpr_25_g) evstdd 25,88(11)
-HIDDEN_FUNC(_save64gpr_26_g) evstdd 26,96(11)
-HIDDEN_FUNC(_save64gpr_27_g) evstdd 27,104(11)
-HIDDEN_FUNC(_save64gpr_28_g) evstdd 28,112(11)
-HIDDEN_FUNC(_save64gpr_29_g) evstdd 29,120(11)
-HIDDEN_FUNC(_save64gpr_30_g) evstdd 30,128(11)
-HIDDEN_FUNC(_save64gpr_31_g) evstdd 31,136(11)
- b _GLOBAL_OFFSET_TABLE_-4
-FUNC_END(_save64gpr_31_g)
-FUNC_END(_save64gpr_30_g)
-FUNC_END(_save64gpr_29_g)
-FUNC_END(_save64gpr_28_g)
-FUNC_END(_save64gpr_27_g)
-FUNC_END(_save64gpr_26_g)
-FUNC_END(_save64gpr_25_g)
-FUNC_END(_save64gpr_24_g)
-FUNC_END(_save64gpr_23_g)
-FUNC_END(_save64gpr_22_g)
-FUNC_END(_save64gpr_21_g)
-FUNC_END(_save64gpr_20_g)
-FUNC_END(_save64gpr_19_g)
-FUNC_END(_save64gpr_18_g)
-FUNC_END(_save64gpr_17_g)
-FUNC_END(_save64gpr_16_g)
-FUNC_END(_save64gpr_15_g)
-FUNC_END(_save64gpr_14_g)
-
-#endif
diff --git a/gcc/config/rs6000/e500crtsavg64gprctr.asm b/gcc/config/rs6000/e500crtsavg64gprctr.asm
deleted file mode 100644
index 238df4e8319..00000000000
--- a/gcc/config/rs6000/e500crtsavg64gprctr.asm
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Special support for e500 eabi and SVR4
- *
- * Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc.
- * Written by Nathan Froyd
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
- .section ".text"
- #include "ppc-asm.h"
-
-#ifdef __SPE__
-
-/* Routines for saving 64-bit integer registers, called by the compiler. */
-/* "GOT" versions that load the address of the GOT into lr before returning. */
-
-HIDDEN_FUNC(_save64gpr_ctr_14_g) evstdd 14,0(11)
- bdz _save64gpr_ctr_g_done
-HIDDEN_FUNC(_save64gpr_ctr_15_g) evstdd 15,8(11)
- bdz _save64gpr_ctr_g_done
-HIDDEN_FUNC(_save64gpr_ctr_16_g) evstdd 16,16(11)
- bdz _save64gpr_ctr_g_done
-HIDDEN_FUNC(_save64gpr_ctr_17_g) evstdd 17,24(11)
- bdz _save64gpr_ctr_g_done
-HIDDEN_FUNC(_save64gpr_ctr_18_g) evstdd 18,32(11)
- bdz _save64gpr_ctr_g_done
-HIDDEN_FUNC(_save64gpr_ctr_19_g) evstdd 19,40(11)
- bdz _save64gpr_ctr_g_done
-HIDDEN_FUNC(_save64gpr_ctr_20_g) evstdd 20,48(11)
- bdz _save64gpr_ctr_g_done
-HIDDEN_FUNC(_save64gpr_ctr_21_g) evstdd 21,56(11)
- bdz _save64gpr_ctr_g_done
-HIDDEN_FUNC(_save64gpr_ctr_22_g) evstdd 22,64(11)
- bdz _save64gpr_ctr_g_done
-HIDDEN_FUNC(_save64gpr_ctr_23_g) evstdd 23,72(11)
- bdz _save64gpr_ctr_g_done
-HIDDEN_FUNC(_save64gpr_ctr_24_g) evstdd 24,80(11)
- bdz _save64gpr_ctr_g_done
-HIDDEN_FUNC(_save64gpr_ctr_25_g) evstdd 25,88(11)
- bdz _save64gpr_ctr_g_done
-HIDDEN_FUNC(_save64gpr_ctr_26_g) evstdd 26,96(11)
- bdz _save64gpr_ctr_g_done
-HIDDEN_FUNC(_save64gpr_ctr_27_g) evstdd 27,104(11)
- bdz _save64gpr_ctr_g_done
-HIDDEN_FUNC(_save64gpr_ctr_28_g) evstdd 28,112(11)
- bdz _save64gpr_ctr_g_done
-HIDDEN_FUNC(_save64gpr_ctr_29_g) evstdd 29,120(11)
- bdz _save64gpr_ctr_g_done
-HIDDEN_FUNC(_save64gpr_ctr_30_g) evstdd 30,128(11)
- bdz _save64gpr_ctr_g_done
-HIDDEN_FUNC(_save64gpr_ctr_31_g) evstdd 31,136(11)
-_save64gpr_ctr_g_done: b _GLOBAL_OFFSET_TABLE_-4
-FUNC_END(_save64gpr_ctr_31_g)
-FUNC_END(_save64gpr_ctr_30_g)
-FUNC_END(_save64gpr_ctr_29_g)
-FUNC_END(_save64gpr_ctr_28_g)
-FUNC_END(_save64gpr_ctr_27_g)
-FUNC_END(_save64gpr_ctr_26_g)
-FUNC_END(_save64gpr_ctr_25_g)
-FUNC_END(_save64gpr_ctr_24_g)
-FUNC_END(_save64gpr_ctr_23_g)
-FUNC_END(_save64gpr_ctr_22_g)
-FUNC_END(_save64gpr_ctr_21_g)
-FUNC_END(_save64gpr_ctr_20_g)
-FUNC_END(_save64gpr_ctr_19_g)
-FUNC_END(_save64gpr_ctr_18_g)
-FUNC_END(_save64gpr_ctr_17_g)
-FUNC_END(_save64gpr_ctr_16_g)
-FUNC_END(_save64gpr_ctr_15_g)
-FUNC_END(_save64gpr_ctr_14_g)
-
-#endif
diff --git a/gcc/config/rs6000/eabi.asm b/gcc/config/rs6000/eabi.asm
deleted file mode 100644
index 292d88e5016..00000000000
--- a/gcc/config/rs6000/eabi.asm
+++ /dev/null
@@ -1,289 +0,0 @@
-/*
- * Special support for eabi and SVR4
- *
- * Copyright (C) 1995, 1996, 1998, 2000, 2001, 2008, 2009
- * Free Software Foundation, Inc.
- * Written By Michael Meissner
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
-/* Do any initializations needed for the eabi environment */
-
- .section ".text"
- #include "ppc-asm.h"
-
-#ifndef __powerpc64__
-
- .section ".got2","aw"
- .align 2
-.LCTOC1 = . /* +32768 */
-
-/* Table of addresses */
-.Ltable = .-.LCTOC1
- .long .LCTOC1 /* address we are really at */
-
-.Lsda = .-.LCTOC1
- .long _SDA_BASE_ /* address of the first small data area */
-
-.Lsdas = .-.LCTOC1
- .long __SDATA_START__ /* start of .sdata/.sbss section */
-
-.Lsdae = .-.LCTOC1
- .long __SBSS_END__ /* end of .sdata/.sbss section */
-
-.Lsda2 = .-.LCTOC1
- .long _SDA2_BASE_ /* address of the second small data area */
-
-.Lsda2s = .-.LCTOC1
- .long __SDATA2_START__ /* start of .sdata2/.sbss2 section */
-
-.Lsda2e = .-.LCTOC1
- .long __SBSS2_END__ /* end of .sdata2/.sbss2 section */
-
-#ifdef _RELOCATABLE
-.Lgots = .-.LCTOC1
- .long __GOT_START__ /* Global offset table start */
-
-.Lgotm1 = .-.LCTOC1
- .long _GLOBAL_OFFSET_TABLE_-4 /* end of GOT ptrs before BLCL + 3 reserved words */
-
-.Lgotm2 = .-.LCTOC1
- .long _GLOBAL_OFFSET_TABLE_+12 /* start of GOT ptrs after BLCL + 3 reserved words */
-
-.Lgote = .-.LCTOC1
- .long __GOT_END__ /* Global offset table end */
-
-.Lgot2s = .-.LCTOC1
- .long __GOT2_START__ /* -mrelocatable GOT pointers start */
-
-.Lgot2e = .-.LCTOC1
- .long __GOT2_END__ /* -mrelocatable GOT pointers end */
-
-.Lfixups = .-.LCTOC1
- .long __FIXUP_START__ /* start of .fixup section */
-
-.Lfixupe = .-.LCTOC1
- .long __FIXUP_END__ /* end of .fixup section */
-
-.Lctors = .-.LCTOC1
- .long __CTOR_LIST__ /* start of .ctor section */
-
-.Lctore = .-.LCTOC1
- .long __CTOR_END__ /* end of .ctor section */
-
-.Ldtors = .-.LCTOC1
- .long __DTOR_LIST__ /* start of .dtor section */
-
-.Ldtore = .-.LCTOC1
- .long __DTOR_END__ /* end of .dtor section */
-
-.Lexcepts = .-.LCTOC1
- .long __EXCEPT_START__ /* start of .gcc_except_table section */
-
-.Lexcepte = .-.LCTOC1
- .long __EXCEPT_END__ /* end of .gcc_except_table section */
-
-.Linit = .-.LCTOC1
- .long .Linit_p /* address of variable to say we've been called */
-
- .text
- .align 2
-.Lptr:
- .long .LCTOC1-.Laddr /* PC relative pointer to .got2 */
-#endif
-
- .data
- .align 2
-.Linit_p:
- .long 0
-
- .text
-
-FUNC_START(__eabi)
-
-/* Eliminate -mrelocatable code if not -mrelocatable, so that this file can
- be assembled with other assemblers than GAS. */
-
-#ifndef _RELOCATABLE
- addis 10,0,.Linit_p@ha /* init flag */
- addis 11,0,.LCTOC1@ha /* load address of .LCTOC1 */
- lwz 9,.Linit_p@l(10) /* init flag */
- addi 11,11,.LCTOC1@l
- cmplwi 2,9,0 /* init flag != 0? */
- bnelr 2 /* return now, if we've been called already */
- stw 1,.Linit_p@l(10) /* store a nonzero value in the done flag */
-
-#else /* -mrelocatable */
- mflr 0
- bl .Laddr /* get current address */
-.Laddr:
- mflr 12 /* real address of .Laddr */
- lwz 11,(.Lptr-.Laddr)(12) /* linker generated address of .LCTOC1 */
- add 11,11,12 /* correct to real pointer */
- lwz 12,.Ltable(11) /* get linker's idea of where .Laddr is */
- lwz 10,.Linit(11) /* address of init flag */
- subf. 12,12,11 /* calculate difference */
- lwzx 9,10,12 /* done flag */
- cmplwi 2,9,0 /* init flag != 0? */
- mtlr 0 /* restore in case branch was taken */
- bnelr 2 /* return now, if we've been called already */
- stwx 1,10,12 /* store a nonzero value in the done flag */
- beq+ 0,.Lsdata /* skip if we don't need to relocate */
-
-/* We need to relocate the .got2 pointers. */
-
- lwz 3,.Lgot2s(11) /* GOT2 pointers start */
- lwz 4,.Lgot2e(11) /* GOT2 pointers end */
- add 3,12,3 /* adjust pointers */
- add 4,12,4
- bl FUNC_NAME(__eabi_convert) /* convert pointers in .got2 section */
-
-/* Fixup the .ctor section for static constructors */
-
- lwz 3,.Lctors(11) /* constructors pointers start */
- lwz 4,.Lctore(11) /* constructors pointers end */
- bl FUNC_NAME(__eabi_convert) /* convert constructors */
-
-/* Fixup the .dtor section for static destructors */
-
- lwz 3,.Ldtors(11) /* destructors pointers start */
- lwz 4,.Ldtore(11) /* destructors pointers end */
- bl FUNC_NAME(__eabi_convert) /* convert destructors */
-
-/* Fixup the .gcc_except_table section for G++ exceptions */
-
- lwz 3,.Lexcepts(11) /* exception table pointers start */
- lwz 4,.Lexcepte(11) /* exception table pointers end */
- bl FUNC_NAME(__eabi_convert) /* convert exceptions */
-
-/* Fixup the addresses in the GOT below _GLOBAL_OFFSET_TABLE_-4 */
-
- lwz 3,.Lgots(11) /* GOT table pointers start */
- lwz 4,.Lgotm1(11) /* GOT table pointers below _GLOBAL_OFFSET_TABLE-4 */
- bl FUNC_NAME(__eabi_convert) /* convert lower GOT */
-
-/* Fixup the addresses in the GOT above _GLOBAL_OFFSET_TABLE_+12 */
-
- lwz 3,.Lgotm2(11) /* GOT table pointers above _GLOBAL_OFFSET_TABLE+12 */
- lwz 4,.Lgote(11) /* GOT table pointers end */
- bl FUNC_NAME(__eabi_convert) /* convert lower GOT */
-
-/* Fixup any user initialized pointers now (the compiler drops pointers to */
-/* each of the relocs that it does in the .fixup section). */
-
-.Lfix:
- lwz 3,.Lfixups(11) /* fixup pointers start */
- lwz 4,.Lfixupe(11) /* fixup pointers end */
- bl FUNC_NAME(__eabi_uconvert) /* convert user initialized pointers */
-
-.Lsdata:
- mtlr 0 /* restore link register */
-#endif /* _RELOCATABLE */
-
-/* Only load up register 13 if there is a .sdata and/or .sbss section */
- lwz 3,.Lsdas(11) /* start of .sdata/.sbss section */
- lwz 4,.Lsdae(11) /* end of .sdata/.sbss section */
- cmpw 1,3,4 /* .sdata/.sbss section non-empty? */
- beq- 1,.Lsda2l /* skip loading r13 */
-
- lwz 13,.Lsda(11) /* load r13 with _SDA_BASE_ address */
-
-/* Only load up register 2 if there is a .sdata2 and/or .sbss2 section */
-
-.Lsda2l:
- lwz 3,.Lsda2s(11) /* start of .sdata/.sbss section */
- lwz 4,.Lsda2e(11) /* end of .sdata/.sbss section */
- cmpw 1,3,4 /* .sdata/.sbss section non-empty? */
- beq+ 1,.Ldone /* skip loading r2 */
-
- lwz 2,.Lsda2(11) /* load r2 with _SDA2_BASE_ address */
-
-/* Done adjusting pointers, return by way of doing the C++ global constructors. */
-
-.Ldone:
- b FUNC_NAME(__init) /* do any C++ global constructors (which returns to caller) */
-FUNC_END(__eabi)
-
-/* Special subroutine to convert a bunch of pointers directly.
- r0 has original link register
- r3 has low pointer to convert
- r4 has high pointer to convert
- r5 .. r10 are scratch registers
- r11 has the address of .LCTOC1 in it.
- r12 has the value to add to each pointer
- r13 .. r31 are unchanged */
-#ifdef _RELOCATABLE
-FUNC_START(__eabi_convert)
- cmplw 1,3,4 /* any pointers to convert? */
- subf 5,3,4 /* calculate number of words to convert */
- bclr 4,4 /* return if no pointers */
-
- srawi 5,5,2
- addi 3,3,-4 /* start-4 for use with lwzu */
- mtctr 5
-
-.Lcvt:
- lwzu 6,4(3) /* pointer to convert */
- cmpwi 0,6,0
- beq- .Lcvt2 /* if pointer is null, don't convert */
-
- add 6,6,12 /* convert pointer */
- stw 6,0(3)
-.Lcvt2:
- bdnz+ .Lcvt
- blr
-
-FUNC_END(__eabi_convert)
-
-/* Special subroutine to convert the pointers the user has initialized. The
- compiler has placed the address of the initialized pointer into the .fixup
- section.
-
- r0 has original link register
- r3 has low pointer to convert
- r4 has high pointer to convert
- r5 .. r10 are scratch registers
- r11 has the address of .LCTOC1 in it.
- r12 has the value to add to each pointer
- r13 .. r31 are unchanged */
-
-FUNC_START(__eabi_uconvert)
- cmplw 1,3,4 /* any pointers to convert? */
- subf 5,3,4 /* calculate number of words to convert */
- bclr 4,4 /* return if no pointers */
-
- srawi 5,5,2
- addi 3,3,-4 /* start-4 for use with lwzu */
- mtctr 5
-
-.Lucvt:
- lwzu 6,4(3) /* next pointer to pointer to convert */
- add 6,6,12 /* adjust pointer */
- lwz 7,0(6) /* get the pointer it points to */
- stw 6,0(3) /* store adjusted pointer */
- add 7,7,12 /* adjust */
- stw 7,0(6)
- bdnz+ .Lucvt
- blr
-
-FUNC_END(__eabi_uconvert)
-#endif
-#endif
diff --git a/gcc/config/rs6000/t-aix43 b/gcc/config/rs6000/t-aix43
index ebd898d1784..97ce70ecca3 100644
--- a/gcc/config/rs6000/t-aix43
+++ b/gcc/config/rs6000/t-aix43
@@ -44,6 +44,3 @@ MULTILIB_MATCHES = mcpu?power=mcpu?power \
mcpu?powerpc=mcpu?604e \
mcpu?powerpc=mcpu?620 \
mcpu?powerpc=mcpu?630
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/rs6000/t-aix52 b/gcc/config/rs6000/t-aix52
index 3822b8a112c..f3bf78d3630 100644
--- a/gcc/config/rs6000/t-aix52
+++ b/gcc/config/rs6000/t-aix52
@@ -25,6 +25,3 @@ MULTILIB_OPTIONS = pthread maix64
MULTILIB_DIRNAMES = pthread ppc64
MULTILIB_MATCHES =
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/rs6000/t-darwin b/gcc/config/rs6000/t-darwin
deleted file mode 100644
index bedd9e6ff9c..00000000000
--- a/gcc/config/rs6000/t-darwin
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006,
-# 2007, 2011 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-LIB2FUNCS_EXTRA = $(srcdir)/config/rs6000/darwin-tramp.asm \
- $(srcdir)/config/darwin-64.c \
- $(srcdir)/config/rs6000/darwin-fpsave.asm \
- $(srcdir)/config/rs6000/darwin-gpsave.asm \
- $(srcdir)/config/rs6000/darwin-world.asm
-
-LIB2FUNCS_STATIC_EXTRA = \
- $(srcdir)/config/rs6000/darwin-vecsave.asm
-
-# The .asm files above are designed to run on all processors, even though
-# they use AltiVec instructions.
-# -Wa is used because -force_cpusubtype_ALL doesn't work with -dynamiclib.
-# -mmacosx-version-min=10.4 is used to provide compatibility for code from
-# earlier OSX versions.
-
-TARGET_LIBGCC2_CFLAGS += -Wa,-force_cpusubtype_ALL -mmacosx-version-min=10.4
-
-darwin-fpsave.o: $(srcdir)/config/rs6000/darwin-asm.h
-darwin-gpsave.o: $(srcdir)/config/rs6000/darwin-asm.h
-darwin-tramp.o: $(srcdir)/config/rs6000/darwin-asm.h
diff --git a/gcc/config/rs6000/t-darwin64 b/gcc/config/rs6000/t-darwin64
index 4c50b243873..b0a04c7d89d 100644
--- a/gcc/config/rs6000/t-darwin64
+++ b/gcc/config/rs6000/t-darwin64
@@ -1,11 +1,2 @@
-LIB2_SIDITI_CONV_FUNCS=yes
-
-LIB2FUNCS_EXTRA = $(srcdir)/config/rs6000/darwin-tramp.asm \
- $(srcdir)/config/darwin-64.c \
- $(srcdir)/config/rs6000/darwin-world.asm
-
MULTILIB_OPTIONS = m32
MULTILIB_DIRNAMES = ppc
-
-#LIBGCC = stmp-multilib
-#INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/rs6000/t-fprules b/gcc/config/rs6000/t-fprules
index 42d8fd77b5b..913bbbdae69 100644
--- a/gcc/config/rs6000/t-fprules
+++ b/gcc/config/rs6000/t-fprules
@@ -1,4 +1,4 @@
-# Copyright (C) 2002, 2005, 2006, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2005, 2006, 2008, 2011 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
@@ -33,6 +33,3 @@ MULTILIB_MATCHES_FLOAT = msoft-float=mcpu?401 \
MULTILIB_OPTIONS = msoft-float
MULTILIB_DIRNAMES = soft-float
MULTILIB_MATCHES = ${MULTILIB_MATCHES_FLOAT}
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/rs6000/t-linux64 b/gcc/config/rs6000/t-linux64
index bd01d319212..6420431214d 100644
--- a/gcc/config/rs6000/t-linux64
+++ b/gcc/config/rs6000/t-linux64
@@ -19,8 +19,6 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-TARGET_LIBGCC2_CFLAGS += -mno-minimal-toc
-
# On Debian, Ubuntu and other derivative distributions, the 32bit libraries
# are found in /lib32 and /usr/lib32, /lib64 and /usr/lib64 are symlinks to
# /lib and /usr/lib, while other distributions install libraries into /lib64
diff --git a/gcc/config/rs6000/t-lynx b/gcc/config/rs6000/t-lynx
index 8eef22351a3..fdc5b56daed 100644
--- a/gcc/config/rs6000/t-lynx
+++ b/gcc/config/rs6000/t-lynx
@@ -16,14 +16,6 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-LIB2FUNCS_EXTRA = tramp.S
-
-tramp.S: $(srcdir)/config/rs6000/tramp.asm
- cat $(srcdir)/config/rs6000/tramp.asm > tramp.S
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
-
MULTILIB_OPTIONS += msoft-float
MULTILIB_DIRNAMES += soft-float
diff --git a/gcc/config/rs6000/t-netbsd b/gcc/config/rs6000/t-netbsd
index bde74190328..462f0ce7536 100644
--- a/gcc/config/rs6000/t-netbsd
+++ b/gcc/config/rs6000/t-netbsd
@@ -18,33 +18,6 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-LIB2FUNCS_EXTRA = tramp.S
-
-LIB2FUNCS_STATIC_EXTRA = crtsavfpr.S crtresfpr.S \
- crtsavgpr.S crtresgpr.S \
- crtresxfpr.S crtresxgpr.S
-
-tramp.S: $(srcdir)/config/rs6000/tramp.asm
- cat $(srcdir)/config/rs6000/tramp.asm > tramp.S
-
-crtsavfpr.S: $(srcdir)/config/rs6000/crtsavfpr.asm
- cat $(srcdir)/config/rs6000/crtsavfpr.asm >crtsavfpr.S
-
-crtresfpr.S: $(srcdir)/config/rs6000/crtresfpr.asm
- cat $(srcdir)/config/rs6000/crtresfpr.asm >crtresfpr.S
-
-crtsavgpr.S: $(srcdir)/config/rs6000/crtsavgpr.asm
- cat $(srcdir)/config/rs6000/crtsavgpr.asm >crtsavgpr.S
-
-crtresgpr.S: $(srcdir)/config/rs6000/crtresgpr.asm
- cat $(srcdir)/config/rs6000/crtresgpr.asm >crtresgpr.S
-
-crtresxfpr.S: $(srcdir)/config/rs6000/crtresxfpr.asm
- cat $(srcdir)/config/rs6000/crtresxfpr.asm >crtresxfpr.S
-
-crtresxgpr.S: $(srcdir)/config/rs6000/crtresxgpr.asm
- cat $(srcdir)/config/rs6000/crtresxgpr.asm >crtresxgpr.S
-
# Switch synonyms
MULTILIB_MATCHES_FLOAT = msoft-float=mcpu?401 \
msoft-float=mcpu?403 \
@@ -61,24 +34,3 @@ MULTILIB_EXTRA_OPTS = fPIC mstrict-align
MULTILIB_EXCEPTIONS =
MULTILIB_MATCHES = ${MULTILIB_MATCHES_FLOAT}
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
-
-$(T)crtsavfpr$(objext): crtsavfpr.S
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtsavfpr.S -o $(T)crtsavfpr$(objext)
-
-$(T)crtresfpr$(objext): crtresfpr.S
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtresfpr.S -o $(T)crtresfpr$(objext)
-
-$(T)crtsavgpr$(objext): crtsavgpr.S
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtsavgpr.S -o $(T)crtsavgpr$(objext)
-
-$(T)crtresgpr$(objext): crtresgpr.S
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtresgpr.S -o $(T)crtresgpr$(objext)
-
-$(T)crtresxfpr$(objext): crtresxfpr.S
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtresxfpr.S -o $(T)crtresxfpr$(objext)
-
-$(T)crtresxgpr$(objext): crtresxgpr.S
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c crtresxgpr.S -o $(T)crtresxgpr$(objext)
diff --git a/gcc/config/rs6000/t-ppccomm b/gcc/config/rs6000/t-ppccomm
index 89716bc08c4..81ab7effa42 100644
--- a/gcc/config/rs6000/t-ppccomm
+++ b/gcc/config/rs6000/t-ppccomm
@@ -19,17 +19,6 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-LIB2FUNCS_EXTRA += tramp.S
-
-# These can't end up in shared libgcc
-LIB2FUNCS_STATIC_EXTRA = eabi.S
-
-eabi.S: $(srcdir)/config/rs6000/eabi.asm
- cat $(srcdir)/config/rs6000/eabi.asm > eabi.S
-
-tramp.S: $(srcdir)/config/rs6000/tramp.asm
- cat $(srcdir)/config/rs6000/tramp.asm > tramp.S
-
# Switch synonyms
MULTILIB_MATCHES_ENDIAN = mlittle=mlittle-endian mbig=mbig-endian
MULTILIB_MATCHES_SYSV = mcall-sysv=mcall-sysv-eabi mcall-sysv=mcall-sysv-noeabi mcall-sysv=mcall-linux mcall-sysv=mcall-netbsd
diff --git a/gcc/config/rs6000/t-spe b/gcc/config/rs6000/t-spe
index cbbac79f661..1bed1e32b0e 100644
--- a/gcc/config/rs6000/t-spe
+++ b/gcc/config/rs6000/t-spe
@@ -18,9 +18,6 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
-
# What we really want are these variants:
# -mcpu=7400
# -mcpu=7400 -maltivec -mabi=altivec
diff --git a/gcc/config/rs6000/t-vxworks b/gcc/config/rs6000/t-vxworks
index e6c67d731ec..c0128ed845f 100644
--- a/gcc/config/rs6000/t-vxworks
+++ b/gcc/config/rs6000/t-vxworks
@@ -1,6 +1,6 @@
# Multilibs for VxWorks.
#
-# Copyright (C) 2002, 2005, 2006 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2005, 2006, 2011 Free Software Foundation, Inc.
#
# This file is part of GCC.
#
@@ -23,8 +23,3 @@ MULTILIB_OPTIONS = mrtp fPIC msoft-float
MULTILIB_DIRNAMES =
MULTILIB_MATCHES = fPIC=fpic
MULTILIB_EXCEPTIONS = fPIC*
-
-# Similarily, LIB2FUNCS_EXTRA is set from config/t-vxworks and
-# t-ppccomm *adds* to it, but the common contents are useful to us.
-# In particular the base trampoline_setup bits are expected to be
-# provided there.
diff --git a/gcc/config/rs6000/tramp.asm b/gcc/config/rs6000/tramp.asm
deleted file mode 100644
index 133b98840f1..00000000000
--- a/gcc/config/rs6000/tramp.asm
+++ /dev/null
@@ -1,107 +0,0 @@
-/* Special support for trampolines
- *
- * Copyright (C) 1996, 1997, 2000, 2007, 2008, 2009 Free Software Foundation, Inc.
- * Written By Michael Meissner
- *
- * This file is free software; you can redistribute it and/or modify it
- * under the terms of the GNU General Public License as published by the
- * Free Software Foundation; either version 3, or (at your option) any
- * later version.
- *
- * This file 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
- * General Public License for more details.
- *
- * Under Section 7 of GPL version 3, you are granted additional
- * permissions described in the GCC Runtime Library Exception, version
- * 3.1, as published by the Free Software Foundation.
- *
- * You should have received a copy of the GNU General Public License and
- * a copy of the GCC Runtime Library Exception along with this program;
- * see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- * <http://www.gnu.org/licenses/>.
- */
-
-/* Set up trampolines. */
-
- .section ".text"
-#include "ppc-asm.h"
-#include "config.h"
-
-#ifndef __powerpc64__
- .type trampoline_initial,@object
- .align 2
-trampoline_initial:
- mflr r0
- bcl 20,31,1f
-.Lfunc = .-trampoline_initial
- .long 0 /* will be replaced with function address */
-.Lchain = .-trampoline_initial
- .long 0 /* will be replaced with static chain */
-1: mflr r11
- mtlr r0
- lwz r0,0(r11) /* function address */
- lwz r11,4(r11) /* static chain */
- mtctr r0
- bctr
-
-trampoline_size = .-trampoline_initial
- .size trampoline_initial,trampoline_size
-
-
-/* R3 = stack address to store trampoline */
-/* R4 = length of trampoline area */
-/* R5 = function address */
-/* R6 = static chain */
-
-FUNC_START(__trampoline_setup)
- mflr r0 /* save return address */
- bcl 20,31,.LCF0 /* load up __trampoline_initial into r7 */
-.LCF0:
- mflr r11
- addi r7,r11,trampoline_initial-4-.LCF0 /* trampoline address -4 */
-
- li r8,trampoline_size /* verify that the trampoline is big enough */
- cmpw cr1,r8,r4
- srwi r4,r4,2 /* # words to move */
- addi r9,r3,-4 /* adjust pointer for lwzu */
- mtctr r4
- blt cr1,.Labort
-
- mtlr r0
-
- /* Copy the instructions to the stack */
-.Lmove:
- lwzu r10,4(r7)
- stwu r10,4(r9)
- bdnz .Lmove
-
- /* Store correct function and static chain */
- stw r5,.Lfunc(r3)
- stw r6,.Lchain(r3)
-
- /* Now flush both caches */
- mtctr r4
-.Lcache:
- icbi 0,r3
- dcbf 0,r3
- addi r3,r3,4
- bdnz .Lcache
-
- /* Finally synchronize things & return */
- sync
- isync
- blr
-
-.Labort:
-#if (defined __PIC__ || defined __pic__) && defined HAVE_AS_REL16
- bcl 20,31,1f
-1: mflr r30
- addis r30,r30,_GLOBAL_OFFSET_TABLE_-1b@ha
- addi r30,r30,_GLOBAL_OFFSET_TABLE_-1b@l
-#endif
- bl JUMP_TARGET(abort)
-FUNC_END(__trampoline_setup)
-
-#endif
diff --git a/gcc/config/rx/t-rx b/gcc/config/rx/t-rx
index 9d282b66b1a..9a5dca9056a 100644
--- a/gcc/config/rx/t-rx
+++ b/gcc/config/rx/t-rx
@@ -27,6 +27,3 @@ MULTILIB_MATCHES = nofpu=mnofpu nofpu=mcpu?rx200
MULTILIB_EXCEPTIONS =
MULTILIB_EXTRA_OPTS =
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/sh/linux-atomic.asm b/gcc/config/sh/linux-atomic.asm
deleted file mode 100644
index 743c61bb76c..00000000000
--- a/gcc/config/sh/linux-atomic.asm
+++ /dev/null
@@ -1,223 +0,0 @@
-/* Copyright (C) 2006, 2008, 2009 Free Software Foundation, Inc.
-
- This file is part of GCC.
-
- GCC is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 3, or (at your option)
- any later version.
-
- GCC 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 General Public License for more details.
-
- Under Section 7 of GPL version 3, you are granted additional
- permissions described in the GCC Runtime Library Exception, version
- 3.1, as published by the Free Software Foundation.
-
- You should have received a copy of the GNU General Public License and
- a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
-
-!! Linux specific atomic routines for the Renesas / SuperH SH CPUs.
-!! Linux kernel for SH3/4 has implemented the support for software
-!! atomic sequences.
-
-#define FUNC(X) .type X,@function
-#define HIDDEN_FUNC(X) FUNC(X); .hidden X
-#define ENDFUNC0(X) .Lfe_##X: .size X,.Lfe_##X-X
-#define ENDFUNC(X) ENDFUNC0(X)
-
-#if ! __SH5__
-
-#define ATOMIC_TEST_AND_SET(N,T,EXT) \
- .global __sync_lock_test_and_set_##N; \
- HIDDEN_FUNC(__sync_lock_test_and_set_##N); \
- .align 2; \
-__sync_lock_test_and_set_##N:; \
- mova 1f, r0; \
- nop; \
- mov r15, r1; \
- mov #(0f-1f), r15; \
-0: mov.##T @r4, r2; \
- mov.##T r5, @r4; \
-1: mov r1, r15; \
- rts; \
- EXT r2, r0; \
- ENDFUNC(__sync_lock_test_and_set_##N)
-
-ATOMIC_TEST_AND_SET (1,b,extu.b)
-ATOMIC_TEST_AND_SET (2,w,extu.w)
-ATOMIC_TEST_AND_SET (4,l,mov)
-
-#define ATOMIC_COMPARE_AND_SWAP(N,T,EXTS,EXT) \
- .global __sync_val_compare_and_swap_##N; \
- HIDDEN_FUNC(__sync_val_compare_and_swap_##N); \
- .align 2; \
-__sync_val_compare_and_swap_##N:; \
- mova 1f, r0; \
- EXTS r5, r5; \
- mov r15, r1; \
- mov #(0f-1f), r15; \
-0: mov.##T @r4, r2; \
- cmp/eq r2, r5; \
- bf 1f; \
- mov.##T r6, @r4; \
-1: mov r1, r15; \
- rts; \
- EXT r2, r0; \
- ENDFUNC(__sync_val_compare_and_swap_##N)
-
-ATOMIC_COMPARE_AND_SWAP (1,b,exts.b,extu.b)
-ATOMIC_COMPARE_AND_SWAP (2,w,exts.w,extu.w)
-ATOMIC_COMPARE_AND_SWAP (4,l,mov,mov)
-
-#define ATOMIC_BOOL_COMPARE_AND_SWAP(N,T,EXTS) \
- .global __sync_bool_compare_and_swap_##N; \
- HIDDEN_FUNC(__sync_bool_compare_and_swap_##N); \
- .align 2; \
-__sync_bool_compare_and_swap_##N:; \
- mova 1f, r0; \
- EXTS r5, r5; \
- mov r15, r1; \
- mov #(0f-1f), r15; \
-0: mov.##T @r4, r2; \
- cmp/eq r2, r5; \
- bf 1f; \
- mov.##T r6, @r4; \
-1: mov r1, r15; \
- rts; \
- movt r0; \
- ENDFUNC(__sync_bool_compare_and_swap_##N)
-
-ATOMIC_BOOL_COMPARE_AND_SWAP (1,b,exts.b)
-ATOMIC_BOOL_COMPARE_AND_SWAP (2,w,exts.w)
-ATOMIC_BOOL_COMPARE_AND_SWAP (4,l,mov)
-
-#define ATOMIC_FETCH_AND_OP(OP,N,T,EXT) \
- .global __sync_fetch_and_##OP##_##N; \
- HIDDEN_FUNC(__sync_fetch_and_##OP##_##N); \
- .align 2; \
-__sync_fetch_and_##OP##_##N:; \
- mova 1f, r0; \
- nop; \
- mov r15, r1; \
- mov #(0f-1f), r15; \
-0: mov.##T @r4, r2; \
- mov r5, r3; \
- OP r2, r3; \
- mov.##T r3, @r4; \
-1: mov r1, r15; \
- rts; \
- EXT r2, r0; \
- ENDFUNC(__sync_fetch_and_##OP##_##N)
-
-ATOMIC_FETCH_AND_OP(add,1,b,extu.b)
-ATOMIC_FETCH_AND_OP(add,2,w,extu.w)
-ATOMIC_FETCH_AND_OP(add,4,l,mov)
-
-ATOMIC_FETCH_AND_OP(or,1,b,extu.b)
-ATOMIC_FETCH_AND_OP(or,2,w,extu.w)
-ATOMIC_FETCH_AND_OP(or,4,l,mov)
-
-ATOMIC_FETCH_AND_OP(and,1,b,extu.b)
-ATOMIC_FETCH_AND_OP(and,2,w,extu.w)
-ATOMIC_FETCH_AND_OP(and,4,l,mov)
-
-ATOMIC_FETCH_AND_OP(xor,1,b,extu.b)
-ATOMIC_FETCH_AND_OP(xor,2,w,extu.w)
-ATOMIC_FETCH_AND_OP(xor,4,l,mov)
-
-#define ATOMIC_FETCH_AND_COMBOP(OP,OP0,OP1,N,T,EXT) \
- .global __sync_fetch_and_##OP##_##N; \
- HIDDEN_FUNC(__sync_fetch_and_##OP##_##N); \
- .align 2; \
-__sync_fetch_and_##OP##_##N:; \
- mova 1f, r0; \
- mov r15, r1; \
- mov #(0f-1f), r15; \
-0: mov.##T @r4, r2; \
- mov r5, r3; \
- OP0 r2, r3; \
- OP1 r3, r3; \
- mov.##T r3, @r4; \
-1: mov r1, r15; \
- rts; \
- EXT r2, r0; \
- ENDFUNC(__sync_fetch_and_##OP##_##N)
-
-ATOMIC_FETCH_AND_COMBOP(sub,sub,neg,1,b,extu.b)
-ATOMIC_FETCH_AND_COMBOP(sub,sub,neg,2,w,extu.w)
-ATOMIC_FETCH_AND_COMBOP(sub,sub,neg,4,l,mov)
-
-ATOMIC_FETCH_AND_COMBOP(nand,and,not,1,b,extu.b)
-ATOMIC_FETCH_AND_COMBOP(nand,and,not,2,w,extu.w)
-ATOMIC_FETCH_AND_COMBOP(nand,and,not,4,l,mov)
-
-#define ATOMIC_OP_AND_FETCH(OP,N,T,EXT) \
- .global __sync_##OP##_and_fetch_##N; \
- HIDDEN_FUNC(__sync_##OP##_and_fetch_##N); \
- .align 2; \
-__sync_##OP##_and_fetch_##N:; \
- mova 1f, r0; \
- nop; \
- mov r15, r1; \
- mov #(0f-1f), r15; \
-0: mov.##T @r4, r2; \
- mov r5, r3; \
- OP r2, r3; \
- mov.##T r3, @r4; \
-1: mov r1, r15; \
- rts; \
- EXT r3, r0; \
- ENDFUNC(__sync_##OP##_and_fetch_##N)
-
-ATOMIC_OP_AND_FETCH(add,1,b,extu.b)
-ATOMIC_OP_AND_FETCH(add,2,w,extu.w)
-ATOMIC_OP_AND_FETCH(add,4,l,mov)
-
-ATOMIC_OP_AND_FETCH(or,1,b,extu.b)
-ATOMIC_OP_AND_FETCH(or,2,w,extu.w)
-ATOMIC_OP_AND_FETCH(or,4,l,mov)
-
-ATOMIC_OP_AND_FETCH(and,1,b,extu.b)
-ATOMIC_OP_AND_FETCH(and,2,w,extu.w)
-ATOMIC_OP_AND_FETCH(and,4,l,mov)
-
-ATOMIC_OP_AND_FETCH(xor,1,b,extu.b)
-ATOMIC_OP_AND_FETCH(xor,2,w,extu.w)
-ATOMIC_OP_AND_FETCH(xor,4,l,mov)
-
-#define ATOMIC_COMBOP_AND_FETCH(OP,OP0,OP1,N,T,EXT) \
- .global __sync_##OP##_and_fetch_##N; \
- HIDDEN_FUNC(__sync_##OP##_and_fetch_##N); \
- .align 2; \
-__sync_##OP##_and_fetch_##N:; \
- mova 1f, r0; \
- mov r15, r1; \
- mov #(0f-1f), r15; \
-0: mov.##T @r4, r2; \
- mov r5, r3; \
- OP0 r2, r3; \
- OP1 r3, r3; \
- mov.##T r3, @r4; \
-1: mov r1, r15; \
- rts; \
- EXT r3, r0; \
- ENDFUNC(__sync_##OP##_and_fetch_##N)
-
-ATOMIC_COMBOP_AND_FETCH(sub,sub,neg,1,b,extu.b)
-ATOMIC_COMBOP_AND_FETCH(sub,sub,neg,2,w,extu.w)
-ATOMIC_COMBOP_AND_FETCH(sub,sub,neg,4,l,mov)
-
-ATOMIC_COMBOP_AND_FETCH(nand,and,not,1,b,extu.b)
-ATOMIC_COMBOP_AND_FETCH(nand,and,not,2,w,extu.w)
-ATOMIC_COMBOP_AND_FETCH(nand,and,not,4,l,mov)
-
-.section .note.GNU-stack,"",%progbits
-.previous
-
-#endif /* ! __SH5__ */
diff --git a/gcc/config/sh/t-linux b/gcc/config/sh/t-linux
index 2304fb176cb..d33c6383915 100644
--- a/gcc/config/sh/t-linux
+++ b/gcc/config/sh/t-linux
@@ -1,4 +1,2 @@
-LIB2FUNCS_EXTRA= $(srcdir)/config/sh/linux-atomic.asm
-
MULTILIB_DIRNAMES=
MULTILIB_MATCHES =
diff --git a/gcc/config/sh/t-netbsd b/gcc/config/sh/t-netbsd
deleted file mode 100644
index dea1c478cb5..00000000000
--- a/gcc/config/sh/t-netbsd
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 2002, 2004, 2009, 2011 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-TARGET_LIBGCC2_CFLAGS = -fpic -mieee
-
-LIB2FUNCS_EXTRA=
diff --git a/gcc/config/sh/t-sh b/gcc/config/sh/t-sh
index 56ea83e0697..1d305ee5193 100644
--- a/gcc/config/sh/t-sh
+++ b/gcc/config/sh/t-sh
@@ -22,8 +22,6 @@ sh-c.o: $(srcdir)/config/sh/sh-c.c \
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
$(srcdir)/config/sh/sh-c.c
-TARGET_LIBGCC2_CFLAGS = -mieee
-
DEFAULT_ENDIAN = $(word 1,$(TM_ENDIAN_CONFIG))
OTHER_ENDIAN = $(word 2,$(TM_ENDIAN_CONFIG))
@@ -84,9 +82,6 @@ MULTILIB_OSDIRNAMES = \
m5-64media=!m5-64media $(OTHER_ENDIAN)/m5-64media=!$(OTHER_ENDIAN)/m5-64media \
m5-64media-nofpu=!m5-64media-nofpu $(OTHER_ENDIAN)/m5-64media-nofpu=!$(OTHER_ENDIAN)/m5-64media-nofpu
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
-
$(out_object_file): gt-sh.h
gt-sh.h : s-gtype ; @true
diff --git a/gcc/config/sparc/t-elf b/gcc/config/sparc/t-elf
index be926585481..e9acfe3693e 100644
--- a/gcc/config/sparc/t-elf
+++ b/gcc/config/sparc/t-elf
@@ -20,6 +20,3 @@
MULTILIB_OPTIONS = msoft-float mcpu=v8 mflat
MULTILIB_DIRNAMES = soft v8 flat
MULTILIB_MATCHES = msoft-float=mno-fpu
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/sparc/t-leon b/gcc/config/sparc/t-leon
index 8e5e30f7ff7..25fc61136a9 100644
--- a/gcc/config/sparc/t-leon
+++ b/gcc/config/sparc/t-leon
@@ -22,6 +22,3 @@
MULTILIB_OPTIONS = mcpu=v7 msoft-float mflat
MULTILIB_DIRNAMES = v7 soft flat
MULTILIB_MATCHES = mcpu?v7=mv7 msoft-float=mno-fpu
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/sparc/t-leon3 b/gcc/config/sparc/t-leon3
index 0e7e45cc594..acdd1f2c67b 100644
--- a/gcc/config/sparc/t-leon3
+++ b/gcc/config/sparc/t-leon3
@@ -20,6 +20,3 @@
MULTILIB_OPTIONS = msoft-float
MULTILIB_DIRNAMES = soft
MULTILIB_MATCHES = msoft-float=mno-fpu
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/sparc/t-linux64 b/gcc/config/sparc/t-linux64
index 7d5781d32ed..d9dfad66ce7 100644
--- a/gcc/config/sparc/t-linux64
+++ b/gcc/config/sparc/t-linux64
@@ -27,6 +27,3 @@
MULTILIB_OPTIONS = m64/m32
MULTILIB_DIRNAMES = 64 32
MULTILIB_OSDIRNAMES = ../lib64 $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)
-
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/sparc/t-netbsd64 b/gcc/config/sparc/t-netbsd64
index 0fddb0ffe87..bc783c19366 100644
--- a/gcc/config/sparc/t-netbsd64
+++ b/gcc/config/sparc/t-netbsd64
@@ -1,8 +1,5 @@
-# Disable multilib fow now, as NetBSD/sparc64 does not ship with
+# Disable multilib for now, as NetBSD/sparc64 does not ship with
# a 32-bit environment.
#MULTILIB_OPTIONS = m32/m64
#MULTILIB_DIRNAMES = 32 64
#MULTILIB_MATCHES =
-
-#LIBGCC = stmp-multilib
-#INSTALL_LIBGCC = install-multilib
diff --git a/gcc/config/spu/divmodti4.c b/gcc/config/spu/divmodti4.c
deleted file mode 100644
index 57c975c6b3c..00000000000
--- a/gcc/config/spu/divmodti4.c
+++ /dev/null
@@ -1,188 +0,0 @@
-/* Copyright (C) 2008, 2009 Free Software Foundation, Inc.
-
- This file is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free
- Software Foundation; either version 3 of the License, or (at your option)
- any later version.
-
- This file 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 General Public License
- for more details.
-
- Under Section 7 of GPL version 3, you are granted additional
- permissions described in the GCC Runtime Library Exception, version
- 3.1, as published by the Free Software Foundation.
-
- You should have received a copy of the GNU General Public License and
- a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <spu_intrinsics.h>
-
-typedef unsigned int UTItype __attribute__ ((mode (TI)));
-typedef int TItype __attribute__ ((mode (TI)));
-TItype __divti3 (TItype u, TItype v);
-TItype __modti3 (TItype u, TItype v);
-UTItype __udivti3 (UTItype u, UTItype v);
-UTItype __umodti3 (UTItype u, UTItype v);
-UTItype __udivmodti4 (UTItype u, UTItype v, UTItype *w);
-
-union qword_UTItype
- {
- qword q;
- UTItype t;
- };
-
-inline static qword
-si_from_UTItype (UTItype t)
-{
- union qword_UTItype u;
- u.t = t;
- return u.q;
-}
-
-inline static UTItype
-si_to_UTItype (qword q)
-{
- union qword_UTItype u;
- u.q = q;
- return u.t;
-}
-
-inline static unsigned int
-count_leading_zeros (UTItype x)
-{
- qword c = si_clz (*(qword *) & x);
- qword cmp0 = si_cgti (c, 31);
- qword cmp1 = si_and (cmp0, si_shlqbyi (cmp0, 4));
- qword cmp2 = si_and (cmp1, si_shlqbyi (cmp0, 8));
- qword s = si_a (c, si_and (cmp0, si_shlqbyi (c, 4)));
- s = si_a (s, si_and (cmp1, si_shlqbyi (c, 8)));
- s = si_a (s, si_and (cmp2, si_shlqbyi (c, 12)));
- return si_to_uint (s);
-}
-
-/* Based on implementation of udivmodsi4, which is essentially
- * an optimized version of gcc/config/udivmodsi4.c
- clz %7,%2
- clz %4,%1
- il %5,1
- fsmbi %0,0
- sf %7,%4,%7
- ori %3,%1,0
- shl %5,%5,%7
- shl %4,%2,%7
-1: or %8,%0,%5
- rotmi %5,%5,-1
- clgt %6,%4,%3
- sf %7,%4,%3
- rotmi %4,%4,-1
- selb %0,%8,%0,%6
- selb %3,%7,%3,%6
-3: brnz %5,1b
- */
-
-UTItype
-__udivmodti4 (UTItype num, UTItype den, UTItype * rp)
-{
- qword shift =
- si_from_uint (count_leading_zeros (den) - count_leading_zeros (num));
- qword n0 = si_from_UTItype (num);
- qword d0 = si_from_UTItype (den);
- qword bit = si_andi (si_fsmbi (1), 1);
- qword r0 = si_il (0);
- qword m1 = si_fsmbi (0x000f);
- qword mask, r1, n1;
-
- d0 = si_shlqbybi (si_shlqbi (d0, shift), shift);
- bit = si_shlqbybi (si_shlqbi (bit, shift), shift);
-
- do
- {
- r1 = si_or (r0, bit);
-
- // n1 = n0 - d0 in TImode
- n1 = si_bg (d0, n0);
- n1 = si_shlqbyi (n1, 4);
- n1 = si_sf (m1, n1);
- n1 = si_bgx (d0, n0, n1);
- n1 = si_shlqbyi (n1, 4);
- n1 = si_sf (m1, n1);
- n1 = si_bgx (d0, n0, n1);
- n1 = si_shlqbyi (n1, 4);
- n1 = si_sf (m1, n1);
- n1 = si_sfx (d0, n0, n1);
-
- mask = si_fsm (si_cgti (n1, -1));
- r0 = si_selb (r0, r1, mask);
- n0 = si_selb (n0, n1, mask);
- bit = si_rotqmbii (bit, -1);
- d0 = si_rotqmbii (d0, -1);
- }
- while (si_to_uint (si_orx (bit)));
- if (rp)
- *rp = si_to_UTItype (n0);
- return si_to_UTItype (r0);
-}
-
-UTItype
-__udivti3 (UTItype n, UTItype d)
-{
- return __udivmodti4 (n, d, (UTItype *)0);
-}
-
-UTItype
-__umodti3 (UTItype n, UTItype d)
-{
- UTItype w;
- __udivmodti4 (n, d, &w);
- return w;
-}
-
-TItype
-__divti3 (TItype n, TItype d)
-{
- int c = 0;
- TItype w;
-
- if (n < 0)
- {
- c = ~c;
- n = -n;
- }
- if (d < 0)
- {
- c = ~c;
- d = -d;
- }
-
- w = __udivmodti4 (n, d, (UTItype *)0);
- if (c)
- w = -w;
- return w;
-}
-
-TItype
-__modti3 (TItype n, TItype d)
-{
- int c = 0;
- TItype w;
-
- if (n < 0)
- {
- c = ~c;
- n = -n;
- }
- if (d < 0)
- {
- c = ~c;
- d = -d;
- }
-
- __udivmodti4 (n, d, (UTItype *) &w);
- if (c)
- w = -w;
- return w;
-}
diff --git a/gcc/config/spu/divv2df3.c b/gcc/config/spu/divv2df3.c
deleted file mode 100644
index 9d5e1a594e1..00000000000
--- a/gcc/config/spu/divv2df3.c
+++ /dev/null
@@ -1,195 +0,0 @@
-/* Copyright (C) 2009 Free Software Foundation, Inc.
-
- This file is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free
- Software Foundation; either version 3 of the License, or (at your option)
- any later version.
-
- This file 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 General Public License
- for more details.
-
- Under Section 7 of GPL version 3, you are granted additional
- permissions described in the GCC Runtime Library Exception, version
- 3.1, as published by the Free Software Foundation.
-
- You should have received a copy of the GNU General Public License and
- a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <spu_intrinsics.h>
-
-vector double __divv2df3 (vector double a_in, vector double b_in);
-
-/* __divv2df3 divides the vector dividend a by the vector divisor b and
- returns the resulting vector quotient. Maximum error about 0.5 ulp
- over entire double range including denorms, compared to true result
- in round-to-nearest rounding mode. Handles Inf or NaN operands and
- results correctly. */
-
-vector double
-__divv2df3 (vector double a_in, vector double b_in)
-{
- /* Variables */
- vec_int4 exp, exp_bias;
- vec_uint4 no_underflow, overflow;
- vec_float4 mant_bf, inv_bf;
- vec_ullong2 exp_a, exp_b;
- vec_ullong2 a_nan, a_zero, a_inf, a_denorm, a_denorm0;
- vec_ullong2 b_nan, b_zero, b_inf, b_denorm, b_denorm0;
- vec_ullong2 nan;
- vec_uint4 a_exp, b_exp;
- vec_ullong2 a_mant_0, b_mant_0;
- vec_ullong2 a_exp_1s, b_exp_1s;
- vec_ullong2 sign_exp_mask;
-
- vec_double2 a, b;
- vec_double2 mant_a, mant_b, inv_b, q0, q1, q2, mult;
-
- /* Constants */
- vec_uint4 exp_mask_u32 = spu_splats((unsigned int)0x7FF00000);
- vec_uchar16 splat_hi = (vec_uchar16){0,1,2,3, 0,1,2,3, 8, 9,10,11, 8,9,10,11};
- vec_uchar16 swap_32 = (vec_uchar16){4,5,6,7, 0,1,2,3, 12,13,14,15, 8,9,10,11};
- vec_ullong2 exp_mask = spu_splats(0x7FF0000000000000ULL);
- vec_ullong2 sign_mask = spu_splats(0x8000000000000000ULL);
- vec_float4 onef = spu_splats(1.0f);
- vec_double2 one = spu_splats(1.0);
- vec_double2 exp_53 = (vec_double2)spu_splats(0x0350000000000000ULL);
-
- sign_exp_mask = spu_or(sign_mask, exp_mask);
-
- /* Extract the floating point components from each of the operands including
- * exponent and mantissa.
- */
- a_exp = (vec_uint4)spu_and((vec_uint4)a_in, exp_mask_u32);
- a_exp = spu_shuffle(a_exp, a_exp, splat_hi);
- b_exp = (vec_uint4)spu_and((vec_uint4)b_in, exp_mask_u32);
- b_exp = spu_shuffle(b_exp, b_exp, splat_hi);
-
- a_mant_0 = (vec_ullong2)spu_cmpeq((vec_uint4)spu_andc((vec_ullong2)a_in, sign_exp_mask), 0);
- a_mant_0 = spu_and(a_mant_0, spu_shuffle(a_mant_0, a_mant_0, swap_32));
-
- b_mant_0 = (vec_ullong2)spu_cmpeq((vec_uint4)spu_andc((vec_ullong2)b_in, sign_exp_mask), 0);
- b_mant_0 = spu_and(b_mant_0, spu_shuffle(b_mant_0, b_mant_0, swap_32));
-
- a_exp_1s = (vec_ullong2)spu_cmpeq(a_exp, exp_mask_u32);
- b_exp_1s = (vec_ullong2)spu_cmpeq(b_exp, exp_mask_u32);
-
- /* Identify all possible special values that must be accomodated including:
- * +-denorm, +-0, +-infinity, and NaNs.
- */
- a_denorm0= (vec_ullong2)spu_cmpeq(a_exp, 0);
- a_nan = spu_andc(a_exp_1s, a_mant_0);
- a_zero = spu_and (a_denorm0, a_mant_0);
- a_inf = spu_and (a_exp_1s, a_mant_0);
- a_denorm = spu_andc(a_denorm0, a_zero);
-
- b_denorm0= (vec_ullong2)spu_cmpeq(b_exp, 0);
- b_nan = spu_andc(b_exp_1s, b_mant_0);
- b_zero = spu_and (b_denorm0, b_mant_0);
- b_inf = spu_and (b_exp_1s, b_mant_0);
- b_denorm = spu_andc(b_denorm0, b_zero);
-
- /* Scale denorm inputs to into normalized numbers by conditionally scaling the
- * input parameters.
- */
- a = spu_sub(spu_or(a_in, exp_53), spu_sel(exp_53, a_in, sign_mask));
- a = spu_sel(a_in, a, a_denorm);
-
- b = spu_sub(spu_or(b_in, exp_53), spu_sel(exp_53, b_in, sign_mask));
- b = spu_sel(b_in, b, b_denorm);
-
- /* Extract the divisor and dividend exponent and force parameters into the signed
- * range [1.0,2.0) or [-1.0,2.0).
- */
- exp_a = spu_and((vec_ullong2)a, exp_mask);
- exp_b = spu_and((vec_ullong2)b, exp_mask);
-
- mant_a = spu_sel(a, one, (vec_ullong2)exp_mask);
- mant_b = spu_sel(b, one, (vec_ullong2)exp_mask);
-
- /* Approximate the single reciprocal of b by using
- * the single precision reciprocal estimate followed by one
- * single precision iteration of Newton-Raphson.
- */
- mant_bf = spu_roundtf(mant_b);
- inv_bf = spu_re(mant_bf);
- inv_bf = spu_madd(spu_nmsub(mant_bf, inv_bf, onef), inv_bf, inv_bf);
-
- /* Perform 2 more Newton-Raphson iterations in double precision. The
- * result (q1) is in the range (0.5, 2.0).
- */
- inv_b = spu_extend(inv_bf);
- inv_b = spu_madd(spu_nmsub(mant_b, inv_b, one), inv_b, inv_b);
- q0 = spu_mul(mant_a, inv_b);
- q1 = spu_madd(spu_nmsub(mant_b, q0, mant_a), inv_b, q0);
-
- /* Determine the exponent correction factor that must be applied
- * to q1 by taking into account the exponent of the normalized inputs
- * and the scale factors that were applied to normalize them.
- */
- exp = spu_rlmaska(spu_sub((vec_int4)exp_a, (vec_int4)exp_b), -20);
- exp = spu_add(exp, (vec_int4)spu_add(spu_and((vec_int4)a_denorm, -0x34), spu_and((vec_int4)b_denorm, 0x34)));
-
- /* Bias the quotient exponent depending on the sign of the exponent correction
- * factor so that a single multiplier will ensure the entire double precision
- * domain (including denorms) can be achieved.
- *
- * exp bias q1 adjust exp
- * ===== ======== ==========
- * positive 2^+65 -65
- * negative 2^-64 +64
- */
- exp_bias = spu_xor(spu_rlmaska(exp, -31), 64);
- exp = spu_sub(exp, exp_bias);
-
- q1 = spu_sel(q1, (vec_double2)spu_add((vec_int4)q1, spu_sl(exp_bias, 20)), exp_mask);
-
- /* Compute a multiplier (mult) to applied to the quotient (q1) to produce the
- * expected result. On overflow, clamp the multiplier to the maximum non-infinite
- * number in case the rounding mode is not round-to-nearest.
- */
- exp = spu_add(exp, 0x3FF);
- no_underflow = spu_cmpgt(exp, 0);
- overflow = spu_cmpgt(exp, 0x7FE);
- exp = spu_and(spu_sl(exp, 20), (vec_int4)no_underflow);
- exp = spu_and(exp, (vec_int4)exp_mask);
-
- mult = spu_sel((vec_double2)exp, (vec_double2)(spu_add((vec_uint4)exp_mask, -1)), (vec_ullong2)overflow);
-
- /* Handle special value conditions. These include:
- *
- * 1) IF either operand is a NaN OR both operands are 0 or INFINITY THEN a NaN
- * results.
- * 2) ELSE IF the dividend is an INFINITY OR the divisor is 0 THEN a INFINITY results.
- * 3) ELSE IF the dividend is 0 OR the divisor is INFINITY THEN a 0 results.
- */
- mult = spu_andc(mult, (vec_double2)spu_or(a_zero, b_inf));
- mult = spu_sel(mult, (vec_double2)exp_mask, spu_or(a_inf, b_zero));
-
- nan = spu_or(a_nan, b_nan);
- nan = spu_or(nan, spu_and(a_zero, b_zero));
- nan = spu_or(nan, spu_and(a_inf, b_inf));
-
- mult = spu_or(mult, (vec_double2)nan);
-
- /* Scale the final quotient */
-
- q2 = spu_mul(q1, mult);
-
- return (q2);
-}
-
-
-/* We use the same function for vector and scalar division. Provide the
- scalar entry point as an alias. */
-double __divdf3 (double a, double b)
- __attribute__ ((__alias__ ("__divv2df3")));
-
-/* Some toolchain builds used the __fast_divdf3 name for this helper function.
- Provide this as another alternate entry point for compatibility. */
-double __fast_divdf3 (double a, double b)
- __attribute__ ((__alias__ ("__divv2df3")));
-
diff --git a/gcc/config/spu/float_disf.c b/gcc/config/spu/float_disf.c
deleted file mode 100644
index 0f4fe3d8e29..00000000000
--- a/gcc/config/spu/float_disf.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright (C) 2008, 2009 Free Software Foundation, Inc.
-
- This file is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free
- Software Foundation; either version 3 of the License, or (at your option)
- any later version.
-
- This file 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 General Public License
- for more details.
-
- Under Section 7 of GPL version 3, you are granted additional
- permissions described in the GCC Runtime Library Exception, version
- 3.1, as published by the Free Software Foundation.
-
- You should have received a copy of the GNU General Public License and
- a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
-/* Prototype. */
-float __floatdisf (long long x);
-
-float __floatdisf (long long x)
-{
- /* The SPU back-end now generates inline code for this conversion.
- This file is solely used to provide the __floatdisf functions
- for objects generated with prior versions of GCC. */
- return x;
-}
diff --git a/gcc/config/spu/float_unsdidf.c b/gcc/config/spu/float_unsdidf.c
deleted file mode 100644
index 4fdf0b88a2b..00000000000
--- a/gcc/config/spu/float_unsdidf.c
+++ /dev/null
@@ -1,54 +0,0 @@
-/* Copyright (C) 2006, 2008, 2009 Free Software Foundation, Inc.
-
- This file is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free
- Software Foundation; either version 3 of the License, or (at your option)
- any later version.
-
- This file 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 General Public License
- for more details.
-
- Under Section 7 of GPL version 3, you are granted additional
- permissions described in the GCC Runtime Library Exception, version
- 3.1, as published by the Free Software Foundation.
-
- You should have received a copy of the GNU General Public License and
- a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <spu_intrinsics.h>
-const unsigned char __didf_scale[16] __attribute__ ((__aligned__ (16))) = {
- 0x00, 0x00, 0x04, 0x3e,
- 0x00, 0x00, 0x04, 0x1e,
- 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00
-};
-const unsigned char __didf_pat[16] __attribute__ ((__aligned__ (16))) = {
- 0x02, 0x03, 0x10, 0x11,
- 0x12, 0x13, 0x80, 0x80,
- 0x06, 0x07, 0x14, 0x15,
- 0x16, 0x17, 0x80, 0x80
-};
-
-/* double __float_unsdidf (unsigned long long int)
- Construct two exact doubles representing the high and low parts (in
- parallel), then add them. */
-qword __float_unsdidf (qword DI);
-qword
-__float_unsdidf (qword DI)
-{
- qword t0, t1, t2, t3, t4, t5, t6, t7, t8;
- t0 = si_clz (DI);
- t1 = si_shl (DI, t0);
- t2 = si_ceqi (t0, 32);
- t3 = si_sf (t0, *(const qword *) __didf_scale);
- t4 = si_a (t1, t1);
- t5 = si_andc (t3, t2);
- t6 = si_shufb (t5, t4, *(const qword *) __didf_pat);
- t7 = si_shlqbii (t6, 4);
- t8 = si_shlqbyi (t7, 8);
- return si_dfa (t7, t8);
-}
diff --git a/gcc/config/spu/float_unsdisf.c b/gcc/config/spu/float_unsdisf.c
deleted file mode 100644
index 7af120ecc8c..00000000000
--- a/gcc/config/spu/float_unsdisf.c
+++ /dev/null
@@ -1,31 +0,0 @@
-/* Copyright (C) 2008, 2009 Free Software Foundation, Inc.
-
- This file is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free
- Software Foundation; either version 3 of the License, or (at your option)
- any later version.
-
- This file 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 General Public License
- for more details.
-
- Under Section 7 of GPL version 3, you are granted additional
- permissions described in the GCC Runtime Library Exception, version
- 3.1, as published by the Free Software Foundation.
-
- You should have received a copy of the GNU General Public License and
- a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
-/* Prototype. */
-float __floatundisf (unsigned long long x);
-
-float __floatundisf (unsigned long long x)
-{
- /* The SPU back-end now generates inline code for this conversion.
- This file is solely used to provide the __floatundisf function
- for objects generated with prior versions of GCC. */
- return x;
-}
diff --git a/gcc/config/spu/float_unssidf.c b/gcc/config/spu/float_unssidf.c
deleted file mode 100644
index b255f81af55..00000000000
--- a/gcc/config/spu/float_unssidf.c
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Copyright (C) 2006, 2008, 2009 Free Software Foundation, Inc.
-
- This file is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free
- Software Foundation; either version 3 of the License, or (at your option)
- any later version.
-
- This file 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 General Public License
- for more details.
-
- Under Section 7 of GPL version 3, you are granted additional
- permissions described in the GCC Runtime Library Exception, version
- 3.1, as published by the Free Software Foundation.
-
- You should have received a copy of the GNU General Public License and
- a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <spu_intrinsics.h>
-const unsigned char __sidf_pat[16] __attribute__ ((__aligned__ (16))) = {
- 0x02, 0x03, 0x10, 0x11,
- 0x12, 0x13, 0x80, 0x80,
- 0x06, 0x07, 0x14, 0x15,
- 0x16, 0x17, 0x80, 0x80
-};
-
-/* double __float_unssidf (unsigned int SI) */
-qword __float_unssidf (qword SI);
-qword
-__float_unssidf (qword SI)
-{
- qword t0, t1, t2, t3, t4, t5, t6, t7;
- t0 = si_clz (SI);
- t1 = si_il (1054);
- t2 = si_shl (SI, t0);
- t3 = si_ceqi (t0, 32);
- t4 = si_sf (t0, t1);
- t5 = si_a (t2, t2);
- t6 = si_andc (t4, t3);
- t7 = si_shufb (t6, t5, *(const qword *) __sidf_pat);
- return si_shlqbii (t7, 4);
-}
diff --git a/gcc/config/spu/mfc_multi_tag_release.c b/gcc/config/spu/mfc_multi_tag_release.c
deleted file mode 100644
index 62eb2beeb8f..00000000000
--- a/gcc/config/spu/mfc_multi_tag_release.c
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Copyright (C) 2007, 2009 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include <spu_mfcio.h>
-extern vector unsigned int __mfc_tag_table;
-
-/* Release a sequential group of tags from exclusive use. The sequential
- group of tags is the range starting from <first_tag> through
- <first_tag>+<number_of_tags>-1. Upon sucessful release, MFC_DMA_TAG_VALID
- is returned and the tags become available for future reservation.
-
- If the specified tags were not previously reserved, no action is
- taken and MFC_DMA_TAG_INVALID is returned. */
-
-unsigned int
-__mfc_multi_tag_release (unsigned int first_tag, unsigned int number_of_tags)
-{
- vector unsigned int table_copy, tmp, tmp1;
- vector unsigned int one = (vector unsigned int)
- { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF };
- vector unsigned int is_invalid;
- unsigned int last_tag;
- vector unsigned int has_been_reserved;
-
- last_tag = first_tag + number_of_tags;
-
- table_copy = spu_sl (one, number_of_tags);
- table_copy = spu_rl (table_copy, -last_tag);
- table_copy = spu_xor (table_copy, -1);
-
- /* Make sure the tags are in range and valid. */
- tmp = spu_cmpgt (spu_promote(last_tag, 0), 32);
- tmp1 = spu_cmpgt (spu_promote(number_of_tags, 0), 32);
- is_invalid = spu_cmpgt (spu_promote(first_tag, 0), 31);
-
- /* All bits are set to 1 if invalid, 0 if valid. */
- is_invalid = spu_or (tmp, is_invalid);
- is_invalid = spu_or (tmp1, is_invalid);
-
- /* check whether these tags have been reserved */
- tmp = spu_rlmask (one, (int)-number_of_tags);
- tmp1 = spu_sl (__mfc_tag_table, first_tag);
- has_been_reserved = spu_cmpgt(tmp1, tmp);
-
- is_invalid = spu_or (has_been_reserved, is_invalid);
-
- table_copy = spu_sel (__mfc_tag_table, table_copy, table_copy);
- __mfc_tag_table = spu_sel (table_copy, __mfc_tag_table, is_invalid);
-
- return spu_extract (is_invalid, 0);
-}
-
diff --git a/gcc/config/spu/mfc_multi_tag_reserve.c b/gcc/config/spu/mfc_multi_tag_reserve.c
deleted file mode 100644
index 06d70259276..00000000000
--- a/gcc/config/spu/mfc_multi_tag_reserve.c
+++ /dev/null
@@ -1,84 +0,0 @@
-/* Copyright (C) 2007, 2009 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include <spu_mfcio.h>
-extern vector unsigned int __mfc_tag_table;
-
-/* Reserve a sequential group of tags for exclusive use. The number of
- tags to be reserved is specified by the <number_of_tags> parameter.
- This routine returns the first tag ID for a sequential list of
- available tags and marks them as reserved. The reserved group
- of tags is in the range starting from the returned tag through
- the returned tag + <number_of_tags>-1.
-
- If the number of tags requested exceeds the number of available
- sequential tags, then MFC_DMA_TAG_INVALID is returned indicating
- that the request could not be serviced. */
-
-unsigned int
-__mfc_multi_tag_reserve (unsigned int number_of_tags)
-{
- vector unsigned int table_copy;
- vector unsigned int one = (vector unsigned int)
- { 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF };
- vector unsigned int count_busy, is_valid;
- vector unsigned int count_total;
- vector unsigned int count_avail = (vector unsigned int) { 0, 0, 0, 0 };
- vector unsigned int index = (vector unsigned int) { 0, 0, 0, 0 };
-
- table_copy = __mfc_tag_table;
-
-
- /* count_busy: number of consecutive busy tags
- count_avail: number of consecutive free tags
- table_copy: temporary copy of the tag table
- count_total: sum of count_busy and count_avail
- index: index of the current working tag */
- do
- {
- table_copy = spu_sl (table_copy, count_avail);
-
- count_busy = spu_cntlz (table_copy);
- table_copy = spu_sl (table_copy, count_busy);
- count_avail = spu_cntlz (spu_xor(table_copy, -1));
- count_total = spu_add (count_busy, count_avail);
- index = spu_add (index, count_total);
- }
- while (spu_extract (count_avail, 0) < number_of_tags
- && spu_extract (table_copy, 0) != 0);
-
- index = spu_sub (index, count_avail);
-
- /* is_valid is set to 0xFFFFFFFF if table_copy == 0, 0 otherwise. */
- is_valid = spu_cmpeq (table_copy, 0);
- index = spu_sel (index, is_valid, is_valid);
-
- /* Now I need to actually mark the tags as used. */
- table_copy = spu_sl (one, number_of_tags);
- table_copy = spu_rl (table_copy, -number_of_tags - spu_extract (index, 0));
- table_copy = spu_sel (table_copy, __mfc_tag_table, table_copy);
- __mfc_tag_table = spu_sel (table_copy, __mfc_tag_table, is_valid);
-
- return spu_extract (index, 0);
-}
-
diff --git a/gcc/config/spu/mfc_tag_release.c b/gcc/config/spu/mfc_tag_release.c
deleted file mode 100644
index d59c5713053..00000000000
--- a/gcc/config/spu/mfc_tag_release.c
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Copyright (C) 2007, 2009 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include <spu_mfcio.h>
-extern vector unsigned int __mfc_tag_table;
-
-/* Release the specified DMA tag from exclusive use. Once released, the
- tag is available for future reservation. Upon sucessful release,
- MFC_DMA_TAG_VALID is returned. If the specified tag is not in the
- range 0 to 31, or had not been reserved, no action is taken and
- MFC_DMA_TAG_INVALID is returned. */
-
-unsigned int
-__mfc_tag_release (unsigned int tag)
-{
- vector unsigned int is_invalid;
- vector unsigned int mask = (vector unsigned int)
- { 0x80000000, 0x80000000, 0x80000000, 0x80000000 };
- vector signed int zero = (vector signed int) { 0, 0, 0, 0 };
-
- vector signed int has_been_reserved;
-
- /* Check if the tag is out of range. */
- is_invalid = spu_cmpgt (spu_promote (tag, 0), 31);
-
- /* Check whether the tag has been reserved, set to all 1 if has not
- been reserved, 0 otherwise. */
- has_been_reserved = (vector signed int) spu_rl (__mfc_tag_table, tag);
- has_been_reserved = (vector signed int) spu_cmpgt (zero, has_been_reserved);
-
- /* Set invalid. */
- is_invalid = spu_or ((vector unsigned int) has_been_reserved, is_invalid);
-
- mask = spu_rlmask (mask, (int)(-tag));
- __mfc_tag_table = spu_or (__mfc_tag_table, mask);
-
- return spu_extract(is_invalid, 0);
-}
-
diff --git a/gcc/config/spu/mfc_tag_reserve.c b/gcc/config/spu/mfc_tag_reserve.c
deleted file mode 100644
index 23b4817c74f..00000000000
--- a/gcc/config/spu/mfc_tag_reserve.c
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Copyright (C) 2007, 2009 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include <spu_mfcio.h>
-extern vector unsigned int __mfc_tag_table;
-
-/* Reserves a DMA tag for exclusive use. This routine returns an available
- tag id in the range 0 to 31 and marks the tag as reserved. If no tags
- are available, MFC_DMA_TAG_INVALID is returned indicating that all tags
- are already reserved. */
-
-unsigned int
-__mfc_tag_reserve (void)
-{
- vector unsigned int mask = (vector unsigned int)
- { 0x80000000, 0x80000000, 0x80000000, 0x80000000 };
- vector unsigned int count_zeros, is_valid;
- vector signed int count_neg;
-
- count_zeros = spu_cntlz (__mfc_tag_table);
- count_neg = spu_sub (0, (vector signed int) count_zeros);
-
- mask = spu_rlmask (mask, (vector signed int) count_neg);
- __mfc_tag_table = spu_andc (__mfc_tag_table, mask);
-
- is_valid = spu_cmpeq (count_zeros, 32);
- count_zeros = spu_sel (count_zeros, is_valid, is_valid);
-
- return spu_extract (count_zeros, 0);
-}
-
diff --git a/gcc/config/spu/mfc_tag_table.c b/gcc/config/spu/mfc_tag_table.c
deleted file mode 100644
index bd08c580c18..00000000000
--- a/gcc/config/spu/mfc_tag_table.c
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Copyright (C) 2007, 2009 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/* The free tag table used by the MFC tag manager, with tag0
- reserved for the overlay manager. */
-__vector unsigned int
-__mfc_tag_table = (__vector unsigned int) { 0x7FFFFFFF, -1, -1, -1 };
-
-/* Arrange to release tag0 if overlays are not present. */
-static void __mfc_tag_init (void) __attribute__ ((constructor));
-
-static void
-__mfc_tag_init (void)
-{
- extern void _ovly_table __attribute__ ((weak));
-
- if (&_ovly_table == 0)
- __mfc_tag_table = (__vector unsigned int) { -1, -1, -1, -1 };
-}
diff --git a/gcc/config/spu/multi3.c b/gcc/config/spu/multi3.c
deleted file mode 100644
index b8b0e90ee25..00000000000
--- a/gcc/config/spu/multi3.c
+++ /dev/null
@@ -1,119 +0,0 @@
-/* Copyright (C) 2008, 2009 Free Software Foundation, Inc.
-
- This file is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free
- Software Foundation; either version 3 of the License, or (at your option)
- any later version.
-
- This file 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 General Public License
- for more details.
-
- Under Section 7 of GPL version 3, you are granted additional
- permissions described in the GCC Runtime Library Exception, version
- 3.1, as published by the Free Software Foundation.
-
- You should have received a copy of the GNU General Public License and
- a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
-#include <spu_intrinsics.h>
-
-typedef int TItype __attribute__ ((mode (TI)));
-
-union qword_TItype
- {
- qword q;
- TItype t;
- };
-
-inline static qword
-si_from_TItype (TItype t)
-{
- union qword_TItype u;
- u.t = t;
- return u.q;
-}
-
-inline static TItype
-si_to_TItype (qword q)
-{
- union qword_TItype u;
- u.q = q;
- return u.t;
-}
-
-/* A straight forward vectorization and unrolling of
- * short l[8], r[8];
- * TItype total = 0;
- * for (i = 0; i < 8; i++)
- * for (j = 0; j < 8; j++)
- * total += (TItype)((l[7-i] * r[7-j]) << (16 * (i + j)));
- */
-TItype
-__multi3 (TItype l, TItype r)
-{
- qword u = si_from_TItype (l);
- qword v = si_from_TItype (r);
- qword splat0 = si_shufb (v, v, si_ilh (0x0001));
- qword splat1 = si_shufb (v, v, si_ilh (0x0203));
- qword splat2 = si_shufb (v, v, si_ilh (0x0405));
- qword splat3 = si_shufb (v, v, si_ilh (0x0607));
- qword splat4 = si_shufb (v, v, si_ilh (0x0809));
- qword splat5 = si_shufb (v, v, si_ilh (0x0a0b));
- qword splat6 = si_shufb (v, v, si_ilh (0x0c0d));
- qword splat7 = si_shufb (v, v, si_ilh (0x0e0f));
-
- qword part0l = si_shlqbyi (si_mpyu (u, splat0), 14);
- qword part1h = si_shlqbyi (si_mpyhhu (u, splat1), 14);
- qword part1l = si_shlqbyi (si_mpyu (u, splat1), 12);
- qword part2h = si_shlqbyi (si_mpyhhu (u, splat2), 12);
- qword part2l = si_shlqbyi (si_mpyu (u, splat2), 10);
- qword part3h = si_shlqbyi (si_mpyhhu (u, splat3), 10);
- qword part3l = si_shlqbyi (si_mpyu (u, splat3), 8);
- qword part4h = si_shlqbyi (si_mpyhhu (u, splat4), 8);
- qword part4l = si_shlqbyi (si_mpyu (u, splat4), 6);
- qword part5h = si_shlqbyi (si_mpyhhu (u, splat5), 6);
- qword part5l = si_shlqbyi (si_mpyu (u, splat5), 4);
- qword part6h = si_shlqbyi (si_mpyhhu (u, splat6), 4);
- qword part6l = si_shlqbyi (si_mpyu (u, splat6), 2);
- qword part7h = si_shlqbyi (si_mpyhhu (u, splat7), 2);
- qword part7l = si_mpyu (u, splat7);
-
- qword carry, total0, total1, total2, total3, total4;
- qword total5, total6, total7, total8, total9, total10;
- qword total;
-
- total0 = si_a (si_a (si_a (part0l, part1h), si_a (part1l, part2h)), part7l);
- total1 = si_a (part2l, part3h);
- total2 = si_a (part3l, part4h);
- total3 = si_a (part4l, part5h);
- total4 = si_a (part5l, part6h);
- total5 = si_a (part6l, part7h);
- total6 = si_a (total0, total1);
- total7 = si_a (total2, total3);
- total8 = si_a (total4, total5);
- total9 = si_a (total6, total7);
- total10 = si_a (total8, total9);
-
- carry = si_cg (part2l, part3h);
- carry = si_a (carry, si_cg (part3l, part4h));
- carry = si_a (carry, si_cg (part4l, part5h));
- carry = si_a (carry, si_cg (part5l, part6h));
- carry = si_a (carry, si_cg (part6l, part7h));
- carry = si_a (carry, si_cg (total0, total1));
- carry = si_a (carry, si_cg (total2, total3));
- carry = si_a (carry, si_cg (total4, total5));
- carry = si_a (carry, si_cg (total6, total7));
- carry = si_a (carry, si_cg (total8, total9));
- carry = si_shlqbyi (carry, 4);
-
- total = si_cg (total10, carry);
- total = si_shlqbyi (total, 4);
- total = si_cgx (total10, carry, total);
- total = si_shlqbyi (total, 4);
- total = si_addx (total10, carry, total);
- return si_to_TItype (total);
-}
diff --git a/gcc/config/spu/t-spu-elf b/gcc/config/spu/t-spu-elf
index 45802499525..50c8d0353f5 100644
--- a/gcc/config/spu/t-spu-elf
+++ b/gcc/config/spu/t-spu-elf
@@ -15,36 +15,9 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-TARGET_LIBGCC2_CFLAGS = -fPIC -mwarn-reloc -D__IN_LIBGCC2
-
-# We exclude those because the libgcc2.c default versions do not support
-# the SPU single-precision format (round towards zero). We provide our
-# own versions below and/or via direct expansion.
-LIB2FUNCS_EXCLUDE = _floatdisf _floatundisf _floattisf _floatunstisf
-
-LIB2FUNCS_STATIC_EXTRA = $(srcdir)/config/spu/float_unssidf.c \
- $(srcdir)/config/spu/float_unsdidf.c \
- $(srcdir)/config/spu/float_unsdisf.c \
- $(srcdir)/config/spu/float_disf.c \
- $(srcdir)/config/spu/mfc_tag_table.c \
- $(srcdir)/config/spu/mfc_tag_reserve.c \
- $(srcdir)/config/spu/mfc_tag_release.c \
- $(srcdir)/config/spu/mfc_multi_tag_reserve.c \
- $(srcdir)/config/spu/mfc_multi_tag_release.c \
- $(srcdir)/config/spu/multi3.c \
- $(srcdir)/config/spu/divmodti4.c \
- $(srcdir)/config/spu/divv2df3.c
-
-# Build TImode conversion routines to support Fortran 128-bit
-# integer data types.
-LIB2_SIDITI_CONV_FUNCS=yes
-
# Multi-lib support.
MULTILIB_OPTIONS=mea64
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
-
spu.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) \
$(RTL_H) $(REGS_H) hard-reg-set.h \
real.h insn-config.h conditions.h insn-attr.h flags.h $(RECOG_H) \
diff --git a/gcc/config/stormy16/stormy16-lib2-ashlsi3.c b/gcc/config/stormy16/stormy16-lib2-ashlsi3.c
deleted file mode 100644
index d6cabc6691c..00000000000
--- a/gcc/config/stormy16/stormy16-lib2-ashlsi3.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define XSTORMY16_ASHLSI3
-#include "stormy16-lib2.c"
diff --git a/gcc/config/stormy16/stormy16-lib2-ashrsi3.c b/gcc/config/stormy16/stormy16-lib2-ashrsi3.c
deleted file mode 100644
index 151e3d01cab..00000000000
--- a/gcc/config/stormy16/stormy16-lib2-ashrsi3.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define XSTORMY16_ASHRSI3
-#include "stormy16-lib2.c"
diff --git a/gcc/config/stormy16/stormy16-lib2-clzhi2.c b/gcc/config/stormy16/stormy16-lib2-clzhi2.c
deleted file mode 100644
index 066fdf13112..00000000000
--- a/gcc/config/stormy16/stormy16-lib2-clzhi2.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define XSTORMY16_CLZHI2
-#include "stormy16-lib2.c"
diff --git a/gcc/config/stormy16/stormy16-lib2-cmpsi2.c b/gcc/config/stormy16/stormy16-lib2-cmpsi2.c
deleted file mode 100644
index 7563c36b569..00000000000
--- a/gcc/config/stormy16/stormy16-lib2-cmpsi2.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define XSTORMY16_CMPSI2
-#include "stormy16-lib2.c"
diff --git a/gcc/config/stormy16/stormy16-lib2-ctzhi2.c b/gcc/config/stormy16/stormy16-lib2-ctzhi2.c
deleted file mode 100644
index c1497db952f..00000000000
--- a/gcc/config/stormy16/stormy16-lib2-ctzhi2.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define XSTORMY16_CTZHI2
-#include "stormy16-lib2.c"
diff --git a/gcc/config/stormy16/stormy16-lib2-divsi3.c b/gcc/config/stormy16/stormy16-lib2-divsi3.c
deleted file mode 100644
index 33c370d1c1f..00000000000
--- a/gcc/config/stormy16/stormy16-lib2-divsi3.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define XSTORMY16_DIVSI3
-#include "stormy16-lib2.c"
diff --git a/gcc/config/stormy16/stormy16-lib2-ffshi2.c b/gcc/config/stormy16/stormy16-lib2-ffshi2.c
deleted file mode 100644
index 4b629ddece8..00000000000
--- a/gcc/config/stormy16/stormy16-lib2-ffshi2.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define XSTORMY16_FFSHI2
-#include "stormy16-lib2.c"
diff --git a/gcc/config/stormy16/stormy16-lib2-lshrsi3.c b/gcc/config/stormy16/stormy16-lib2-lshrsi3.c
deleted file mode 100644
index cd769ee6647..00000000000
--- a/gcc/config/stormy16/stormy16-lib2-lshrsi3.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define XSTORMY16_LSHRSI3
-#include "stormy16-lib2.c"
diff --git a/gcc/config/stormy16/stormy16-lib2-modsi3.c b/gcc/config/stormy16/stormy16-lib2-modsi3.c
deleted file mode 100644
index 587d0070d23..00000000000
--- a/gcc/config/stormy16/stormy16-lib2-modsi3.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define XSTORMY16_MODSI3
-#include "stormy16-lib2.c"
diff --git a/gcc/config/stormy16/stormy16-lib2-parityhi2.c b/gcc/config/stormy16/stormy16-lib2-parityhi2.c
deleted file mode 100644
index 1d128171a8b..00000000000
--- a/gcc/config/stormy16/stormy16-lib2-parityhi2.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define XSTORMY16_PARITYHI2
-#include "stormy16-lib2.c"
diff --git a/gcc/config/stormy16/stormy16-lib2-popcounthi2.c b/gcc/config/stormy16/stormy16-lib2-popcounthi2.c
deleted file mode 100644
index f07d66873e6..00000000000
--- a/gcc/config/stormy16/stormy16-lib2-popcounthi2.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define XSTORMY16_POPCOUNTHI2
-#include "stormy16-lib2.c"
diff --git a/gcc/config/stormy16/stormy16-lib2-ucmpsi2.c b/gcc/config/stormy16/stormy16-lib2-ucmpsi2.c
deleted file mode 100644
index da1a3e70753..00000000000
--- a/gcc/config/stormy16/stormy16-lib2-ucmpsi2.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define XSTORMY16_UCMPSI2
-#include "stormy16-lib2.c"
diff --git a/gcc/config/stormy16/stormy16-lib2-udivmodsi4.c b/gcc/config/stormy16/stormy16-lib2-udivmodsi4.c
deleted file mode 100644
index d555e64c6d8..00000000000
--- a/gcc/config/stormy16/stormy16-lib2-udivmodsi4.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define XSTORMY16_UDIVMODSI4
-#include "stormy16-lib2.c"
diff --git a/gcc/config/stormy16/stormy16-lib2-udivsi3.c b/gcc/config/stormy16/stormy16-lib2-udivsi3.c
deleted file mode 100644
index fdcd64a0ae0..00000000000
--- a/gcc/config/stormy16/stormy16-lib2-udivsi3.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define XSTORMY16_UDIVSI3
-#include "stormy16-lib2.c"
diff --git a/gcc/config/stormy16/stormy16-lib2-umodsi3.c b/gcc/config/stormy16/stormy16-lib2-umodsi3.c
deleted file mode 100644
index 87921f2a196..00000000000
--- a/gcc/config/stormy16/stormy16-lib2-umodsi3.c
+++ /dev/null
@@ -1,2 +0,0 @@
-#define XSTORMY16_UMODSI3
-#include "stormy16-lib2.c"
diff --git a/gcc/config/stormy16/stormy16-lib2.c b/gcc/config/stormy16/stormy16-lib2.c
deleted file mode 100644
index e3c16435471..00000000000
--- a/gcc/config/stormy16/stormy16-lib2.c
+++ /dev/null
@@ -1,357 +0,0 @@
-/* This file contains 16-bit versions of some of the functions found in
- libgcc2.c. Really libgcc ought to be moved out of the gcc directory
- and into its own top level directory, and then split up into multiple
- files. On this glorious day maybe this code can be integrated into
- it too. */
-
-/* Copyright (C) 2005, 2008, 2009, 2010 Free Software Foundation, Inc.
-
- This file is part of GCC.
-
- GCC is free software; you can redistribute it and/or modify it under
- the terms of the GNU General Public License as published by the Free
- Software Foundation; either version 3, or (at your option) any later
- version.
-
- GCC 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 General Public License
- for more details.
-
- Under Section 7 of GPL version 3, you are granted additional
- permissions described in the GCC Runtime Library Exception, version
- 3.1, as published by the Free Software Foundation.
-
- You should have received a copy of the GNU General Public License and
- a copy of the GCC Runtime Library Exception along with this program;
- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
- <http://www.gnu.org/licenses/>. */
-
-#include "tconfig.h"
-#include "tsystem.h"
-#include "coretypes.h"
-#include "tm.h"
-
-#ifdef HAVE_GAS_HIDDEN
-#define ATTRIBUTE_HIDDEN __attribute__ ((__visibility__ ("hidden")))
-#else
-#define ATTRIBUTE_HIDDEN
-#endif
-
-#ifndef MIN_UNITS_PER_WORD
-#define MIN_UNITS_PER_WORD UNITS_PER_WORD
-#endif
-
-#ifndef LIBGCC2_UNITS_PER_WORD
-# if MIN_UNITS_PER_WORD > 4
-# define LIBGCC2_UNITS_PER_WORD 8
-# elif (MIN_UNITS_PER_WORD > 2 \
- || (MIN_UNITS_PER_WORD > 1 && LONG_LONG_TYPE_SIZE > 32))
-# define LIBGCC2_UNITS_PER_WORD 4
-# else
-# define LIBGCC2_UNITS_PER_WORD MIN_UNITS_PER_WORD
-# endif
-#endif
-
-#define word_type Wtype
-
-#include "libgcc2.h"
-#undef int
-
-/* These prototypes would normally live in libgcc2.h, but this can
- only happen once the code below is integrated into libgcc2.c. */
-
-extern USItype udivmodsi4 (USItype, USItype, word_type);
-extern SItype __divsi3 (SItype, SItype);
-extern SItype __modsi3 (SItype, SItype);
-extern SItype __udivsi3 (SItype, SItype);
-extern SItype __umodsi3 (SItype, SItype);
-extern SItype __ashlsi3 (SItype, SItype);
-extern SItype __ashrsi3 (SItype, SItype);
-extern USItype __lshrsi3 (USItype, USItype);
-extern int __popcounthi2 (UHWtype);
-extern int __parityhi2 (UHWtype);
-extern int __clzhi2 (UHWtype);
-extern int __ctzhi2 (UHWtype);
-
-
-#ifdef XSTORMY16_UDIVMODSI4
-USItype
-udivmodsi4 (USItype num, USItype den, word_type modwanted)
-{
- USItype bit = 1;
- USItype res = 0;
-
- while (den < num && bit && !(den & (1L << 31)))
- {
- den <<= 1;
- bit <<= 1;
- }
- while (bit)
- {
- if (num >= den)
- {
- num -= den;
- res |= bit;
- }
- bit >>= 1;
- den >>= 1;
- }
-
- if (modwanted)
- return num;
- return res;
-}
-#endif
-
-#ifdef XSTORMY16_DIVSI3
-SItype
-__divsi3 (SItype a, SItype b)
-{
- word_type neg = 0;
- SItype res;
-
- if (a < 0)
- {
- a = -a;
- neg = !neg;
- }
-
- if (b < 0)
- {
- b = -b;
- neg = !neg;
- }
-
- res = udivmodsi4 (a, b, 0);
-
- if (neg)
- res = -res;
-
- return res;
-}
-#endif
-
-#ifdef XSTORMY16_MODSI3
-SItype
-__modsi3 (SItype a, SItype b)
-{
- word_type neg = 0;
- SItype res;
-
- if (a < 0)
- {
- a = -a;
- neg = 1;
- }
-
- if (b < 0)
- b = -b;
-
- res = udivmodsi4 (a, b, 1);
-
- if (neg)
- res = -res;
-
- return res;
-}
-#endif
-
-#ifdef XSTORMY16_UDIVSI3
-SItype
-__udivsi3 (SItype a, SItype b)
-{
- return udivmodsi4 (a, b, 0);
-}
-#endif
-
-#ifdef XSTORMY16_UMODSI3
-SItype
-__umodsi3 (SItype a, SItype b)
-{
- return udivmodsi4 (a, b, 1);
-}
-#endif
-
-#ifdef XSTORMY16_ASHLSI3
-SItype
-__ashlsi3 (SItype a, SItype b)
-{
- word_type i;
-
- if (b & 16)
- a <<= 16;
- if (b & 8)
- a <<= 8;
- for (i = (b & 0x7); i > 0; --i)
- a <<= 1;
- return a;
-}
-#endif
-
-#ifdef XSTORMY16_ASHRSI3
-SItype
-__ashrsi3 (SItype a, SItype b)
-{
- word_type i;
-
- if (b & 16)
- a >>= 16;
- if (b & 8)
- a >>= 8;
- for (i = (b & 0x7); i > 0; --i)
- a >>= 1;
- return a;
-}
-#endif
-
-#ifdef XSTORMY16_LSHRSI3
-USItype
-__lshrsi3 (USItype a, USItype b)
-{
- word_type i;
-
- if (b & 16)
- a >>= 16;
- if (b & 8)
- a >>= 8;
- for (i = (b & 0x7); i > 0; --i)
- a >>= 1;
- return a;
-}
-#endif
-
-#ifdef XSTORMY16_POPCOUNTHI2
-/* Returns the number of set bits in X.
- FIXME: The return type really should be "unsigned int"
- but this is not how the builtin is prototyped. */
-int
-__popcounthi2 (UHWtype x)
-{
- int ret;
-
- ret = __popcount_tab [x & 0xff];
- ret += __popcount_tab [(x >> 8) & 0xff];
-
- return ret;
-}
-#endif
-
-#ifdef XSTORMY16_PARITYHI2
-/* Returns the number of set bits in X, modulo 2.
- FIXME: The return type really should be "unsigned int"
- but this is not how the builtin is prototyped. */
-
-int
-__parityhi2 (UHWtype x)
-{
- x ^= x >> 8;
- x ^= x >> 4;
- x &= 0xf;
- return (0x6996 >> x) & 1;
-}
-#endif
-
-#ifdef XSTORMY16_CLZHI2
-/* Returns the number of zero-bits from the most significant bit to the
- first nonzero bit in X. Returns 16 for X == 0. Implemented as a
- simple for loop in order to save space by removing the need for
- the __clz_tab array.
- FIXME: The return type really should be "unsigned int" but this is
- not how the builtin is prototyped. */
-#undef unsigned
-int
-__clzhi2 (UHWtype x)
-{
- unsigned int i;
- unsigned int c;
- unsigned int value = x;
-
- for (c = 0, i = 1 << 15; i; i >>= 1, c++)
- if (i & value)
- break;
- return c;
-}
-#endif
-
-#ifdef XSTORMY16_CTZHI2
-/* Returns the number of trailing zero bits in X.
- FIXME: The return type really should be "signed int" since
- ctz(0) returns -1, but this is not how the builtin is prototyped. */
-
-int
-__ctzhi2 (UHWtype x)
-{
- /* This is cunning. It converts X into a number with only the one bit
- set, the bit that was the least significant bit in X. From this we
- can use the count_leading_zeros to compute the number of trailing
- bits. */
- x &= - x;
-
- return 15 - __builtin_clz (x);
-}
-#endif
-
-#ifdef XSTORMY16_FFSHI2
-/* Returns one plus the index of the least significant 1-bit of X,
- or if X is zero, returns zero. FIXME: The return type really
- should be "unsigned int" but this is not how the builtin is
- prototyped. */
-
-int
-__ffshi2 (UHWtype u)
-{
- UHWtype count;
-
- if (u == 0)
- return 0;
-
- return 16 - __builtin_clz (u & - u);
-}
-#endif
-
-#ifdef XSTORMY16_UCMPSI2
-/* Performs an unsigned comparison of two 32-bit values: A and B.
- If A is less than B, then 0 is returned. If A is greater than B,
- then 2 is returned. Otherwise A and B are equal and 1 is returned. */
-
-word_type
-__ucmpsi2 (USItype a, USItype b)
-{
- word_type hi_a = (a >> 16);
- word_type hi_b = (b >> 16);
-
- if (hi_a == hi_b)
- {
- word_type low_a = (a & 0xffff);
- word_type low_b = (b & 0xffff);
-
- return low_a < low_b ? 0 : (low_a > low_b ? 2 : 1);
- }
-
- return hi_a < hi_b ? 0 : 2;
-}
-#endif
-
-#ifdef XSTORMY16_CMPSI2
-/* Performs an signed comparison of two 32-bit values: A and B.
- If A is less than B, then 0 is returned. If A is greater than B,
- then 2 is returned. Otherwise A and B are equal and 1 is returned. */
-
-word_type
-__cmpsi2 (SItype a, SItype b)
-{
- word_type hi_a = (a >> 16);
- word_type hi_b = (b >> 16);
-
- if (hi_a == hi_b)
- {
- word_type low_a = (a & 0xffff);
- word_type low_b = (b & 0xffff);
-
- return low_a < low_b ? 0 : (low_a > low_b ? 2 : 1);
- }
-
- return hi_a < hi_b ? 0 : 2;
-}
-#endif
diff --git a/gcc/config/stormy16/t-stormy16 b/gcc/config/stormy16/t-stormy16
deleted file mode 100644
index c2b6c2a5573..00000000000
--- a/gcc/config/stormy16/t-stormy16
+++ /dev/null
@@ -1,39 +0,0 @@
-# -*- makefile -*-
-#
-# Copyright (C) 2001, 2004, 2010, 2011 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-# SImode arithmetic and logical routines, HImode bit counting routines.
-LIB2FUNCS_EXTRA = \
- $(srcdir)/config/stormy16/stormy16-lib2-udivmodsi4.c \
- $(srcdir)/config/stormy16/stormy16-lib2-divsi3.c \
- $(srcdir)/config/stormy16/stormy16-lib2-modsi3.c \
- $(srcdir)/config/stormy16/stormy16-lib2-udivsi3.c \
- $(srcdir)/config/stormy16/stormy16-lib2-umodsi3.c \
- $(srcdir)/config/stormy16/stormy16-lib2-ashlsi3.c \
- $(srcdir)/config/stormy16/stormy16-lib2-ashrsi3.c \
- $(srcdir)/config/stormy16/stormy16-lib2-lshrsi3.c \
- $(srcdir)/config/stormy16/stormy16-lib2-popcounthi2.c \
- $(srcdir)/config/stormy16/stormy16-lib2-parityhi2.c \
- $(srcdir)/config/stormy16/stormy16-lib2-clzhi2.c \
- $(srcdir)/config/stormy16/stormy16-lib2-ctzhi2.c \
- $(srcdir)/config/stormy16/stormy16-lib2-ffshi2.c \
- $(srcdir)/config/stormy16/stormy16-lib2-cmpsi2.c \
- $(srcdir)/config/stormy16/stormy16-lib2-ucmpsi2.c
-
-TARGET_LIBGCC2_CFLAGS = -O2
diff --git a/gcc/config/t-darwin b/gcc/config/t-darwin
index d952bd39273..e2bd74d61b0 100644
--- a/gcc/config/t-darwin
+++ b/gcc/config/t-darwin
@@ -41,9 +41,3 @@ darwin-driver.o: $(srcdir)/config/darwin-driver.c \
$(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H) opts.h
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
$(srcdir)/config/darwin-driver.c
-
-# -pipe because there's an assembler bug, 4077127, which causes
-# it to not properly process the first # directive, causing temporary
-# file names to appear in stabs, causing the bootstrap to fail. Using -pipe
-# works around this by not having any temporary file names.
-TARGET_LIBGCC2_CFLAGS = -fPIC -pipe
diff --git a/gcc/config/t-freebsd b/gcc/config/t-freebsd
deleted file mode 100644
index 26316be1efb..00000000000
--- a/gcc/config/t-freebsd
+++ /dev/null
@@ -1,2 +0,0 @@
-# Compile libgcc.a with pic.
-TARGET_LIBGCC2_CFLAGS += -fPIC
diff --git a/gcc/config/t-freebsd-thread b/gcc/config/t-freebsd-thread
deleted file mode 100644
index 6e5c64f78cf..00000000000
--- a/gcc/config/t-freebsd-thread
+++ /dev/null
@@ -1,2 +0,0 @@
-# This is currently needed to compile libgcc2 for threads support
-TARGET_LIBGCC2_CFLAGS += -pthread
diff --git a/gcc/config/t-libgcc-pic b/gcc/config/t-libgcc-pic
deleted file mode 100644
index ff935fe1e05..00000000000
--- a/gcc/config/t-libgcc-pic
+++ /dev/null
@@ -1,2 +0,0 @@
-# Compile libgcc2.a with pic.
-TARGET_LIBGCC2_CFLAGS = -fPIC
diff --git a/gcc/config/t-libunwind b/gcc/config/t-libunwind
index e517778be6f..6ebef7cc837 100644
--- a/gcc/config/t-libunwind
+++ b/gcc/config/t-libunwind
@@ -19,4 +19,3 @@
# Use the system libunwind library.
T_CFLAGS += -DUSE_LIBUNWIND_EXCEPTIONS
-TARGET_LIBGCC2_CFLAGS += -DUSE_GAS_SYMVER
diff --git a/gcc/config/t-linux b/gcc/config/t-linux
deleted file mode 100644
index a5ef25c423b..00000000000
--- a/gcc/config/t-linux
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright (C) 1996, 1997, 1998, 2000, 2001, 2002, 2003,
-# 2004, 2011 Free Software Foundation, Inc.
-#
-# This file is part of GCC.
-#
-# GCC is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 3, or (at your option)
-# any later version.
-#
-# GCC 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with GCC; see the file COPYING3. If not see
-# <http://www.gnu.org/licenses/>.
-
-# Compile libgcc2.a with pic.
-TARGET_LIBGCC2_CFLAGS = -fPIC
diff --git a/gcc/config/t-lynx b/gcc/config/t-lynx
index 4825164ca31..860f61281d0 100644
--- a/gcc/config/t-lynx
+++ b/gcc/config/t-lynx
@@ -16,15 +16,9 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-# Compile libgcc2.a with pic.
-TARGET_LIBGCC2_CFLAGS = -fPIC
-
MULTILIB_OPTIONS = mthreads
MULTILIB_DIRNAMES = thread
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
-
Local Variables:
mode: makefile
End:
diff --git a/gcc/config/t-openbsd-thread b/gcc/config/t-openbsd-thread
deleted file mode 100644
index 5f4edf567c5..00000000000
--- a/gcc/config/t-openbsd-thread
+++ /dev/null
@@ -1,3 +0,0 @@
-# This is currently needed to compile libgcc2 for threads support
-TARGET_LIBGCC2_CFLAGS=-pthread
-
diff --git a/gcc/config/t-rtems b/gcc/config/t-rtems
index dfbd3afe9ee..baa00d83176 100644
--- a/gcc/config/t-rtems
+++ b/gcc/config/t-rtems
@@ -1,7 +1,2 @@
# RTEMS always has limits.h.
LIMITS_H_TEST = true
-
-# If we are building next to newlib, this will let us find the RTEMS
-# limits.h when building libgcc2. Otherwise, newlib must be installed
-# first.
-LIBGCC2_INCLUDES = -I$(srcdir)/../newlib/libc/sys/rtems/include
diff --git a/gcc/config/t-sol2 b/gcc/config/t-sol2
index f9156223593..8646e3625e8 100644
--- a/gcc/config/t-sol2
+++ b/gcc/config/t-sol2
@@ -36,6 +36,3 @@ sol2-stubs.o: $(srcdir)/config/sol2-stubs.c $(CONFIG_H) $(SYSTEM_H) coretypes.h
sol2.o: $(srcdir)/config/sol2.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
tree.h output.h $(TM_H) $(TARGET_H) $(TM_P_H) $(GGC_H)
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
-
-# This is required by gcc/ada/gcc-interface/Makefile.in.
-TARGET_LIBGCC2_CFLAGS = -fPIC
diff --git a/gcc/config/t-svr4 b/gcc/config/t-svr4
deleted file mode 100644
index 5f38f56c9fe..00000000000
--- a/gcc/config/t-svr4
+++ /dev/null
@@ -1,7 +0,0 @@
-# We need to use -fPIC when we are using gcc to compile the routines in
-# crtstuff.c. This is only really needed when we are going to use gcc/g++
-# to produce a shared library, but since we don't know ahead of time when
-# we will be doing that, we just always use -fPIC when compiling the
-# routines in crtstuff.c. Likewise for libgcc2.c.
-
-TARGET_LIBGCC2_CFLAGS = -fPIC
diff --git a/gcc/config/t-vxworks b/gcc/config/t-vxworks
index d29ab66d8bf..9564e1bef55 100644
--- a/gcc/config/t-vxworks
+++ b/gcc/config/t-vxworks
@@ -17,32 +17,10 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-# Build libgcc using the multilib mechanism
-LIBGCC = stmp-multilib
-INSTALL_LIBGCC = install-multilib
-
-# No special flags needed for libgcc.a
-TARGET_LIBGCC2_CFLAGS =
-
-# Don't build libgcc.a with debug info
-LIBGCC2_DEBUG_CFLAGS =
-
-# Extra libgcc2 modules used by gthr-vxworks.h functions
-LIB2FUNCS_EXTRA = $(srcdir)/config/vxlib.c $(srcdir)/config/vxlib-tls.c
-
# Some runtime modules need these. Can't set extra_headers in config.gcc
# because the paths are always made absolute to the cpu config dir.
EXTRA_HEADERS += $(srcdir)/gthr-vxworks.h gthr-default.h
-# This ensures that the correct target headers are used; some
-# VxWorks system headers have names that collide with GCC's
-# internal (host) headers, e.g. regs.h.
-LIBGCC2_INCLUDES = -nostdinc -I \
- `case "/$$(MULTIDIR)" in \
- */mrtp*) echo $(WIND_USR)/h ;; \
- *) echo $(WIND_BASE)/target/h ;; \
- esac`
-
# Both the kernel and RTP headers provide limits.h.
LIMITS_H_TEST = true
diff --git a/gcc/config/udivmod.c b/gcc/config/udivmod.c
deleted file mode 100644
index dc70de64fc7..00000000000
--- a/gcc/config/udivmod.c
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-long udivmodsi4 ();
-
-long
-__udivsi3 (long a, long b)
-{
- return udivmodsi4 (a, b, 0);
-}
-
-long
-__umodsi3 (long a, long b)
-{
- return udivmodsi4 (a, b, 1);
-}
-
diff --git a/gcc/config/udivmodsi4.c b/gcc/config/udivmodsi4.c
deleted file mode 100644
index 39c030fa4df..00000000000
--- a/gcc/config/udivmodsi4.c
+++ /dev/null
@@ -1,47 +0,0 @@
-/* Copyright (C) 2000 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-unsigned long
-udivmodsi4(unsigned long num, unsigned long den, int modwanted)
-{
- unsigned long bit = 1;
- unsigned long res = 0;
-
- while (den < num && bit && !(den & (1L<<31)))
- {
- den <<=1;
- bit <<=1;
- }
- while (bit)
- {
- if (num >= den)
- {
- num -= den;
- res |= bit;
- }
- bit >>=1;
- den >>=1;
- }
- if (modwanted) return num;
- return res;
-}
diff --git a/gcc/config/v850/t-v850 b/gcc/config/v850/t-v850
index 7885229e631..ca7f7ff73aa 100644
--- a/gcc/config/v850/t-v850
+++ b/gcc/config/v850/t-v850
@@ -20,7 +20,6 @@
# Create target-specific versions of the libraries
MULTILIB_OPTIONS = mv850/mv850e/mv850e2/mv850e2v3
MULTILIB_DIRNAMES = v850 v850e v850e2 v850e2v3
-INSTALL_LIBGCC = install-multilib
MULTILIB_MATCHES = mv850e=mv850e1
TCFLAGS = -mno-app-regs -msmall-sld -Wa,-mwarn-signed-overflow -Wa,-mwarn-unsigned-overflow
diff --git a/gcc/config/vxlib-tls.c b/gcc/config/vxlib-tls.c
deleted file mode 100644
index c4696768f0f..00000000000
--- a/gcc/config/vxlib-tls.c
+++ /dev/null
@@ -1,362 +0,0 @@
-/* Copyright (C) 2002, 2003, 2004, 2005, 2009 Free Software Foundation, Inc.
- Contributed by Zack Weinberg <zack@codesourcery.com>
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/* Threads compatibility routines for libgcc2 for VxWorks.
- These are out-of-line routines called from gthr-vxworks.h.
-
- This file provides the TLS related support routines, calling specific
- VxWorks kernel entry points for this purpose. The base VxWorks 5.x kernels
- don't feature these entry points, and we provide gthr_supp_vxw_5x.c as an
- option to fill this gap. Asking users to rebuild a kernel is not to be
- taken lightly, still, so we have isolated these routines from the rest of
- vxlib to ensure that the kernel dependencies are only dragged when really
- necessary. */
-
-#include "tconfig.h"
-#include "tsystem.h"
-#include "gthr.h"
-
-#if defined(__GTHREADS)
-#include <vxWorks.h>
-#ifndef __RTP__
-#include <vxLib.h>
-#endif
-#include <taskLib.h>
-#ifndef __RTP__
-#include <taskHookLib.h>
-#else
-# include <errno.h>
-#endif
-
-/* Thread-local storage.
-
- We reserve a field in the TCB to point to a dynamically allocated
- array which is used to store TLS values. A TLS key is simply an
- offset in this array. The exact location of the TCB field is not
- known to this code nor to vxlib.c -- all access to it indirects
- through the routines __gthread_get_tls_data and
- __gthread_set_tls_data, which are provided by the VxWorks kernel.
-
- There is also a global array which records which keys are valid and
- which have destructors.
-
- A task delete hook is installed to execute key destructors. The
- routines __gthread_enter_tls_dtor_context and
- __gthread_leave_tls_dtor_context, which are also provided by the
- kernel, ensure that it is safe to call free() on memory allocated
- by the task being deleted. (This is a no-op on VxWorks 5, but
- a major undertaking on AE.)
-
- The task delete hook is only installed when at least one thread
- has TLS data. This is a necessary precaution, to allow this module
- to be unloaded - a module with a hook can not be removed.
-
- Since this interface is used to allocate only a small number of
- keys, the table size is small and static, which simplifies the
- code quite a bit. Revisit this if and when it becomes necessary. */
-
-#define MAX_KEYS 4
-
-/* This is the structure pointed to by the pointer returned
- by __gthread_get_tls_data. */
-struct tls_data
-{
- int *owner;
- void *values[MAX_KEYS];
- unsigned int generation[MAX_KEYS];
-};
-
-/* To make sure we only delete TLS data associated with this object,
- include a pointer to a local variable in the TLS data object. */
-static int self_owner;
-
-/* Flag to check whether the delete hook is installed. Once installed
- it is only removed when unloading this module. */
-static volatile int delete_hook_installed;
-
-/* kernel provided routines */
-extern void *__gthread_get_tls_data (void);
-extern void __gthread_set_tls_data (void *data);
-
-extern void __gthread_enter_tls_dtor_context (void);
-extern void __gthread_leave_tls_dtor_context (void);
-
-
-/* This is a global structure which records all of the active keys.
-
- A key is potentially valid (i.e. has been handed out by
- __gthread_key_create) iff its generation count in this structure is
- even. In that case, the matching entry in the dtors array is a
- routine to be called when a thread terminates with a valid,
- non-NULL specific value for that key.
-
- A key is actually valid in a thread T iff the generation count
- stored in this structure is equal to the generation count stored in
- T's specific-value structure. */
-
-typedef void (*tls_dtor) (void *);
-
-struct tls_keys
-{
- tls_dtor dtor[MAX_KEYS];
- unsigned int generation[MAX_KEYS];
-};
-
-#define KEY_VALID_P(key) !(tls_keys.generation[key] & 1)
-
-/* Note: if MAX_KEYS is increased, this initializer must be updated
- to match. All the generation counts begin at 1, which means no
- key is valid. */
-static struct tls_keys tls_keys =
-{
- { 0, 0, 0, 0 },
- { 1, 1, 1, 1 }
-};
-
-/* This lock protects the tls_keys structure. */
-static __gthread_mutex_t tls_lock;
-
-static __gthread_once_t tls_init_guard = __GTHREAD_ONCE_INIT;
-
-/* Internal routines. */
-
-/* The task TCB has just been deleted. Call the destructor
- function for each TLS key that has both a destructor and
- a non-NULL specific value in this thread.
-
- This routine does not need to take tls_lock; the generation
- count protects us from calling a stale destructor. It does
- need to read tls_keys.dtor[key] atomically. */
-
-static void
-tls_delete_hook (void *tcb ATTRIBUTE_UNUSED)
-{
- struct tls_data *data;
- __gthread_key_t key;
-
-#ifdef __RTP__
- data = __gthread_get_tls_data ();
-#else
- /* In kernel mode, we can be called in the context of the thread
- doing the killing, so must use the TCB to determine the data of
- the thread being killed. */
- data = __gthread_get_tsd_data (tcb);
-#endif
-
- if (data && data->owner == &self_owner)
- {
-#ifdef __RTP__
- __gthread_enter_tls_dtor_context ();
-#else
- __gthread_enter_tsd_dtor_context (tcb);
-#endif
- for (key = 0; key < MAX_KEYS; key++)
- {
- if (data->generation[key] == tls_keys.generation[key])
- {
- tls_dtor dtor = tls_keys.dtor[key];
-
- if (dtor)
- dtor (data->values[key]);
- }
- }
- free (data);
-#ifdef __RTP__
- __gthread_leave_tls_dtor_context ();
-#else
- __gthread_leave_tsd_dtor_context ();
-#endif
-
-#ifdef __RTP__
- __gthread_set_tls_data (0);
-#else
- __gthread_set_tsd_data (tcb, 0);
-#endif
- }
-}
-
-/* Initialize global data used by the TLS system. */
-static void
-tls_init (void)
-{
- __GTHREAD_MUTEX_INIT_FUNCTION (&tls_lock);
-}
-
-static void tls_destructor (void) __attribute__ ((destructor));
-static void
-tls_destructor (void)
-{
-#ifdef __RTP__
- /* All threads but this one should have exited by now. */
- tls_delete_hook (NULL);
-#endif
- /* Unregister the hook. */
- if (delete_hook_installed)
- taskDeleteHookDelete ((FUNCPTR)tls_delete_hook);
-
- if (tls_init_guard.done && __gthread_mutex_lock (&tls_lock) != ERROR)
- semDelete (tls_lock);
-}
-
-/* External interface */
-
-/* Store in KEYP a value which can be passed to __gthread_setspecific/
- __gthread_getspecific to store and retrieve a value which is
- specific to each calling thread. If DTOR is not NULL, it will be
- called when a thread terminates with a non-NULL specific value for
- this key, with the value as its sole argument. */
-
-int
-__gthread_key_create (__gthread_key_t *keyp, tls_dtor dtor)
-{
- __gthread_key_t key;
-
- __gthread_once (&tls_init_guard, tls_init);
-
- if (__gthread_mutex_lock (&tls_lock) == ERROR)
- return errno;
-
- for (key = 0; key < MAX_KEYS; key++)
- if (!KEY_VALID_P (key))
- goto found_slot;
-
- /* no room */
- __gthread_mutex_unlock (&tls_lock);
- return EAGAIN;
-
- found_slot:
- tls_keys.generation[key]++; /* making it even */
- tls_keys.dtor[key] = dtor;
- *keyp = key;
- __gthread_mutex_unlock (&tls_lock);
- return 0;
-}
-
-/* Invalidate KEY; it can no longer be used as an argument to
- setspecific/getspecific. Note that this does NOT call destructor
- functions for any live values for this key. */
-int
-__gthread_key_delete (__gthread_key_t key)
-{
- if (key >= MAX_KEYS)
- return EINVAL;
-
- __gthread_once (&tls_init_guard, tls_init);
-
- if (__gthread_mutex_lock (&tls_lock) == ERROR)
- return errno;
-
- if (!KEY_VALID_P (key))
- {
- __gthread_mutex_unlock (&tls_lock);
- return EINVAL;
- }
-
- tls_keys.generation[key]++; /* making it odd */
- tls_keys.dtor[key] = 0;
-
- __gthread_mutex_unlock (&tls_lock);
- return 0;
-}
-
-/* Retrieve the thread-specific value for KEY. If it has never been
- set in this thread, or KEY is invalid, returns NULL.
-
- It does not matter if this function races with key_create or
- key_delete; the worst that can happen is you get a value other than
- the one that a serialized implementation would have provided. */
-
-void *
-__gthread_getspecific (__gthread_key_t key)
-{
- struct tls_data *data;
-
- if (key >= MAX_KEYS)
- return 0;
-
- data = __gthread_get_tls_data ();
-
- if (!data)
- return 0;
-
- if (data->generation[key] != tls_keys.generation[key])
- return 0;
-
- return data->values[key];
-}
-
-/* Set the thread-specific value for KEY. If KEY is invalid, or
- memory allocation fails, returns -1, otherwise 0.
-
- The generation count protects this function against races with
- key_create/key_delete; the worst thing that can happen is that a
- value is successfully stored into a dead generation (and then
- immediately becomes invalid). However, we do have to make sure
- to read tls_keys.generation[key] atomically. */
-
-int
-__gthread_setspecific (__gthread_key_t key, void *value)
-{
- struct tls_data *data;
- unsigned int generation;
-
- if (key >= MAX_KEYS)
- return EINVAL;
-
- data = __gthread_get_tls_data ();
- if (!data)
- {
- if (!delete_hook_installed)
- {
- /* Install the delete hook. */
- if (__gthread_mutex_lock (&tls_lock) == ERROR)
- return ENOMEM;
- if (!delete_hook_installed)
- {
- taskDeleteHookAdd ((FUNCPTR)tls_delete_hook);
- delete_hook_installed = 1;
- }
- __gthread_mutex_unlock (&tls_lock);
- }
-
- data = malloc (sizeof (struct tls_data));
- if (!data)
- return ENOMEM;
-
- memset (data, 0, sizeof (struct tls_data));
- data->owner = &self_owner;
- __gthread_set_tls_data (data);
- }
-
- generation = tls_keys.generation[key];
-
- if (generation & 1)
- return EINVAL;
-
- data->generation[key] = generation;
- data->values[key] = value;
-
- return 0;
-}
-#endif /* __GTHREADS */
diff --git a/gcc/config/vxlib.c b/gcc/config/vxlib.c
deleted file mode 100644
index 0ff996cfced..00000000000
--- a/gcc/config/vxlib.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/* Copyright (C) 2002, 2003, 2004, 2005, 2009 Free Software Foundation, Inc.
- Contributed by Zack Weinberg <zack@codesourcery.com>
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/* Threads compatibility routines for libgcc2 for VxWorks.
- These are out-of-line routines called from gthr-vxworks.h. */
-
-#include "tconfig.h"
-#include "tsystem.h"
-#include "gthr.h"
-
-#if defined(__GTHREADS)
-#include <vxWorks.h>
-#ifndef __RTP__
-#include <vxLib.h>
-#endif
-#include <taskLib.h>
-#ifndef __RTP__
-#include <taskHookLib.h>
-#else
-# include <errno.h>
-#endif
-
-/* Init-once operation.
-
- This would be a clone of the implementation from gthr-solaris.h,
- except that we have a bootstrap problem - the whole point of this
- exercise is to prevent double initialization, but if two threads
- are racing with each other, once->mutex is liable to be initialized
- by both. Then each thread will lock its own mutex, and proceed to
- call the initialization routine.
-
- So instead we use a bare atomic primitive (vxTas()) to handle
- mutual exclusion. Threads losing the race then busy-wait, calling
- taskDelay() to yield the processor, until the initialization is
- completed. Inefficient, but reliable. */
-
-int
-__gthread_once (__gthread_once_t *guard, void (*func)(void))
-{
- if (guard->done)
- return 0;
-
-#ifdef __RTP__
- __gthread_lock_library ();
-#else
- while (!vxTas ((void *)&guard->busy))
- {
-#ifdef __PPC__
- /* This can happen on powerpc, which is using all 32 bits
- of the gthread_once_t structure. */
- if (guard->done)
- return;
-#endif
- taskDelay (1);
- }
-#endif
-
- /* Only one thread at a time gets here. Check ->done again, then
- go ahead and call func() if no one has done it yet. */
- if (!guard->done)
- {
- func ();
- guard->done = 1;
- }
-
-#ifdef __RTP__
- __gthread_unlock_library ();
-#else
- guard->busy = 0;
-#endif
- return 0;
-}
-
-#endif /* __GTHREADS */
diff --git a/gcc/config/xtensa/lib2funcs.S b/gcc/config/xtensa/lib2funcs.S
deleted file mode 100644
index 65134e24ccf..00000000000
--- a/gcc/config/xtensa/lib2funcs.S
+++ /dev/null
@@ -1,186 +0,0 @@
-/* Assembly functions for libgcc2.
- Copyright (C) 2001, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
- Contributed by Bob Wilson (bwilson@tensilica.com) at Tensilica.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "xtensa-config.h"
-
-/* __xtensa_libgcc_window_spill: This function flushes out all but the
- current register window. This is used to set up the stack so that
- arbitrary frames can be accessed. */
-
- .align 4
- .global __xtensa_libgcc_window_spill
- .type __xtensa_libgcc_window_spill,@function
-__xtensa_libgcc_window_spill:
- entry sp, 32
- movi a2, 0
- syscall
- retw
- .size __xtensa_libgcc_window_spill, .-__xtensa_libgcc_window_spill
-
-
-/* __xtensa_nonlocal_goto: This code does all the hard work of a
- nonlocal goto on Xtensa. It is here in the library to avoid the
- code size bloat of generating it in-line. There are two
- arguments:
-
- a2 = frame pointer for the procedure containing the label
- a3 = goto handler address
-
- This function never returns to its caller but instead goes directly
- to the address of the specified goto handler. */
-
- .align 4
- .global __xtensa_nonlocal_goto
- .type __xtensa_nonlocal_goto,@function
-__xtensa_nonlocal_goto:
- entry sp, 32
-
- /* Flush registers. */
- mov a5, a2
- movi a2, 0
- syscall
- mov a2, a5
-
- /* Because the save area for a0-a3 is stored one frame below
- the one identified by a2, the only way to restore those
- registers is to unwind the stack. If alloca() were never
- called, we could just unwind until finding the sp value
- matching a2. However, a2 is a frame pointer, not a stack
- pointer, and may not be encountered during the unwinding.
- The solution is to unwind until going _past_ the value
- given by a2. This involves keeping three stack pointer
- values during the unwinding:
-
- next = sp of frame N-1
- cur = sp of frame N
- prev = sp of frame N+1
-
- When next > a2, the desired save area is stored relative
- to prev. At this point, cur will be the same as a2
- except in the alloca() case.
-
- Besides finding the values to be restored to a0-a3, we also
- need to find the current window size for the target
- function. This can be extracted from the high bits of the
- return address, initially in a0. As the unwinding
- proceeds, the window size is taken from the value of a0
- saved _two_ frames below the current frame. */
-
- addi a5, sp, -16 /* a5 = prev - save area */
- l32i a6, a5, 4
- addi a6, a6, -16 /* a6 = cur - save area */
- mov a8, a0 /* a8 = return address (for window size) */
- j .Lfirstframe
-
-.Lnextframe:
- l32i a8, a5, 0 /* next return address (for window size) */
- mov a5, a6 /* advance prev */
- addi a6, a7, -16 /* advance cur */
-.Lfirstframe:
- l32i a7, a6, 4 /* a7 = next */
- bgeu a2, a7, .Lnextframe
-
- /* At this point, prev (a5) points to the save area with the saved
- values of a0-a3. Copy those values into the save area at the
- current sp so they will be reloaded when the return from this
- function underflows. We don't have to worry about exceptions
- while updating the current save area, because the windows have
- already been flushed. */
-
- addi a4, sp, -16 /* a4 = save area of this function */
- l32i a6, a5, 0
- l32i a7, a5, 4
- s32i a6, a4, 0
- s32i a7, a4, 4
- l32i a6, a5, 8
- l32i a7, a5, 12
- s32i a6, a4, 8
- s32i a7, a4, 12
-
- /* Set return address to goto handler. Use the window size bits
- from the return address two frames below the target. */
- extui a8, a8, 30, 2 /* get window size from return addr. */
- slli a3, a3, 2 /* get goto handler addr. << 2 */
- ssai 2
- src a0, a8, a3 /* combine them with a funnel shift */
-
- retw
- .size __xtensa_nonlocal_goto, .-__xtensa_nonlocal_goto
-
-
-/* __xtensa_sync_caches: This function is called after writing a trampoline
- on the stack to force all the data writes to memory and invalidate the
- instruction cache. a2 is the address of the new trampoline.
-
- After the trampoline data is written out, it must be flushed out of
- the data cache into memory. We use DHWB in case we have a writeback
- cache. At least one DHWB instruction is needed for each data cache
- line which may be touched by the trampoline. An ISYNC instruction
- must follow the DHWBs.
-
- We have to flush the i-cache to make sure that the new values get used.
- At least one IHI instruction is needed for each i-cache line which may
- be touched by the trampoline. An ISYNC instruction is also needed to
- make sure that the modified instructions are loaded into the instruction
- fetch buffer. */
-
-/* Use the maximum trampoline size. Flushing a bit extra is OK. */
-#define TRAMPOLINE_SIZE 60
-
- .text
- .align 4
- .global __xtensa_sync_caches
- .type __xtensa_sync_caches,@function
-__xtensa_sync_caches:
- entry sp, 32
-#if XCHAL_DCACHE_SIZE > 0
- /* Flush the trampoline from the data cache. */
- extui a4, a2, 0, XCHAL_DCACHE_LINEWIDTH
- addi a4, a4, TRAMPOLINE_SIZE
- addi a4, a4, (1 << XCHAL_DCACHE_LINEWIDTH) - 1
- srli a4, a4, XCHAL_DCACHE_LINEWIDTH
- mov a3, a2
-.Ldcache_loop:
- dhwb a3, 0
- addi a3, a3, (1 << XCHAL_DCACHE_LINEWIDTH)
- addi a4, a4, -1
- bnez a4, .Ldcache_loop
- isync
-#endif
-#if XCHAL_ICACHE_SIZE > 0
- /* Invalidate the corresponding lines in the instruction cache. */
- extui a4, a2, 0, XCHAL_ICACHE_LINEWIDTH
- addi a4, a4, TRAMPOLINE_SIZE
- addi a4, a4, (1 << XCHAL_ICACHE_LINEWIDTH) - 1
- srli a4, a4, XCHAL_ICACHE_LINEWIDTH
-.Licache_loop:
- ihi a2, 0
- addi a2, a2, (1 << XCHAL_ICACHE_LINEWIDTH)
- addi a4, a4, -1
- bnez a4, .Licache_loop
-#endif
- isync
- retw
- .size __xtensa_sync_caches, .-__xtensa_sync_caches
diff --git a/gcc/config/xtensa/t-elf b/gcc/config/xtensa/t-elf
deleted file mode 100644
index 76f4ef3f304..00000000000
--- a/gcc/config/xtensa/t-elf
+++ /dev/null
@@ -1 +0,0 @@
-TARGET_LIBGCC2_CFLAGS += -mlongcalls
diff --git a/gcc/config/xtensa/t-xtensa b/gcc/config/xtensa/t-xtensa
index 31ac2ad2452..6ec56969fe4 100644
--- a/gcc/config/xtensa/t-xtensa
+++ b/gcc/config/xtensa/t-xtensa
@@ -17,6 +17,4 @@
# along with GCC; see the file COPYING3. If not see
# <http://www.gnu.org/licenses/>.
-LIB2FUNCS_EXTRA = $(srcdir)/config/xtensa/lib2funcs.S
-
$(out_object_file): gt-xtensa.h
diff --git a/gcc/gbl-ctors.h b/gcc/gbl-ctors.h
deleted file mode 100644
index ac4faae1292..00000000000
--- a/gcc/gbl-ctors.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/* Definitions relating to the special __do_global_init function used
- for getting g++ file-scope static objects constructed. This file
- will get included either by libgcc2.c (for systems that don't support
- a .init section) or by crtstuff.c (for those that do).
- Copyright (C) 1991, 1995, 1996, 1998, 1999, 2000, 2003, 2009
- Free Software Foundation, Inc.
- Contributed by Ron Guilmette (rfg@segfault.us.com)
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-/* This file contains definitions and declarations of things
- relating to the normal start-up-time invocation of C++
- file-scope static object constructors. These declarations
- and definitions are used by *both* libgcc2.c and by crtstuff.c.
-
- Note that this file should only be compiled with GCC.
-*/
-
-#ifndef GCC_GBL_CTORS_H
-#define GCC_GBL_CTORS_H
-
-/* Declare a pointer to void function type. */
-
-typedef void (*func_ptr) (void);
-
-/* Declare the set of symbols use as begin and end markers for the lists
- of global object constructors and global object destructors. */
-
-extern func_ptr __CTOR_LIST__[];
-extern func_ptr __DTOR_LIST__[];
-
-/* Declare the routine which needs to get invoked at program start time. */
-
-extern void __do_global_ctors (void);
-
-/* Declare the routine which needs to get invoked at program exit time. */
-
-extern void __do_global_dtors (void);
-
-/* Define a macro with the code which needs to be executed at program
- start-up time. This macro is used in two places in crtstuff.c (for
- systems which support a .init section) and in one place in libgcc2.c
- (for those system which do *not* support a .init section). For all
- three places where this code might appear, it must be identical, so
- we define it once here as a macro to avoid various instances getting
- out-of-sync with one another. */
-
-/* Some systems place the number of pointers
- in the first word of the table.
- On other systems, that word is -1.
- In all cases, the table is null-terminated.
- If the length is not recorded, count up to the null. */
-
-/* Some systems use a different strategy for finding the ctors.
- For example, svr3. */
-#ifndef DO_GLOBAL_CTORS_BODY
-#define DO_GLOBAL_CTORS_BODY \
-do { \
- __SIZE_TYPE__ nptrs = (__SIZE_TYPE__) __CTOR_LIST__[0]; \
- unsigned i; \
- if (nptrs == (__SIZE_TYPE__)-1) \
- for (nptrs = 0; __CTOR_LIST__[nptrs + 1] != 0; nptrs++); \
- for (i = nptrs; i >= 1; i--) \
- __CTOR_LIST__[i] (); \
-} while (0)
-#endif
-
-#endif /* GCC_GBL_CTORS_H */
diff --git a/gcc/gthr-posix.c b/gcc/gthr-posix.c
deleted file mode 100644
index 1987ba738c2..00000000000
--- a/gcc/gthr-posix.c
+++ /dev/null
@@ -1,264 +0,0 @@
-/* POSIX threads dummy routines for systems without weak definitions. */
-/* Compile this one with gcc. */
-/* Copyright (C) 2003, 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "tconfig.h"
-#include "tm.h"
-# define __gthrw_pragma(pragma) _Pragma (#pragma)
-/* Define so we provide weak definitions of functions used by libobjc only. */
-#define _LIBOBJC_WEAK
-#include "gthr.h"
-
-int
-pthread_once (pthread_once_t *once ATTRIBUTE_UNUSED,
- void (*func) (void) ATTRIBUTE_UNUSED)
-{
- return -1;
-}
-
-int
-pthread_key_create (pthread_key_t *key ATTRIBUTE_UNUSED,
- void (*dtor) (void *) ATTRIBUTE_UNUSED)
-{
- return -1;
-}
-
-int
-pthread_key_delete (pthread_key_t key ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-void *
-pthread_getspecific (pthread_key_t key ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-int
-pthread_setspecific (pthread_key_t key ATTRIBUTE_UNUSED,
- const void *ptr ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-int
-pthread_create (pthread_t *thread ATTRIBUTE_UNUSED,
- const pthread_attr_t *attr ATTRIBUTE_UNUSED,
- void *(*start_routine) (void *) ATTRIBUTE_UNUSED,
- void *arg ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-int
-pthread_join (pthread_t thread ATTRIBUTE_UNUSED,
- void **value_ptr ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-void
-pthread_exit (void *value_ptr ATTRIBUTE_UNUSED)
-{
-}
-
-int
-pthread_detach (pthread_t thread ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-int
-pthread_cancel (pthread_t thread ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-int
-pthread_mutex_lock (pthread_mutex_t *mutex ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-int
-pthread_mutex_trylock (pthread_mutex_t *mutex ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-#ifdef _POSIX_TIMEOUTS
-#if _POSIX_TIMEOUTS >= 0
-int
-pthread_mutex_timedlock (pthread_mutex_t *mutex ATTRIBUTE_UNUSED,
- const struct timespec *abs_timeout ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-#endif
-#endif /* _POSIX_TIMEOUTS */
-
-int
-pthread_mutex_unlock (pthread_mutex_t *mutex ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-int
-pthread_mutexattr_init (pthread_mutexattr_t *attr ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-int
-pthread_mutexattr_settype (pthread_mutexattr_t *attr ATTRIBUTE_UNUSED,
- int type ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-int
-pthread_mutexattr_destroy (pthread_mutexattr_t *attr ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-int
-pthread_cond_broadcast (pthread_cond_t *cond ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-int
-pthread_cond_destroy (pthread_cond_t *cond ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-int
-pthread_cond_init (pthread_cond_t *cond ATTRIBUTE_UNUSED,
- const pthread_condattr_t *attr ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-int
-pthread_cond_signal (pthread_cond_t *cond ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-int
-pthread_cond_wait (pthread_cond_t *cond ATTRIBUTE_UNUSED,
- pthread_mutex_t *mutex ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-int
-pthread_cond_timedwait (pthread_cond_t *cond ATTRIBUTE_UNUSED,
- pthread_mutex_t *mutex ATTRIBUTE_UNUSED,
- const struct timespec *abstime ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-int
-pthread_mutex_init (pthread_mutex_t *mutex ATTRIBUTE_UNUSED,
- const pthread_mutexattr_t *attr ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-int
-pthread_mutex_destroy (pthread_mutex_t *mutex ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-pthread_t
-pthread_self (void)
-{
- return (pthread_t) 0;
-}
-
-#ifdef _POSIX_PRIORITY_SCHEDULING
-#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
-int
-sched_get_priority_max (int policy ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-int
-sched_get_priority_min (int policy ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
-#endif /* _POSIX_PRIORITY_SCHEDULING */
-
-int
-sched_yield (void)
-{
- return 0;
-}
-
-int
-pthread_attr_destroy (pthread_attr_t *attr ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-int
-pthread_attr_init (pthread_attr_t *attr ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-int
-pthread_attr_setdetachstate (pthread_attr_t *attr ATTRIBUTE_UNUSED,
- int detachstate ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-#ifdef _POSIX_THREAD_PRIORITY_SCHEDULING
-int
-pthread_getschedparam (pthread_t thread ATTRIBUTE_UNUSED,
- int *policy ATTRIBUTE_UNUSED,
- struct sched_param *param ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-
-int
-pthread_setschedparam (pthread_t thread ATTRIBUTE_UNUSED,
- int policy ATTRIBUTE_UNUSED,
- const struct sched_param *param ATTRIBUTE_UNUSED)
-{
- return 0;
-}
-#endif /* _POSIX_THREAD_PRIORITY_SCHEDULING */
-
diff --git a/gcc/libgcc2.c b/gcc/libgcc2.c
deleted file mode 100644
index 57c40c5800f..00000000000
--- a/gcc/libgcc2.c
+++ /dev/null
@@ -1,2252 +0,0 @@
-/* More subroutines needed by GCC output code on some machines. */
-/* Compile this one with gcc. */
-/* Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
- 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#include "tconfig.h"
-#include "tsystem.h"
-#include "coretypes.h"
-#include "tm.h"
-
-#ifdef HAVE_GAS_HIDDEN
-#define ATTRIBUTE_HIDDEN __attribute__ ((__visibility__ ("hidden")))
-#else
-#define ATTRIBUTE_HIDDEN
-#endif
-
-/* Work out the largest "word" size that we can deal with on this target. */
-#if MIN_UNITS_PER_WORD > 4
-# define LIBGCC2_MAX_UNITS_PER_WORD 8
-#elif (MIN_UNITS_PER_WORD > 2 \
- || (MIN_UNITS_PER_WORD > 1 && __SIZEOF_LONG_LONG__ > 4))
-# define LIBGCC2_MAX_UNITS_PER_WORD 4
-#else
-# define LIBGCC2_MAX_UNITS_PER_WORD MIN_UNITS_PER_WORD
-#endif
-
-/* Work out what word size we are using for this compilation.
- The value can be set on the command line. */
-#ifndef LIBGCC2_UNITS_PER_WORD
-#define LIBGCC2_UNITS_PER_WORD LIBGCC2_MAX_UNITS_PER_WORD
-#endif
-
-#if LIBGCC2_UNITS_PER_WORD <= LIBGCC2_MAX_UNITS_PER_WORD
-
-#include "libgcc2.h"
-
-#ifdef DECLARE_LIBRARY_RENAMES
- DECLARE_LIBRARY_RENAMES
-#endif
-
-#if defined (L_negdi2)
-DWtype
-__negdi2 (DWtype u)
-{
- const DWunion uu = {.ll = u};
- const DWunion w = { {.low = -uu.s.low,
- .high = -uu.s.high - ((UWtype) -uu.s.low > 0) } };
-
- return w.ll;
-}
-#endif
-
-#ifdef L_addvsi3
-Wtype
-__addvSI3 (Wtype a, Wtype b)
-{
- const Wtype w = (UWtype) a + (UWtype) b;
-
- if (b >= 0 ? w < a : w > a)
- abort ();
-
- return w;
-}
-#ifdef COMPAT_SIMODE_TRAPPING_ARITHMETIC
-SItype
-__addvsi3 (SItype a, SItype b)
-{
- const SItype w = (USItype) a + (USItype) b;
-
- if (b >= 0 ? w < a : w > a)
- abort ();
-
- return w;
-}
-#endif /* COMPAT_SIMODE_TRAPPING_ARITHMETIC */
-#endif
-
-#ifdef L_addvdi3
-DWtype
-__addvDI3 (DWtype a, DWtype b)
-{
- const DWtype w = (UDWtype) a + (UDWtype) b;
-
- if (b >= 0 ? w < a : w > a)
- abort ();
-
- return w;
-}
-#endif
-
-#ifdef L_subvsi3
-Wtype
-__subvSI3 (Wtype a, Wtype b)
-{
- const Wtype w = (UWtype) a - (UWtype) b;
-
- if (b >= 0 ? w > a : w < a)
- abort ();
-
- return w;
-}
-#ifdef COMPAT_SIMODE_TRAPPING_ARITHMETIC
-SItype
-__subvsi3 (SItype a, SItype b)
-{
- const SItype w = (USItype) a - (USItype) b;
-
- if (b >= 0 ? w > a : w < a)
- abort ();
-
- return w;
-}
-#endif /* COMPAT_SIMODE_TRAPPING_ARITHMETIC */
-#endif
-
-#ifdef L_subvdi3
-DWtype
-__subvDI3 (DWtype a, DWtype b)
-{
- const DWtype w = (UDWtype) a - (UDWtype) b;
-
- if (b >= 0 ? w > a : w < a)
- abort ();
-
- return w;
-}
-#endif
-
-#ifdef L_mulvsi3
-Wtype
-__mulvSI3 (Wtype a, Wtype b)
-{
- const DWtype w = (DWtype) a * (DWtype) b;
-
- if ((Wtype) (w >> W_TYPE_SIZE) != (Wtype) w >> (W_TYPE_SIZE - 1))
- abort ();
-
- return w;
-}
-#ifdef COMPAT_SIMODE_TRAPPING_ARITHMETIC
-#undef WORD_SIZE
-#define WORD_SIZE (sizeof (SItype) * BITS_PER_UNIT)
-SItype
-__mulvsi3 (SItype a, SItype b)
-{
- const DItype w = (DItype) a * (DItype) b;
-
- if ((SItype) (w >> WORD_SIZE) != (SItype) w >> (WORD_SIZE-1))
- abort ();
-
- return w;
-}
-#endif /* COMPAT_SIMODE_TRAPPING_ARITHMETIC */
-#endif
-
-#ifdef L_negvsi2
-Wtype
-__negvSI2 (Wtype a)
-{
- const Wtype w = -(UWtype) a;
-
- if (a >= 0 ? w > 0 : w < 0)
- abort ();
-
- return w;
-}
-#ifdef COMPAT_SIMODE_TRAPPING_ARITHMETIC
-SItype
-__negvsi2 (SItype a)
-{
- const SItype w = -(USItype) a;
-
- if (a >= 0 ? w > 0 : w < 0)
- abort ();
-
- return w;
-}
-#endif /* COMPAT_SIMODE_TRAPPING_ARITHMETIC */
-#endif
-
-#ifdef L_negvdi2
-DWtype
-__negvDI2 (DWtype a)
-{
- const DWtype w = -(UDWtype) a;
-
- if (a >= 0 ? w > 0 : w < 0)
- abort ();
-
- return w;
-}
-#endif
-
-#ifdef L_absvsi2
-Wtype
-__absvSI2 (Wtype a)
-{
- Wtype w = a;
-
- if (a < 0)
-#ifdef L_negvsi2
- w = __negvSI2 (a);
-#else
- w = -(UWtype) a;
-
- if (w < 0)
- abort ();
-#endif
-
- return w;
-}
-#ifdef COMPAT_SIMODE_TRAPPING_ARITHMETIC
-SItype
-__absvsi2 (SItype a)
-{
- SItype w = a;
-
- if (a < 0)
-#ifdef L_negvsi2
- w = __negvsi2 (a);
-#else
- w = -(USItype) a;
-
- if (w < 0)
- abort ();
-#endif
-
- return w;
-}
-#endif /* COMPAT_SIMODE_TRAPPING_ARITHMETIC */
-#endif
-
-#ifdef L_absvdi2
-DWtype
-__absvDI2 (DWtype a)
-{
- DWtype w = a;
-
- if (a < 0)
-#ifdef L_negvdi2
- w = __negvDI2 (a);
-#else
- w = -(UDWtype) a;
-
- if (w < 0)
- abort ();
-#endif
-
- return w;
-}
-#endif
-
-#ifdef L_mulvdi3
-DWtype
-__mulvDI3 (DWtype u, DWtype v)
-{
- /* The unchecked multiplication needs 3 Wtype x Wtype multiplications,
- but the checked multiplication needs only two. */
- const DWunion uu = {.ll = u};
- const DWunion vv = {.ll = v};
-
- if (__builtin_expect (uu.s.high == uu.s.low >> (W_TYPE_SIZE - 1), 1))
- {
- /* u fits in a single Wtype. */
- if (__builtin_expect (vv.s.high == vv.s.low >> (W_TYPE_SIZE - 1), 1))
- {
- /* v fits in a single Wtype as well. */
- /* A single multiplication. No overflow risk. */
- return (DWtype) uu.s.low * (DWtype) vv.s.low;
- }
- else
- {
- /* Two multiplications. */
- DWunion w0 = {.ll = (UDWtype) (UWtype) uu.s.low
- * (UDWtype) (UWtype) vv.s.low};
- DWunion w1 = {.ll = (UDWtype) (UWtype) uu.s.low
- * (UDWtype) (UWtype) vv.s.high};
-
- if (vv.s.high < 0)
- w1.s.high -= uu.s.low;
- if (uu.s.low < 0)
- w1.ll -= vv.ll;
- w1.ll += (UWtype) w0.s.high;
- if (__builtin_expect (w1.s.high == w1.s.low >> (W_TYPE_SIZE - 1), 1))
- {
- w0.s.high = w1.s.low;
- return w0.ll;
- }
- }
- }
- else
- {
- if (__builtin_expect (vv.s.high == vv.s.low >> (W_TYPE_SIZE - 1), 1))
- {
- /* v fits into a single Wtype. */
- /* Two multiplications. */
- DWunion w0 = {.ll = (UDWtype) (UWtype) uu.s.low
- * (UDWtype) (UWtype) vv.s.low};
- DWunion w1 = {.ll = (UDWtype) (UWtype) uu.s.high
- * (UDWtype) (UWtype) vv.s.low};
-
- if (uu.s.high < 0)
- w1.s.high -= vv.s.low;
- if (vv.s.low < 0)
- w1.ll -= uu.ll;
- w1.ll += (UWtype) w0.s.high;
- if (__builtin_expect (w1.s.high == w1.s.low >> (W_TYPE_SIZE - 1), 1))
- {
- w0.s.high = w1.s.low;
- return w0.ll;
- }
- }
- else
- {
- /* A few sign checks and a single multiplication. */
- if (uu.s.high >= 0)
- {
- if (vv.s.high >= 0)
- {
- if (uu.s.high == 0 && vv.s.high == 0)
- {
- const DWtype w = (UDWtype) (UWtype) uu.s.low
- * (UDWtype) (UWtype) vv.s.low;
- if (__builtin_expect (w >= 0, 1))
- return w;
- }
- }
- else
- {
- if (uu.s.high == 0 && vv.s.high == (Wtype) -1)
- {
- DWunion ww = {.ll = (UDWtype) (UWtype) uu.s.low
- * (UDWtype) (UWtype) vv.s.low};
-
- ww.s.high -= uu.s.low;
- if (__builtin_expect (ww.s.high < 0, 1))
- return ww.ll;
- }
- }
- }
- else
- {
- if (vv.s.high >= 0)
- {
- if (uu.s.high == (Wtype) -1 && vv.s.high == 0)
- {
- DWunion ww = {.ll = (UDWtype) (UWtype) uu.s.low
- * (UDWtype) (UWtype) vv.s.low};
-
- ww.s.high -= vv.s.low;
- if (__builtin_expect (ww.s.high < 0, 1))
- return ww.ll;
- }
- }
- else
- {
- if (uu.s.high == (Wtype) -1 && vv.s.high == (Wtype) - 1)
- {
- DWunion ww = {.ll = (UDWtype) (UWtype) uu.s.low
- * (UDWtype) (UWtype) vv.s.low};
-
- ww.s.high -= uu.s.low;
- ww.s.high -= vv.s.low;
- if (__builtin_expect (ww.s.high >= 0, 1))
- return ww.ll;
- }
- }
- }
- }
- }
-
- /* Overflow. */
- abort ();
-}
-#endif
-
-
-/* Unless shift functions are defined with full ANSI prototypes,
- parameter b will be promoted to int if shift_count_type is smaller than an int. */
-#ifdef L_lshrdi3
-DWtype
-__lshrdi3 (DWtype u, shift_count_type b)
-{
- if (b == 0)
- return u;
-
- const DWunion uu = {.ll = u};
- const shift_count_type bm = W_TYPE_SIZE - b;
- DWunion w;
-
- if (bm <= 0)
- {
- w.s.high = 0;
- w.s.low = (UWtype) uu.s.high >> -bm;
- }
- else
- {
- const UWtype carries = (UWtype) uu.s.high << bm;
-
- w.s.high = (UWtype) uu.s.high >> b;
- w.s.low = ((UWtype) uu.s.low >> b) | carries;
- }
-
- return w.ll;
-}
-#endif
-
-#ifdef L_ashldi3
-DWtype
-__ashldi3 (DWtype u, shift_count_type b)
-{
- if (b == 0)
- return u;
-
- const DWunion uu = {.ll = u};
- const shift_count_type bm = W_TYPE_SIZE - b;
- DWunion w;
-
- if (bm <= 0)
- {
- w.s.low = 0;
- w.s.high = (UWtype) uu.s.low << -bm;
- }
- else
- {
- const UWtype carries = (UWtype) uu.s.low >> bm;
-
- w.s.low = (UWtype) uu.s.low << b;
- w.s.high = ((UWtype) uu.s.high << b) | carries;
- }
-
- return w.ll;
-}
-#endif
-
-#ifdef L_ashrdi3
-DWtype
-__ashrdi3 (DWtype u, shift_count_type b)
-{
- if (b == 0)
- return u;
-
- const DWunion uu = {.ll = u};
- const shift_count_type bm = W_TYPE_SIZE - b;
- DWunion w;
-
- if (bm <= 0)
- {
- /* w.s.high = 1..1 or 0..0 */
- w.s.high = uu.s.high >> (W_TYPE_SIZE - 1);
- w.s.low = uu.s.high >> -bm;
- }
- else
- {
- const UWtype carries = (UWtype) uu.s.high << bm;
-
- w.s.high = uu.s.high >> b;
- w.s.low = ((UWtype) uu.s.low >> b) | carries;
- }
-
- return w.ll;
-}
-#endif
-
-#ifdef L_bswapsi2
-SItype
-__bswapsi2 (SItype u)
-{
- return ((((u) & 0xff000000) >> 24)
- | (((u) & 0x00ff0000) >> 8)
- | (((u) & 0x0000ff00) << 8)
- | (((u) & 0x000000ff) << 24));
-}
-#endif
-#ifdef L_bswapdi2
-DItype
-__bswapdi2 (DItype u)
-{
- return ((((u) & 0xff00000000000000ull) >> 56)
- | (((u) & 0x00ff000000000000ull) >> 40)
- | (((u) & 0x0000ff0000000000ull) >> 24)
- | (((u) & 0x000000ff00000000ull) >> 8)
- | (((u) & 0x00000000ff000000ull) << 8)
- | (((u) & 0x0000000000ff0000ull) << 24)
- | (((u) & 0x000000000000ff00ull) << 40)
- | (((u) & 0x00000000000000ffull) << 56));
-}
-#endif
-#ifdef L_ffssi2
-#undef int
-int
-__ffsSI2 (UWtype u)
-{
- UWtype count;
-
- if (u == 0)
- return 0;
-
- count_trailing_zeros (count, u);
- return count + 1;
-}
-#endif
-
-#ifdef L_ffsdi2
-#undef int
-int
-__ffsDI2 (DWtype u)
-{
- const DWunion uu = {.ll = u};
- UWtype word, count, add;
-
- if (uu.s.low != 0)
- word = uu.s.low, add = 0;
- else if (uu.s.high != 0)
- word = uu.s.high, add = W_TYPE_SIZE;
- else
- return 0;
-
- count_trailing_zeros (count, word);
- return count + add + 1;
-}
-#endif
-
-#ifdef L_muldi3
-DWtype
-__muldi3 (DWtype u, DWtype v)
-{
- const DWunion uu = {.ll = u};
- const DWunion vv = {.ll = v};
- DWunion w = {.ll = __umulsidi3 (uu.s.low, vv.s.low)};
-
- w.s.high += ((UWtype) uu.s.low * (UWtype) vv.s.high
- + (UWtype) uu.s.high * (UWtype) vv.s.low);
-
- return w.ll;
-}
-#endif
-
-#if (defined (L_udivdi3) || defined (L_divdi3) || \
- defined (L_umoddi3) || defined (L_moddi3))
-#if defined (sdiv_qrnnd)
-#define L_udiv_w_sdiv
-#endif
-#endif
-
-#ifdef L_udiv_w_sdiv
-#if defined (sdiv_qrnnd)
-#if (defined (L_udivdi3) || defined (L_divdi3) || \
- defined (L_umoddi3) || defined (L_moddi3))
-static inline __attribute__ ((__always_inline__))
-#endif
-UWtype
-__udiv_w_sdiv (UWtype *rp, UWtype a1, UWtype a0, UWtype d)
-{
- UWtype q, r;
- UWtype c0, c1, b1;
-
- if ((Wtype) d >= 0)
- {
- if (a1 < d - a1 - (a0 >> (W_TYPE_SIZE - 1)))
- {
- /* Dividend, divisor, and quotient are nonnegative. */
- sdiv_qrnnd (q, r, a1, a0, d);
- }
- else
- {
- /* Compute c1*2^32 + c0 = a1*2^32 + a0 - 2^31*d. */
- sub_ddmmss (c1, c0, a1, a0, d >> 1, d << (W_TYPE_SIZE - 1));
- /* Divide (c1*2^32 + c0) by d. */
- sdiv_qrnnd (q, r, c1, c0, d);
- /* Add 2^31 to quotient. */
- q += (UWtype) 1 << (W_TYPE_SIZE - 1);
- }
- }
- else
- {
- b1 = d >> 1; /* d/2, between 2^30 and 2^31 - 1 */
- c1 = a1 >> 1; /* A/2 */
- c0 = (a1 << (W_TYPE_SIZE - 1)) + (a0 >> 1);
-
- if (a1 < b1) /* A < 2^32*b1, so A/2 < 2^31*b1 */
- {
- sdiv_qrnnd (q, r, c1, c0, b1); /* (A/2) / (d/2) */
-
- r = 2*r + (a0 & 1); /* Remainder from A/(2*b1) */
- if ((d & 1) != 0)
- {
- if (r >= q)
- r = r - q;
- else if (q - r <= d)
- {
- r = r - q + d;
- q--;
- }
- else
- {
- r = r - q + 2*d;
- q -= 2;
- }
- }
- }
- else if (c1 < b1) /* So 2^31 <= (A/2)/b1 < 2^32 */
- {
- c1 = (b1 - 1) - c1;
- c0 = ~c0; /* logical NOT */
-
- sdiv_qrnnd (q, r, c1, c0, b1); /* (A/2) / (d/2) */
-
- q = ~q; /* (A/2)/b1 */
- r = (b1 - 1) - r;
-
- r = 2*r + (a0 & 1); /* A/(2*b1) */
-
- if ((d & 1) != 0)
- {
- if (r >= q)
- r = r - q;
- else if (q - r <= d)
- {
- r = r - q + d;
- q--;
- }
- else
- {
- r = r - q + 2*d;
- q -= 2;
- }
- }
- }
- else /* Implies c1 = b1 */
- { /* Hence a1 = d - 1 = 2*b1 - 1 */
- if (a0 >= -d)
- {
- q = -1;
- r = a0 + d;
- }
- else
- {
- q = -2;
- r = a0 + 2*d;
- }
- }
- }
-
- *rp = r;
- return q;
-}
-#else
-/* If sdiv_qrnnd doesn't exist, define dummy __udiv_w_sdiv. */
-UWtype
-__udiv_w_sdiv (UWtype *rp __attribute__ ((__unused__)),
- UWtype a1 __attribute__ ((__unused__)),
- UWtype a0 __attribute__ ((__unused__)),
- UWtype d __attribute__ ((__unused__)))
-{
- return 0;
-}
-#endif
-#endif
-
-#if (defined (L_udivdi3) || defined (L_divdi3) || \
- defined (L_umoddi3) || defined (L_moddi3))
-#define L_udivmoddi4
-#endif
-
-#ifdef L_clz
-const UQItype __clz_tab[256] =
-{
- 0,1,2,2,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,
- 6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
- 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
- 7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,
- 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
- 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
- 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
- 8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8
-};
-#endif
-
-#ifdef L_clzsi2
-#undef int
-int
-__clzSI2 (UWtype x)
-{
- Wtype ret;
-
- count_leading_zeros (ret, x);
-
- return ret;
-}
-#endif
-
-#ifdef L_clzdi2
-#undef int
-int
-__clzDI2 (UDWtype x)
-{
- const DWunion uu = {.ll = x};
- UWtype word;
- Wtype ret, add;
-
- if (uu.s.high)
- word = uu.s.high, add = 0;
- else
- word = uu.s.low, add = W_TYPE_SIZE;
-
- count_leading_zeros (ret, word);
- return ret + add;
-}
-#endif
-
-#ifdef L_ctzsi2
-#undef int
-int
-__ctzSI2 (UWtype x)
-{
- Wtype ret;
-
- count_trailing_zeros (ret, x);
-
- return ret;
-}
-#endif
-
-#ifdef L_ctzdi2
-#undef int
-int
-__ctzDI2 (UDWtype x)
-{
- const DWunion uu = {.ll = x};
- UWtype word;
- Wtype ret, add;
-
- if (uu.s.low)
- word = uu.s.low, add = 0;
- else
- word = uu.s.high, add = W_TYPE_SIZE;
-
- count_trailing_zeros (ret, word);
- return ret + add;
-}
-#endif
-
-#ifdef L_clrsbsi2
-#undef int
-int
-__clrsbSI2 (Wtype x)
-{
- Wtype ret;
-
- if (x < 0)
- x = ~x;
- if (x == 0)
- return W_TYPE_SIZE - 1;
- count_leading_zeros (ret, x);
- return ret - 1;
-}
-#endif
-
-#ifdef L_clrsbdi2
-#undef int
-int
-__clrsbDI2 (DWtype x)
-{
- const DWunion uu = {.ll = x};
- UWtype word;
- Wtype ret, add;
-
- if (uu.s.high == 0)
- word = uu.s.low, add = W_TYPE_SIZE;
- else if (uu.s.high == -1)
- word = ~uu.s.low, add = W_TYPE_SIZE;
- else if (uu.s.high >= 0)
- word = uu.s.high, add = 0;
- else
- word = ~uu.s.high, add = 0;
-
- if (word == 0)
- ret = W_TYPE_SIZE;
- else
- count_leading_zeros (ret, word);
-
- return ret + add - 1;
-}
-#endif
-
-#ifdef L_popcount_tab
-const UQItype __popcount_tab[256] =
-{
- 0,1,1,2,1,2,2,3,1,2,2,3,2,3,3,4,1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,
- 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
- 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
- 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
- 1,2,2,3,2,3,3,4,2,3,3,4,3,4,4,5,2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,
- 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
- 2,3,3,4,3,4,4,5,3,4,4,5,4,5,5,6,3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,
- 3,4,4,5,4,5,5,6,4,5,5,6,5,6,6,7,4,5,5,6,5,6,6,7,5,6,6,7,6,7,7,8
-};
-#endif
-
-#ifdef L_popcountsi2
-#undef int
-int
-__popcountSI2 (UWtype x)
-{
- int i, ret = 0;
-
- for (i = 0; i < W_TYPE_SIZE; i += 8)
- ret += __popcount_tab[(x >> i) & 0xff];
-
- return ret;
-}
-#endif
-
-#ifdef L_popcountdi2
-#undef int
-int
-__popcountDI2 (UDWtype x)
-{
- int i, ret = 0;
-
- for (i = 0; i < 2*W_TYPE_SIZE; i += 8)
- ret += __popcount_tab[(x >> i) & 0xff];
-
- return ret;
-}
-#endif
-
-#ifdef L_paritysi2
-#undef int
-int
-__paritySI2 (UWtype x)
-{
-#if W_TYPE_SIZE > 64
-# error "fill out the table"
-#endif
-#if W_TYPE_SIZE > 32
- x ^= x >> 32;
-#endif
-#if W_TYPE_SIZE > 16
- x ^= x >> 16;
-#endif
- x ^= x >> 8;
- x ^= x >> 4;
- x &= 0xf;
- return (0x6996 >> x) & 1;
-}
-#endif
-
-#ifdef L_paritydi2
-#undef int
-int
-__parityDI2 (UDWtype x)
-{
- const DWunion uu = {.ll = x};
- UWtype nx = uu.s.low ^ uu.s.high;
-
-#if W_TYPE_SIZE > 64
-# error "fill out the table"
-#endif
-#if W_TYPE_SIZE > 32
- nx ^= nx >> 32;
-#endif
-#if W_TYPE_SIZE > 16
- nx ^= nx >> 16;
-#endif
- nx ^= nx >> 8;
- nx ^= nx >> 4;
- nx &= 0xf;
- return (0x6996 >> nx) & 1;
-}
-#endif
-
-#ifdef L_udivmoddi4
-
-#if (defined (L_udivdi3) || defined (L_divdi3) || \
- defined (L_umoddi3) || defined (L_moddi3))
-static inline __attribute__ ((__always_inline__))
-#endif
-UDWtype
-__udivmoddi4 (UDWtype n, UDWtype d, UDWtype *rp)
-{
- const DWunion nn = {.ll = n};
- const DWunion dd = {.ll = d};
- DWunion rr;
- UWtype d0, d1, n0, n1, n2;
- UWtype q0, q1;
- UWtype b, bm;
-
- d0 = dd.s.low;
- d1 = dd.s.high;
- n0 = nn.s.low;
- n1 = nn.s.high;
-
-#if !UDIV_NEEDS_NORMALIZATION
- if (d1 == 0)
- {
- if (d0 > n1)
- {
- /* 0q = nn / 0D */
-
- udiv_qrnnd (q0, n0, n1, n0, d0);
- q1 = 0;
-
- /* Remainder in n0. */
- }
- else
- {
- /* qq = NN / 0d */
-
- if (d0 == 0)
- d0 = 1 / d0; /* Divide intentionally by zero. */
-
- udiv_qrnnd (q1, n1, 0, n1, d0);
- udiv_qrnnd (q0, n0, n1, n0, d0);
-
- /* Remainder in n0. */
- }
-
- if (rp != 0)
- {
- rr.s.low = n0;
- rr.s.high = 0;
- *rp = rr.ll;
- }
- }
-
-#else /* UDIV_NEEDS_NORMALIZATION */
-
- if (d1 == 0)
- {
- if (d0 > n1)
- {
- /* 0q = nn / 0D */
-
- count_leading_zeros (bm, d0);
-
- if (bm != 0)
- {
- /* Normalize, i.e. make the most significant bit of the
- denominator set. */
-
- d0 = d0 << bm;
- n1 = (n1 << bm) | (n0 >> (W_TYPE_SIZE - bm));
- n0 = n0 << bm;
- }
-
- udiv_qrnnd (q0, n0, n1, n0, d0);
- q1 = 0;
-
- /* Remainder in n0 >> bm. */
- }
- else
- {
- /* qq = NN / 0d */
-
- if (d0 == 0)
- d0 = 1 / d0; /* Divide intentionally by zero. */
-
- count_leading_zeros (bm, d0);
-
- if (bm == 0)
- {
- /* From (n1 >= d0) /\ (the most significant bit of d0 is set),
- conclude (the most significant bit of n1 is set) /\ (the
- leading quotient digit q1 = 1).
-
- This special case is necessary, not an optimization.
- (Shifts counts of W_TYPE_SIZE are undefined.) */
-
- n1 -= d0;
- q1 = 1;
- }
- else
- {
- /* Normalize. */
-
- b = W_TYPE_SIZE - bm;
-
- d0 = d0 << bm;
- n2 = n1 >> b;
- n1 = (n1 << bm) | (n0 >> b);
- n0 = n0 << bm;
-
- udiv_qrnnd (q1, n1, n2, n1, d0);
- }
-
- /* n1 != d0... */
-
- udiv_qrnnd (q0, n0, n1, n0, d0);
-
- /* Remainder in n0 >> bm. */
- }
-
- if (rp != 0)
- {
- rr.s.low = n0 >> bm;
- rr.s.high = 0;
- *rp = rr.ll;
- }
- }
-#endif /* UDIV_NEEDS_NORMALIZATION */
-
- else
- {
- if (d1 > n1)
- {
- /* 00 = nn / DD */
-
- q0 = 0;
- q1 = 0;
-
- /* Remainder in n1n0. */
- if (rp != 0)
- {
- rr.s.low = n0;
- rr.s.high = n1;
- *rp = rr.ll;
- }
- }
- else
- {
- /* 0q = NN / dd */
-
- count_leading_zeros (bm, d1);
- if (bm == 0)
- {
- /* From (n1 >= d1) /\ (the most significant bit of d1 is set),
- conclude (the most significant bit of n1 is set) /\ (the
- quotient digit q0 = 0 or 1).
-
- This special case is necessary, not an optimization. */
-
- /* The condition on the next line takes advantage of that
- n1 >= d1 (true due to program flow). */
- if (n1 > d1 || n0 >= d0)
- {
- q0 = 1;
- sub_ddmmss (n1, n0, n1, n0, d1, d0);
- }
- else
- q0 = 0;
-
- q1 = 0;
-
- if (rp != 0)
- {
- rr.s.low = n0;
- rr.s.high = n1;
- *rp = rr.ll;
- }
- }
- else
- {
- UWtype m1, m0;
- /* Normalize. */
-
- b = W_TYPE_SIZE - bm;
-
- d1 = (d1 << bm) | (d0 >> b);
- d0 = d0 << bm;
- n2 = n1 >> b;
- n1 = (n1 << bm) | (n0 >> b);
- n0 = n0 << bm;
-
- udiv_qrnnd (q0, n1, n2, n1, d1);
- umul_ppmm (m1, m0, q0, d0);
-
- if (m1 > n1 || (m1 == n1 && m0 > n0))
- {
- q0--;
- sub_ddmmss (m1, m0, m1, m0, d1, d0);
- }
-
- q1 = 0;
-
- /* Remainder in (n1n0 - m1m0) >> bm. */
- if (rp != 0)
- {
- sub_ddmmss (n1, n0, n1, n0, m1, m0);
- rr.s.low = (n1 << b) | (n0 >> bm);
- rr.s.high = n1 >> bm;
- *rp = rr.ll;
- }
- }
- }
- }
-
- const DWunion ww = {{.low = q0, .high = q1}};
- return ww.ll;
-}
-#endif
-
-#ifdef L_divdi3
-DWtype
-__divdi3 (DWtype u, DWtype v)
-{
- Wtype c = 0;
- DWunion uu = {.ll = u};
- DWunion vv = {.ll = v};
- DWtype w;
-
- if (uu.s.high < 0)
- c = ~c,
- uu.ll = -uu.ll;
- if (vv.s.high < 0)
- c = ~c,
- vv.ll = -vv.ll;
-
- w = __udivmoddi4 (uu.ll, vv.ll, (UDWtype *) 0);
- if (c)
- w = -w;
-
- return w;
-}
-#endif
-
-#ifdef L_moddi3
-DWtype
-__moddi3 (DWtype u, DWtype v)
-{
- Wtype c = 0;
- DWunion uu = {.ll = u};
- DWunion vv = {.ll = v};
- DWtype w;
-
- if (uu.s.high < 0)
- c = ~c,
- uu.ll = -uu.ll;
- if (vv.s.high < 0)
- vv.ll = -vv.ll;
-
- (void) __udivmoddi4 (uu.ll, vv.ll, (UDWtype*)&w);
- if (c)
- w = -w;
-
- return w;
-}
-#endif
-
-#ifdef L_umoddi3
-UDWtype
-__umoddi3 (UDWtype u, UDWtype v)
-{
- UDWtype w;
-
- (void) __udivmoddi4 (u, v, &w);
-
- return w;
-}
-#endif
-
-#ifdef L_udivdi3
-UDWtype
-__udivdi3 (UDWtype n, UDWtype d)
-{
- return __udivmoddi4 (n, d, (UDWtype *) 0);
-}
-#endif
-
-#ifdef L_cmpdi2
-cmp_return_type
-__cmpdi2 (DWtype a, DWtype b)
-{
- const DWunion au = {.ll = a};
- const DWunion bu = {.ll = b};
-
- if (au.s.high < bu.s.high)
- return 0;
- else if (au.s.high > bu.s.high)
- return 2;
- if ((UWtype) au.s.low < (UWtype) bu.s.low)
- return 0;
- else if ((UWtype) au.s.low > (UWtype) bu.s.low)
- return 2;
- return 1;
-}
-#endif
-
-#ifdef L_ucmpdi2
-cmp_return_type
-__ucmpdi2 (DWtype a, DWtype b)
-{
- const DWunion au = {.ll = a};
- const DWunion bu = {.ll = b};
-
- if ((UWtype) au.s.high < (UWtype) bu.s.high)
- return 0;
- else if ((UWtype) au.s.high > (UWtype) bu.s.high)
- return 2;
- if ((UWtype) au.s.low < (UWtype) bu.s.low)
- return 0;
- else if ((UWtype) au.s.low > (UWtype) bu.s.low)
- return 2;
- return 1;
-}
-#endif
-
-#if defined(L_fixunstfdi) && LIBGCC2_HAS_TF_MODE
-UDWtype
-__fixunstfDI (TFtype a)
-{
- if (a < 0)
- return 0;
-
- /* Compute high word of result, as a flonum. */
- const TFtype b = (a / Wtype_MAXp1_F);
- /* Convert that to fixed (but not to DWtype!),
- and shift it into the high word. */
- UDWtype v = (UWtype) b;
- v <<= W_TYPE_SIZE;
- /* Remove high part from the TFtype, leaving the low part as flonum. */
- a -= (TFtype)v;
- /* Convert that to fixed (but not to DWtype!) and add it in.
- Sometimes A comes out negative. This is significant, since
- A has more bits than a long int does. */
- if (a < 0)
- v -= (UWtype) (- a);
- else
- v += (UWtype) a;
- return v;
-}
-#endif
-
-#if defined(L_fixtfdi) && LIBGCC2_HAS_TF_MODE
-DWtype
-__fixtfdi (TFtype a)
-{
- if (a < 0)
- return - __fixunstfDI (-a);
- return __fixunstfDI (a);
-}
-#endif
-
-#if defined(L_fixunsxfdi) && LIBGCC2_HAS_XF_MODE
-UDWtype
-__fixunsxfDI (XFtype a)
-{
- if (a < 0)
- return 0;
-
- /* Compute high word of result, as a flonum. */
- const XFtype b = (a / Wtype_MAXp1_F);
- /* Convert that to fixed (but not to DWtype!),
- and shift it into the high word. */
- UDWtype v = (UWtype) b;
- v <<= W_TYPE_SIZE;
- /* Remove high part from the XFtype, leaving the low part as flonum. */
- a -= (XFtype)v;
- /* Convert that to fixed (but not to DWtype!) and add it in.
- Sometimes A comes out negative. This is significant, since
- A has more bits than a long int does. */
- if (a < 0)
- v -= (UWtype) (- a);
- else
- v += (UWtype) a;
- return v;
-}
-#endif
-
-#if defined(L_fixxfdi) && LIBGCC2_HAS_XF_MODE
-DWtype
-__fixxfdi (XFtype a)
-{
- if (a < 0)
- return - __fixunsxfDI (-a);
- return __fixunsxfDI (a);
-}
-#endif
-
-#if defined(L_fixunsdfdi) && LIBGCC2_HAS_DF_MODE
-UDWtype
-__fixunsdfDI (DFtype a)
-{
- /* Get high part of result. The division here will just moves the radix
- point and will not cause any rounding. Then the conversion to integral
- type chops result as desired. */
- const UWtype hi = a / Wtype_MAXp1_F;
-
- /* Get low part of result. Convert `hi' to floating type and scale it back,
- then subtract this from the number being converted. This leaves the low
- part. Convert that to integral type. */
- const UWtype lo = a - (DFtype) hi * Wtype_MAXp1_F;
-
- /* Assemble result from the two parts. */
- return ((UDWtype) hi << W_TYPE_SIZE) | lo;
-}
-#endif
-
-#if defined(L_fixdfdi) && LIBGCC2_HAS_DF_MODE
-DWtype
-__fixdfdi (DFtype a)
-{
- if (a < 0)
- return - __fixunsdfDI (-a);
- return __fixunsdfDI (a);
-}
-#endif
-
-#if defined(L_fixunssfdi) && LIBGCC2_HAS_SF_MODE
-UDWtype
-__fixunssfDI (SFtype a)
-{
-#if LIBGCC2_HAS_DF_MODE
- /* Convert the SFtype to a DFtype, because that is surely not going
- to lose any bits. Some day someone else can write a faster version
- that avoids converting to DFtype, and verify it really works right. */
- const DFtype dfa = a;
-
- /* Get high part of result. The division here will just moves the radix
- point and will not cause any rounding. Then the conversion to integral
- type chops result as desired. */
- const UWtype hi = dfa / Wtype_MAXp1_F;
-
- /* Get low part of result. Convert `hi' to floating type and scale it back,
- then subtract this from the number being converted. This leaves the low
- part. Convert that to integral type. */
- const UWtype lo = dfa - (DFtype) hi * Wtype_MAXp1_F;
-
- /* Assemble result from the two parts. */
- return ((UDWtype) hi << W_TYPE_SIZE) | lo;
-#elif FLT_MANT_DIG < W_TYPE_SIZE
- if (a < 1)
- return 0;
- if (a < Wtype_MAXp1_F)
- return (UWtype)a;
- if (a < Wtype_MAXp1_F * Wtype_MAXp1_F)
- {
- /* Since we know that there are fewer significant bits in the SFmode
- quantity than in a word, we know that we can convert out all the
- significant bits in one step, and thus avoid losing bits. */
-
- /* ??? This following loop essentially performs frexpf. If we could
- use the real libm function, or poke at the actual bits of the fp
- format, it would be significantly faster. */
-
- UWtype shift = 0, counter;
- SFtype msb;
-
- a /= Wtype_MAXp1_F;
- for (counter = W_TYPE_SIZE / 2; counter != 0; counter >>= 1)
- {
- SFtype counterf = (UWtype)1 << counter;
- if (a >= counterf)
- {
- shift |= counter;
- a /= counterf;
- }
- }
-
- /* Rescale into the range of one word, extract the bits of that
- one word, and shift the result into position. */
- a *= Wtype_MAXp1_F;
- counter = a;
- return (DWtype)counter << shift;
- }
- return -1;
-#else
-# error
-#endif
-}
-#endif
-
-#if defined(L_fixsfdi) && LIBGCC2_HAS_SF_MODE
-DWtype
-__fixsfdi (SFtype a)
-{
- if (a < 0)
- return - __fixunssfDI (-a);
- return __fixunssfDI (a);
-}
-#endif
-
-#if defined(L_floatdixf) && LIBGCC2_HAS_XF_MODE
-XFtype
-__floatdixf (DWtype u)
-{
-#if W_TYPE_SIZE > XF_SIZE
-# error
-#endif
- XFtype d = (Wtype) (u >> W_TYPE_SIZE);
- d *= Wtype_MAXp1_F;
- d += (UWtype)u;
- return d;
-}
-#endif
-
-#if defined(L_floatundixf) && LIBGCC2_HAS_XF_MODE
-XFtype
-__floatundixf (UDWtype u)
-{
-#if W_TYPE_SIZE > XF_SIZE
-# error
-#endif
- XFtype d = (UWtype) (u >> W_TYPE_SIZE);
- d *= Wtype_MAXp1_F;
- d += (UWtype)u;
- return d;
-}
-#endif
-
-#if defined(L_floatditf) && LIBGCC2_HAS_TF_MODE
-TFtype
-__floatditf (DWtype u)
-{
-#if W_TYPE_SIZE > TF_SIZE
-# error
-#endif
- TFtype d = (Wtype) (u >> W_TYPE_SIZE);
- d *= Wtype_MAXp1_F;
- d += (UWtype)u;
- return d;
-}
-#endif
-
-#if defined(L_floatunditf) && LIBGCC2_HAS_TF_MODE
-TFtype
-__floatunditf (UDWtype u)
-{
-#if W_TYPE_SIZE > TF_SIZE
-# error
-#endif
- TFtype d = (UWtype) (u >> W_TYPE_SIZE);
- d *= Wtype_MAXp1_F;
- d += (UWtype)u;
- return d;
-}
-#endif
-
-#if (defined(L_floatdisf) && LIBGCC2_HAS_SF_MODE) \
- || (defined(L_floatdidf) && LIBGCC2_HAS_DF_MODE)
-#define DI_SIZE (W_TYPE_SIZE * 2)
-#define F_MODE_OK(SIZE) \
- (SIZE < DI_SIZE \
- && SIZE > (DI_SIZE - SIZE + FSSIZE) \
- && !AVOID_FP_TYPE_CONVERSION(SIZE))
-#if defined(L_floatdisf)
-#define FUNC __floatdisf
-#define FSTYPE SFtype
-#define FSSIZE SF_SIZE
-#else
-#define FUNC __floatdidf
-#define FSTYPE DFtype
-#define FSSIZE DF_SIZE
-#endif
-
-FSTYPE
-FUNC (DWtype u)
-{
-#if FSSIZE >= W_TYPE_SIZE
- /* When the word size is small, we never get any rounding error. */
- FSTYPE f = (Wtype) (u >> W_TYPE_SIZE);
- f *= Wtype_MAXp1_F;
- f += (UWtype)u;
- return f;
-#elif (LIBGCC2_HAS_DF_MODE && F_MODE_OK (DF_SIZE)) \
- || (LIBGCC2_HAS_XF_MODE && F_MODE_OK (XF_SIZE)) \
- || (LIBGCC2_HAS_TF_MODE && F_MODE_OK (TF_SIZE))
-
-#if (LIBGCC2_HAS_DF_MODE && F_MODE_OK (DF_SIZE))
-# define FSIZE DF_SIZE
-# define FTYPE DFtype
-#elif (LIBGCC2_HAS_XF_MODE && F_MODE_OK (XF_SIZE))
-# define FSIZE XF_SIZE
-# define FTYPE XFtype
-#elif (LIBGCC2_HAS_TF_MODE && F_MODE_OK (TF_SIZE))
-# define FSIZE TF_SIZE
-# define FTYPE TFtype
-#else
-# error
-#endif
-
-#define REP_BIT ((UDWtype) 1 << (DI_SIZE - FSIZE))
-
- /* Protect against double-rounding error.
- Represent any low-order bits, that might be truncated by a bit that
- won't be lost. The bit can go in anywhere below the rounding position
- of the FSTYPE. A fixed mask and bit position handles all usual
- configurations. */
- if (! (- ((DWtype) 1 << FSIZE) < u
- && u < ((DWtype) 1 << FSIZE)))
- {
- if ((UDWtype) u & (REP_BIT - 1))
- {
- u &= ~ (REP_BIT - 1);
- u |= REP_BIT;
- }
- }
-
- /* Do the calculation in a wider type so that we don't lose any of
- the precision of the high word while multiplying it. */
- FTYPE f = (Wtype) (u >> W_TYPE_SIZE);
- f *= Wtype_MAXp1_F;
- f += (UWtype)u;
- return (FSTYPE) f;
-#else
-#if FSSIZE >= W_TYPE_SIZE - 2
-# error
-#endif
- /* Finally, the word size is larger than the number of bits in the
- required FSTYPE, and we've got no suitable wider type. The only
- way to avoid double rounding is to special case the
- extraction. */
-
- /* If there are no high bits set, fall back to one conversion. */
- if ((Wtype)u == u)
- return (FSTYPE)(Wtype)u;
-
- /* Otherwise, find the power of two. */
- Wtype hi = u >> W_TYPE_SIZE;
- if (hi < 0)
- hi = -hi;
-
- UWtype count, shift;
- count_leading_zeros (count, hi);
-
- /* No leading bits means u == minimum. */
- if (count == 0)
- return -(Wtype_MAXp1_F * (Wtype_MAXp1_F / 2));
-
- shift = 1 + W_TYPE_SIZE - count;
-
- /* Shift down the most significant bits. */
- hi = u >> shift;
-
- /* If we lost any nonzero bits, set the lsb to ensure correct rounding. */
- if ((UWtype)u << (W_TYPE_SIZE - shift))
- hi |= 1;
-
- /* Convert the one word of data, and rescale. */
- FSTYPE f = hi, e;
- if (shift == W_TYPE_SIZE)
- e = Wtype_MAXp1_F;
- /* The following two cases could be merged if we knew that the target
- supported a native unsigned->float conversion. More often, we only
- have a signed conversion, and have to add extra fixup code. */
- else if (shift == W_TYPE_SIZE - 1)
- e = Wtype_MAXp1_F / 2;
- else
- e = (Wtype)1 << shift;
- return f * e;
-#endif
-}
-#endif
-
-#if (defined(L_floatundisf) && LIBGCC2_HAS_SF_MODE) \
- || (defined(L_floatundidf) && LIBGCC2_HAS_DF_MODE)
-#define DI_SIZE (W_TYPE_SIZE * 2)
-#define F_MODE_OK(SIZE) \
- (SIZE < DI_SIZE \
- && SIZE > (DI_SIZE - SIZE + FSSIZE) \
- && !AVOID_FP_TYPE_CONVERSION(SIZE))
-#if defined(L_floatundisf)
-#define FUNC __floatundisf
-#define FSTYPE SFtype
-#define FSSIZE SF_SIZE
-#else
-#define FUNC __floatundidf
-#define FSTYPE DFtype
-#define FSSIZE DF_SIZE
-#endif
-
-FSTYPE
-FUNC (UDWtype u)
-{
-#if FSSIZE >= W_TYPE_SIZE
- /* When the word size is small, we never get any rounding error. */
- FSTYPE f = (UWtype) (u >> W_TYPE_SIZE);
- f *= Wtype_MAXp1_F;
- f += (UWtype)u;
- return f;
-#elif (LIBGCC2_HAS_DF_MODE && F_MODE_OK (DF_SIZE)) \
- || (LIBGCC2_HAS_XF_MODE && F_MODE_OK (XF_SIZE)) \
- || (LIBGCC2_HAS_TF_MODE && F_MODE_OK (TF_SIZE))
-
-#if (LIBGCC2_HAS_DF_MODE && F_MODE_OK (DF_SIZE))
-# define FSIZE DF_SIZE
-# define FTYPE DFtype
-#elif (LIBGCC2_HAS_XF_MODE && F_MODE_OK (XF_SIZE))
-# define FSIZE XF_SIZE
-# define FTYPE XFtype
-#elif (LIBGCC2_HAS_TF_MODE && F_MODE_OK (TF_SIZE))
-# define FSIZE TF_SIZE
-# define FTYPE TFtype
-#else
-# error
-#endif
-
-#define REP_BIT ((UDWtype) 1 << (DI_SIZE - FSIZE))
-
- /* Protect against double-rounding error.
- Represent any low-order bits, that might be truncated by a bit that
- won't be lost. The bit can go in anywhere below the rounding position
- of the FSTYPE. A fixed mask and bit position handles all usual
- configurations. */
- if (u >= ((UDWtype) 1 << FSIZE))
- {
- if ((UDWtype) u & (REP_BIT - 1))
- {
- u &= ~ (REP_BIT - 1);
- u |= REP_BIT;
- }
- }
-
- /* Do the calculation in a wider type so that we don't lose any of
- the precision of the high word while multiplying it. */
- FTYPE f = (UWtype) (u >> W_TYPE_SIZE);
- f *= Wtype_MAXp1_F;
- f += (UWtype)u;
- return (FSTYPE) f;
-#else
-#if FSSIZE == W_TYPE_SIZE - 1
-# error
-#endif
- /* Finally, the word size is larger than the number of bits in the
- required FSTYPE, and we've got no suitable wider type. The only
- way to avoid double rounding is to special case the
- extraction. */
-
- /* If there are no high bits set, fall back to one conversion. */
- if ((UWtype)u == u)
- return (FSTYPE)(UWtype)u;
-
- /* Otherwise, find the power of two. */
- UWtype hi = u >> W_TYPE_SIZE;
-
- UWtype count, shift;
- count_leading_zeros (count, hi);
-
- shift = W_TYPE_SIZE - count;
-
- /* Shift down the most significant bits. */
- hi = u >> shift;
-
- /* If we lost any nonzero bits, set the lsb to ensure correct rounding. */
- if ((UWtype)u << (W_TYPE_SIZE - shift))
- hi |= 1;
-
- /* Convert the one word of data, and rescale. */
- FSTYPE f = hi, e;
- if (shift == W_TYPE_SIZE)
- e = Wtype_MAXp1_F;
- /* The following two cases could be merged if we knew that the target
- supported a native unsigned->float conversion. More often, we only
- have a signed conversion, and have to add extra fixup code. */
- else if (shift == W_TYPE_SIZE - 1)
- e = Wtype_MAXp1_F / 2;
- else
- e = (Wtype)1 << shift;
- return f * e;
-#endif
-}
-#endif
-
-#if defined(L_fixunsxfsi) && LIBGCC2_HAS_XF_MODE
-/* Reenable the normal types, in case limits.h needs them. */
-#undef char
-#undef short
-#undef int
-#undef long
-#undef unsigned
-#undef float
-#undef double
-#undef MIN
-#undef MAX
-#include <limits.h>
-
-UWtype
-__fixunsxfSI (XFtype a)
-{
- if (a >= - (DFtype) Wtype_MIN)
- return (Wtype) (a + Wtype_MIN) - Wtype_MIN;
- return (Wtype) a;
-}
-#endif
-
-#if defined(L_fixunsdfsi) && LIBGCC2_HAS_DF_MODE
-/* Reenable the normal types, in case limits.h needs them. */
-#undef char
-#undef short
-#undef int
-#undef long
-#undef unsigned
-#undef float
-#undef double
-#undef MIN
-#undef MAX
-#include <limits.h>
-
-UWtype
-__fixunsdfSI (DFtype a)
-{
- if (a >= - (DFtype) Wtype_MIN)
- return (Wtype) (a + Wtype_MIN) - Wtype_MIN;
- return (Wtype) a;
-}
-#endif
-
-#if defined(L_fixunssfsi) && LIBGCC2_HAS_SF_MODE
-/* Reenable the normal types, in case limits.h needs them. */
-#undef char
-#undef short
-#undef int
-#undef long
-#undef unsigned
-#undef float
-#undef double
-#undef MIN
-#undef MAX
-#include <limits.h>
-
-UWtype
-__fixunssfSI (SFtype a)
-{
- if (a >= - (SFtype) Wtype_MIN)
- return (Wtype) (a + Wtype_MIN) - Wtype_MIN;
- return (Wtype) a;
-}
-#endif
-
-/* Integer power helper used from __builtin_powi for non-constant
- exponents. */
-
-#if (defined(L_powisf2) && LIBGCC2_HAS_SF_MODE) \
- || (defined(L_powidf2) && LIBGCC2_HAS_DF_MODE) \
- || (defined(L_powixf2) && LIBGCC2_HAS_XF_MODE) \
- || (defined(L_powitf2) && LIBGCC2_HAS_TF_MODE)
-# if defined(L_powisf2)
-# define TYPE SFtype
-# define NAME __powisf2
-# elif defined(L_powidf2)
-# define TYPE DFtype
-# define NAME __powidf2
-# elif defined(L_powixf2)
-# define TYPE XFtype
-# define NAME __powixf2
-# elif defined(L_powitf2)
-# define TYPE TFtype
-# define NAME __powitf2
-# endif
-
-#undef int
-#undef unsigned
-TYPE
-NAME (TYPE x, int m)
-{
- unsigned int n = m < 0 ? -m : m;
- TYPE y = n % 2 ? x : 1;
- while (n >>= 1)
- {
- x = x * x;
- if (n % 2)
- y = y * x;
- }
- return m < 0 ? 1/y : y;
-}
-
-#endif
-
-#if ((defined(L_mulsc3) || defined(L_divsc3)) && LIBGCC2_HAS_SF_MODE) \
- || ((defined(L_muldc3) || defined(L_divdc3)) && LIBGCC2_HAS_DF_MODE) \
- || ((defined(L_mulxc3) || defined(L_divxc3)) && LIBGCC2_HAS_XF_MODE) \
- || ((defined(L_multc3) || defined(L_divtc3)) && LIBGCC2_HAS_TF_MODE)
-
-#undef float
-#undef double
-#undef long
-
-#if defined(L_mulsc3) || defined(L_divsc3)
-# define MTYPE SFtype
-# define CTYPE SCtype
-# define MODE sc
-# define CEXT f
-# define NOTRUNC __FLT_EVAL_METHOD__ == 0
-#elif defined(L_muldc3) || defined(L_divdc3)
-# define MTYPE DFtype
-# define CTYPE DCtype
-# define MODE dc
-# if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 64
-# define CEXT l
-# define NOTRUNC 1
-# else
-# define CEXT
-# define NOTRUNC __FLT_EVAL_METHOD__ == 0 || __FLT_EVAL_METHOD__ == 1
-# endif
-#elif defined(L_mulxc3) || defined(L_divxc3)
-# define MTYPE XFtype
-# define CTYPE XCtype
-# define MODE xc
-# define CEXT l
-# define NOTRUNC 1
-#elif defined(L_multc3) || defined(L_divtc3)
-# define MTYPE TFtype
-# define CTYPE TCtype
-# define MODE tc
-# if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 128
-# define CEXT l
-# else
-# define CEXT LIBGCC2_TF_CEXT
-# endif
-# define NOTRUNC 1
-#else
-# error
-#endif
-
-#define CONCAT3(A,B,C) _CONCAT3(A,B,C)
-#define _CONCAT3(A,B,C) A##B##C
-
-#define CONCAT2(A,B) _CONCAT2(A,B)
-#define _CONCAT2(A,B) A##B
-
-/* All of these would be present in a full C99 implementation of <math.h>
- and <complex.h>. Our problem is that only a few systems have such full
- implementations. Further, libgcc_s.so isn't currently linked against
- libm.so, and even for systems that do provide full C99, the extra overhead
- of all programs using libgcc having to link against libm. So avoid it. */
-
-#define isnan(x) __builtin_expect ((x) != (x), 0)
-#define isfinite(x) __builtin_expect (!isnan((x) - (x)), 1)
-#define isinf(x) __builtin_expect (!isnan(x) & !isfinite(x), 0)
-
-#define INFINITY CONCAT2(__builtin_huge_val, CEXT) ()
-#define I 1i
-
-/* Helpers to make the following code slightly less gross. */
-#define COPYSIGN CONCAT2(__builtin_copysign, CEXT)
-#define FABS CONCAT2(__builtin_fabs, CEXT)
-
-/* Verify that MTYPE matches up with CEXT. */
-extern void *compile_type_assert[sizeof(INFINITY) == sizeof(MTYPE) ? 1 : -1];
-
-/* Ensure that we've lost any extra precision. */
-#if NOTRUNC
-# define TRUNC(x)
-#else
-# define TRUNC(x) __asm__ ("" : "=m"(x) : "m"(x))
-#endif
-
-#if defined(L_mulsc3) || defined(L_muldc3) \
- || defined(L_mulxc3) || defined(L_multc3)
-
-CTYPE
-CONCAT3(__mul,MODE,3) (MTYPE a, MTYPE b, MTYPE c, MTYPE d)
-{
- MTYPE ac, bd, ad, bc, x, y;
- CTYPE res;
-
- ac = a * c;
- bd = b * d;
- ad = a * d;
- bc = b * c;
-
- TRUNC (ac);
- TRUNC (bd);
- TRUNC (ad);
- TRUNC (bc);
-
- x = ac - bd;
- y = ad + bc;
-
- if (isnan (x) && isnan (y))
- {
- /* Recover infinities that computed as NaN + iNaN. */
- _Bool recalc = 0;
- if (isinf (a) || isinf (b))
- {
- /* z is infinite. "Box" the infinity and change NaNs in
- the other factor to 0. */
- a = COPYSIGN (isinf (a) ? 1 : 0, a);
- b = COPYSIGN (isinf (b) ? 1 : 0, b);
- if (isnan (c)) c = COPYSIGN (0, c);
- if (isnan (d)) d = COPYSIGN (0, d);
- recalc = 1;
- }
- if (isinf (c) || isinf (d))
- {
- /* w is infinite. "Box" the infinity and change NaNs in
- the other factor to 0. */
- c = COPYSIGN (isinf (c) ? 1 : 0, c);
- d = COPYSIGN (isinf (d) ? 1 : 0, d);
- if (isnan (a)) a = COPYSIGN (0, a);
- if (isnan (b)) b = COPYSIGN (0, b);
- recalc = 1;
- }
- if (!recalc
- && (isinf (ac) || isinf (bd)
- || isinf (ad) || isinf (bc)))
- {
- /* Recover infinities from overflow by changing NaNs to 0. */
- if (isnan (a)) a = COPYSIGN (0, a);
- if (isnan (b)) b = COPYSIGN (0, b);
- if (isnan (c)) c = COPYSIGN (0, c);
- if (isnan (d)) d = COPYSIGN (0, d);
- recalc = 1;
- }
- if (recalc)
- {
- x = INFINITY * (a * c - b * d);
- y = INFINITY * (a * d + b * c);
- }
- }
-
- __real__ res = x;
- __imag__ res = y;
- return res;
-}
-#endif /* complex multiply */
-
-#if defined(L_divsc3) || defined(L_divdc3) \
- || defined(L_divxc3) || defined(L_divtc3)
-
-CTYPE
-CONCAT3(__div,MODE,3) (MTYPE a, MTYPE b, MTYPE c, MTYPE d)
-{
- MTYPE denom, ratio, x, y;
- CTYPE res;
-
- /* ??? We can get better behavior from logarithmic scaling instead of
- the division. But that would mean starting to link libgcc against
- libm. We could implement something akin to ldexp/frexp as gcc builtins
- fairly easily... */
- if (FABS (c) < FABS (d))
- {
- ratio = c / d;
- denom = (c * ratio) + d;
- x = ((a * ratio) + b) / denom;
- y = ((b * ratio) - a) / denom;
- }
- else
- {
- ratio = d / c;
- denom = (d * ratio) + c;
- x = ((b * ratio) + a) / denom;
- y = (b - (a * ratio)) / denom;
- }
-
- /* Recover infinities and zeros that computed as NaN+iNaN; the only cases
- are nonzero/zero, infinite/finite, and finite/infinite. */
- if (isnan (x) && isnan (y))
- {
- if (c == 0.0 && d == 0.0 && (!isnan (a) || !isnan (b)))
- {
- x = COPYSIGN (INFINITY, c) * a;
- y = COPYSIGN (INFINITY, c) * b;
- }
- else if ((isinf (a) || isinf (b)) && isfinite (c) && isfinite (d))
- {
- a = COPYSIGN (isinf (a) ? 1 : 0, a);
- b = COPYSIGN (isinf (b) ? 1 : 0, b);
- x = INFINITY * (a * c + b * d);
- y = INFINITY * (b * c - a * d);
- }
- else if ((isinf (c) || isinf (d)) && isfinite (a) && isfinite (b))
- {
- c = COPYSIGN (isinf (c) ? 1 : 0, c);
- d = COPYSIGN (isinf (d) ? 1 : 0, d);
- x = 0.0 * (a * c + b * d);
- y = 0.0 * (b * c - a * d);
- }
- }
-
- __real__ res = x;
- __imag__ res = y;
- return res;
-}
-#endif /* complex divide */
-
-#endif /* all complex float routines */
-
-/* From here on down, the routines use normal data types. */
-
-#define SItype bogus_type
-#define USItype bogus_type
-#define DItype bogus_type
-#define UDItype bogus_type
-#define SFtype bogus_type
-#define DFtype bogus_type
-#undef Wtype
-#undef UWtype
-#undef HWtype
-#undef UHWtype
-#undef DWtype
-#undef UDWtype
-
-#undef char
-#undef short
-#undef int
-#undef long
-#undef unsigned
-#undef float
-#undef double
-
-#ifdef L__gcc_bcmp
-
-/* Like bcmp except the sign is meaningful.
- Result is negative if S1 is less than S2,
- positive if S1 is greater, 0 if S1 and S2 are equal. */
-
-int
-__gcc_bcmp (const unsigned char *s1, const unsigned char *s2, size_t size)
-{
- while (size > 0)
- {
- const unsigned char c1 = *s1++, c2 = *s2++;
- if (c1 != c2)
- return c1 - c2;
- size--;
- }
- return 0;
-}
-
-#endif
-
-/* __eprintf used to be used by GCC's private version of <assert.h>.
- We no longer provide that header, but this routine remains in libgcc.a
- for binary backward compatibility. Note that it is not included in
- the shared version of libgcc. */
-#ifdef L_eprintf
-#ifndef inhibit_libc
-
-#undef NULL /* Avoid errors if stdio.h and our stddef.h mismatch. */
-#include <stdio.h>
-
-void
-__eprintf (const char *string, const char *expression,
- unsigned int line, const char *filename)
-{
- fprintf (stderr, string, expression, line, filename);
- fflush (stderr);
- abort ();
-}
-
-#endif
-#endif
-
-
-#ifdef L_clear_cache
-/* Clear part of an instruction cache. */
-
-void
-__clear_cache (char *beg __attribute__((__unused__)),
- char *end __attribute__((__unused__)))
-{
-#ifdef CLEAR_INSN_CACHE
- CLEAR_INSN_CACHE (beg, end);
-#endif /* CLEAR_INSN_CACHE */
-}
-
-#endif /* L_clear_cache */
-
-#ifdef L_trampoline
-
-/* Jump to a trampoline, loading the static chain address. */
-
-#if defined(WINNT) && ! defined(__CYGWIN__)
-#include <windows.h>
-int getpagesize (void);
-int mprotect (char *,int, int);
-
-int
-getpagesize (void)
-{
-#ifdef _ALPHA_
- return 8192;
-#else
- return 4096;
-#endif
-}
-
-int
-mprotect (char *addr, int len, int prot)
-{
- DWORD np, op;
-
- if (prot == 7)
- np = 0x40;
- else if (prot == 5)
- np = 0x20;
- else if (prot == 4)
- np = 0x10;
- else if (prot == 3)
- np = 0x04;
- else if (prot == 1)
- np = 0x02;
- else if (prot == 0)
- np = 0x01;
- else
- return -1;
-
- if (VirtualProtect (addr, len, np, &op))
- return 0;
- else
- return -1;
-}
-
-#endif /* WINNT && ! __CYGWIN__ */
-
-#ifdef TRANSFER_FROM_TRAMPOLINE
-TRANSFER_FROM_TRAMPOLINE
-#endif
-#endif /* L_trampoline */
-
-#ifndef __CYGWIN__
-#ifdef L__main
-
-#include "gbl-ctors.h"
-
-/* Some systems use __main in a way incompatible with its use in gcc, in these
- cases use the macros NAME__MAIN to give a quoted symbol and SYMBOL__MAIN to
- give the same symbol without quotes for an alternative entry point. You
- must define both, or neither. */
-#ifndef NAME__MAIN
-#define NAME__MAIN "__main"
-#define SYMBOL__MAIN __main
-#endif
-
-#if defined (INIT_SECTION_ASM_OP) || defined (INIT_ARRAY_SECTION_ASM_OP)
-#undef HAS_INIT_SECTION
-#define HAS_INIT_SECTION
-#endif
-
-#if !defined (HAS_INIT_SECTION) || !defined (OBJECT_FORMAT_ELF)
-
-/* Some ELF crosses use crtstuff.c to provide __CTOR_LIST__, but use this
- code to run constructors. In that case, we need to handle EH here, too. */
-
-#ifdef EH_FRAME_SECTION_NAME
-#include "unwind-dw2-fde.h"
-extern unsigned char __EH_FRAME_BEGIN__[];
-#endif
-
-/* Run all the global destructors on exit from the program. */
-
-void
-__do_global_dtors (void)
-{
-#ifdef DO_GLOBAL_DTORS_BODY
- DO_GLOBAL_DTORS_BODY;
-#else
- static func_ptr *p = __DTOR_LIST__ + 1;
- while (*p)
- {
- p++;
- (*(p-1)) ();
- }
-#endif
-#if defined (EH_FRAME_SECTION_NAME) && !defined (HAS_INIT_SECTION)
- {
- static int completed = 0;
- if (! completed)
- {
- completed = 1;
- __deregister_frame_info (__EH_FRAME_BEGIN__);
- }
- }
-#endif
-}
-#endif
-
-#ifndef HAS_INIT_SECTION
-/* Run all the global constructors on entry to the program. */
-
-void
-__do_global_ctors (void)
-{
-#ifdef EH_FRAME_SECTION_NAME
- {
- static struct object object;
- __register_frame_info (__EH_FRAME_BEGIN__, &object);
- }
-#endif
- DO_GLOBAL_CTORS_BODY;
- atexit (__do_global_dtors);
-}
-#endif /* no HAS_INIT_SECTION */
-
-#if !defined (HAS_INIT_SECTION) || defined (INVOKE__main)
-/* Subroutine called automatically by `main'.
- Compiling a global function named `main'
- produces an automatic call to this function at the beginning.
-
- For many systems, this routine calls __do_global_ctors.
- For systems which support a .init section we use the .init section
- to run __do_global_ctors, so we need not do anything here. */
-
-extern void SYMBOL__MAIN (void);
-void
-SYMBOL__MAIN (void)
-{
- /* Support recursive calls to `main': run initializers just once. */
- static int initialized;
- if (! initialized)
- {
- initialized = 1;
- __do_global_ctors ();
- }
-}
-#endif /* no HAS_INIT_SECTION or INVOKE__main */
-
-#endif /* L__main */
-#endif /* __CYGWIN__ */
-
-#ifdef L_ctors
-
-#include "gbl-ctors.h"
-
-/* Provide default definitions for the lists of constructors and
- destructors, so that we don't get linker errors. These symbols are
- intentionally bss symbols, so that gld and/or collect will provide
- the right values. */
-
-/* We declare the lists here with two elements each,
- so that they are valid empty lists if no other definition is loaded.
-
- If we are using the old "set" extensions to have the gnu linker
- collect ctors and dtors, then we __CTOR_LIST__ and __DTOR_LIST__
- must be in the bss/common section.
-
- Long term no port should use those extensions. But many still do. */
-#if !defined(INIT_SECTION_ASM_OP) && !defined(CTOR_LISTS_DEFINED_EXTERNALLY)
-#if defined (TARGET_ASM_CONSTRUCTOR) || defined (USE_COLLECT2)
-func_ptr __CTOR_LIST__[2] = {0, 0};
-func_ptr __DTOR_LIST__[2] = {0, 0};
-#else
-func_ptr __CTOR_LIST__[2];
-func_ptr __DTOR_LIST__[2];
-#endif
-#endif /* no INIT_SECTION_ASM_OP and not CTOR_LISTS_DEFINED_EXTERNALLY */
-#endif /* L_ctors */
-#endif /* LIBGCC2_UNITS_PER_WORD <= MIN_UNITS_PER_WORD */
diff --git a/gcc/libgcc2.h b/gcc/libgcc2.h
deleted file mode 100644
index 0c7d0e15623..00000000000
--- a/gcc/libgcc2.h
+++ /dev/null
@@ -1,530 +0,0 @@
-/* Header file for libgcc2.c. */
-/* Copyright (C) 2000, 2001, 2004, 2005, 2009, 2010
- Free Software Foundation, Inc.
-
-This file is part of GCC.
-
-GCC is free software; you can redistribute it and/or modify it under
-the terms of the GNU General Public License as published by the Free
-Software Foundation; either version 3, or (at your option) any later
-version.
-
-GCC 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 General Public License
-for more details.
-
-Under Section 7 of GPL version 3, you are granted additional
-permissions described in the GCC Runtime Library Exception, version
-3.1, as published by the Free Software Foundation.
-
-You should have received a copy of the GNU General Public License and
-a copy of the GCC Runtime Library Exception along with this program;
-see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-<http://www.gnu.org/licenses/>. */
-
-#ifndef GCC_LIBGCC2_H
-#define GCC_LIBGCC2_H
-
-#ifndef HIDE_EXPORTS
-#pragma GCC visibility push(default)
-#endif
-
-extern int __gcc_bcmp (const unsigned char *, const unsigned char *, size_t);
-extern void __clear_cache (char *, char *);
-extern void __eprintf (const char *, const char *, unsigned int, const char *)
- __attribute__ ((__noreturn__));
-
-#ifndef LIBGCC2_LONG_DOUBLE_TYPE_SIZE
-#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE LONG_DOUBLE_TYPE_SIZE
-#endif
-
-#ifndef LIBGCC2_HAS_SF_MODE
-#define LIBGCC2_HAS_SF_MODE (BITS_PER_UNIT == 8)
-#endif
-
-#ifndef LIBGCC2_HAS_DF_MODE
-#define LIBGCC2_HAS_DF_MODE \
- (BITS_PER_UNIT == 8 \
- && (__SIZEOF_DOUBLE__ * __CHAR_BIT__ == 64 \
- || LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 64))
-#endif
-
-#ifndef LIBGCC2_HAS_XF_MODE
-#define LIBGCC2_HAS_XF_MODE \
- (BITS_PER_UNIT == 8 && LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 80)
-#endif
-
-#ifndef LIBGCC2_HAS_TF_MODE
-#define LIBGCC2_HAS_TF_MODE \
- (BITS_PER_UNIT == 8 && LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 128)
-#endif
-
-#ifndef SF_SIZE
-#if LIBGCC2_HAS_SF_MODE
-#define SF_SIZE FLT_MANT_DIG
-#else
-#define SF_SIZE 0
-#endif
-#endif
-
-#ifndef DF_SIZE
-#if LIBGCC2_HAS_DF_MODE
-#if __SIZEOF_DOUBLE__ * __CHAR_BIT__ == 64
-#define DF_SIZE DBL_MANT_DIG
-#elif LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 64
-#define DF_SIZE LDBL_MANT_DIG
-#else
-#define DF_SIZE 0
-#endif
-#else
-#define DF_SIZE 0
-#endif
-#endif
-
-#ifndef XF_SIZE
-#if LIBGCC2_HAS_XF_MODE
-#define XF_SIZE LDBL_MANT_DIG
-#else
-#define XF_SIZE 0
-#endif
-#endif
-
-#ifndef TF_SIZE
-#if LIBGCC2_HAS_TF_MODE
-#define TF_SIZE LDBL_MANT_DIG
-#else
-#define TF_SIZE 0
-#endif
-#endif
-
-/* FIXME: This #ifdef probably should be removed, ie. enable the test
- for mips too. */
-/* Don't use IBM Extended Double TFmode for TI->SF calculations.
- The conversion from long double to float suffers from double
- rounding, because we convert via double. In other cases, going
- through the software fp routines is much slower than the fallback. */
-#ifdef __powerpc__
-#define AVOID_FP_TYPE_CONVERSION(SIZE) (SIZE == 106)
-#elif defined(WIDEST_HARDWARE_FP_SIZE)
-#define AVOID_FP_TYPE_CONVERSION(SIZE) (SIZE > WIDEST_HARDWARE_FP_SIZE)
-#else
-#define AVOID_FP_TYPE_CONVERSION(SIZE) 0
-#endif
-
-/* In the first part of this file, we are interfacing to calls generated
- by the compiler itself. These calls pass values into these routines
- which have very specific modes (rather than very specific types), and
- these compiler-generated calls also expect any return values to have
- very specific modes (rather than very specific types). Thus, we need
- to avoid using regular C language type names in this part of the file
- because the sizes for those types can be configured to be anything.
- Instead we use the following special type names. */
-
-typedef int QItype __attribute__ ((mode (QI)));
-typedef unsigned int UQItype __attribute__ ((mode (QI)));
-typedef int HItype __attribute__ ((mode (HI)));
-typedef unsigned int UHItype __attribute__ ((mode (HI)));
-#if MIN_UNITS_PER_WORD > 1
-/* These typedefs are usually forbidden on dsp's with UNITS_PER_WORD 1. */
-typedef int SItype __attribute__ ((mode (SI)));
-typedef unsigned int USItype __attribute__ ((mode (SI)));
-#if __SIZEOF_LONG_LONG__ > 4
-/* These typedefs are usually forbidden on archs with UNITS_PER_WORD 2. */
-typedef int DItype __attribute__ ((mode (DI)));
-typedef unsigned int UDItype __attribute__ ((mode (DI)));
-#if MIN_UNITS_PER_WORD > 4
-/* These typedefs are usually forbidden on archs with UNITS_PER_WORD 4. */
-typedef int TItype __attribute__ ((mode (TI)));
-typedef unsigned int UTItype __attribute__ ((mode (TI)));
-#endif
-#endif
-#endif
-
-#if LIBGCC2_HAS_SF_MODE
-typedef float SFtype __attribute__ ((mode (SF)));
-typedef _Complex float SCtype __attribute__ ((mode (SC)));
-#endif
-#if LIBGCC2_HAS_DF_MODE
-typedef float DFtype __attribute__ ((mode (DF)));
-typedef _Complex float DCtype __attribute__ ((mode (DC)));
-#endif
-#if LIBGCC2_HAS_XF_MODE
-typedef float XFtype __attribute__ ((mode (XF)));
-typedef _Complex float XCtype __attribute__ ((mode (XC)));
-#endif
-#if LIBGCC2_HAS_TF_MODE
-typedef float TFtype __attribute__ ((mode (TF)));
-typedef _Complex float TCtype __attribute__ ((mode (TC)));
-#endif
-
-typedef int cmp_return_type __attribute__((mode (__libgcc_cmp_return__)));
-typedef int shift_count_type __attribute__((mode (__libgcc_shift_count__)));
-
-/* Make sure that we don't accidentally use any normal C language built-in
- type names in the first part of this file. Instead we want to use *only*
- the type names defined above. The following macro definitions insure
- that if we *do* accidentally use some normal C language built-in type name,
- we will get a syntax error. */
-
-#define char bogus_type
-#define short bogus_type
-#define int bogus_type
-#define long bogus_type
-#define unsigned bogus_type
-#define float bogus_type
-#define double bogus_type
-
-/* Versions prior to 3.4.4 were not taking into account the word size for
- the 5 trapping arithmetic functions absv, addv, subv, mulv and negv. As
- a consequence, the si and di variants were always and the only ones emitted.
- To maintain backward compatibility, COMPAT_SIMODE_TRAPPING_ARITHMETIC is
- defined on platforms where it makes sense to still have the si variants
- emitted. As a bonus, their implementation is now correct. Note that the
- same mechanism should have been implemented for the di variants, but it
- turns out that no platform would define COMPAT_DIMODE_TRAPPING_ARITHMETIC
- if it existed. */
-
-#if LIBGCC2_UNITS_PER_WORD == 8
-#define W_TYPE_SIZE (8 * BITS_PER_UNIT)
-#define Wtype DItype
-#define UWtype UDItype
-#define HWtype DItype
-#define UHWtype UDItype
-#define DWtype TItype
-#define UDWtype UTItype
-#ifdef LIBGCC2_GNU_PREFIX
-#define __NW(a,b) __gnu_ ## a ## di ## b
-#define __NDW(a,b) __gnu_ ## a ## ti ## b
-#else
-#define __NW(a,b) __ ## a ## di ## b
-#define __NDW(a,b) __ ## a ## ti ## b
-#endif
-#define COMPAT_SIMODE_TRAPPING_ARITHMETIC
-#elif LIBGCC2_UNITS_PER_WORD == 4
-#define W_TYPE_SIZE (4 * BITS_PER_UNIT)
-#define Wtype SItype
-#define UWtype USItype
-#define HWtype SItype
-#define UHWtype USItype
-#define DWtype DItype
-#define UDWtype UDItype
-#ifdef LIBGCC2_GNU_PREFIX
-#define __NW(a,b) __gnu_ ## a ## si ## b
-#define __NDW(a,b) __gnu_ ## a ## di ## b
-#else
-#define __NW(a,b) __ ## a ## si ## b
-#define __NDW(a,b) __ ## a ## di ## b
-#endif
-#elif LIBGCC2_UNITS_PER_WORD == 2
-#define W_TYPE_SIZE (2 * BITS_PER_UNIT)
-#define Wtype HItype
-#define UWtype UHItype
-#define HWtype HItype
-#define UHWtype UHItype
-#define DWtype SItype
-#define UDWtype USItype
-#ifdef LIBGCC2_GNU_PREFIX
-#define __NW(a,b) __gnu_ ## a ## hi ## b
-#define __NDW(a,b) __gnu_ ## a ## si ## b
-#else
-#define __NW(a,b) __ ## a ## hi ## b
-#define __NDW(a,b) __ ## a ## si ## b
-#endif
-#else
-#define W_TYPE_SIZE BITS_PER_UNIT
-#define Wtype QItype
-#define UWtype UQItype
-#define HWtype QItype
-#define UHWtype UQItype
-#define DWtype HItype
-#define UDWtype UHItype
-#ifdef LIBGCC2_GNU_PREFIX
-#define __NW(a,b) __gnu_ ## a ## qi ## b
-#define __NDW(a,b) __gnu_ ## a ## hi ## b
-#else
-#define __NW(a,b) __ ## a ## qi ## b
-#define __NDW(a,b) __ ## a ## hi ## b
-#endif
-#endif
-
-#ifdef LIBGCC2_GNU_PREFIX
-#define __N(a) __gnu_ ## a
-#else
-#define __N(a) __ ## a
-#endif
-#define Wtype_MAX ((Wtype)(((UWtype)1 << (W_TYPE_SIZE - 1)) - 1))
-#define Wtype_MIN (- Wtype_MAX - 1)
-
-#if W_TYPE_SIZE == 8
-# define Wtype_MAXp1_F 0x1p8f
-#elif W_TYPE_SIZE == 16
-# define Wtype_MAXp1_F 0x1p16f
-#elif W_TYPE_SIZE == 32
-# define Wtype_MAXp1_F 0x1p32f
-#elif W_TYPE_SIZE == 64
-# define Wtype_MAXp1_F 0x1p64f
-#else
-# error "expand the table"
-#endif
-
-#define __muldi3 __NDW(mul,3)
-#define __divdi3 __NDW(div,3)
-#define __udivdi3 __NDW(udiv,3)
-#define __moddi3 __NDW(mod,3)
-#define __umoddi3 __NDW(umod,3)
-#define __negdi2 __NDW(neg,2)
-#define __lshrdi3 __NDW(lshr,3)
-#define __ashldi3 __NDW(ashl,3)
-#define __ashrdi3 __NDW(ashr,3)
-#define __cmpdi2 __NDW(cmp,2)
-#define __ucmpdi2 __NDW(ucmp,2)
-#define __udivmoddi4 __NDW(udivmod,4)
-#define __fixunstfDI __NDW(fixunstf,)
-#define __fixtfdi __NDW(fixtf,)
-#define __fixunsxfDI __NDW(fixunsxf,)
-#define __fixxfdi __NDW(fixxf,)
-#define __fixunsdfDI __NDW(fixunsdf,)
-#define __fixdfdi __NDW(fixdf,)
-#define __fixunssfDI __NDW(fixunssf,)
-#define __fixsfdi __NDW(fixsf,)
-#define __floatdixf __NDW(float,xf)
-#define __floatditf __NDW(float,tf)
-#define __floatdidf __NDW(float,df)
-#define __floatdisf __NDW(float,sf)
-#define __floatundixf __NDW(floatun,xf)
-#define __floatunditf __NDW(floatun,tf)
-#define __floatundidf __NDW(floatun,df)
-#define __floatundisf __NDW(floatun,sf)
-#define __fixunsxfSI __NW(fixunsxf,)
-#define __fixunstfSI __NW(fixunstf,)
-#define __fixunsdfSI __NW(fixunsdf,)
-#define __fixunssfSI __NW(fixunssf,)
-
-#define __absvSI2 __NW(absv,2)
-#define __addvSI3 __NW(addv,3)
-#define __subvSI3 __NW(subv,3)
-#define __mulvSI3 __NW(mulv,3)
-#define __negvSI2 __NW(negv,2)
-#define __absvDI2 __NDW(absv,2)
-#define __addvDI3 __NDW(addv,3)
-#define __subvDI3 __NDW(subv,3)
-#define __mulvDI3 __NDW(mulv,3)
-#define __negvDI2 __NDW(negv,2)
-
-#define __ffsSI2 __NW(ffs,2)
-#define __clzSI2 __NW(clz,2)
-#define __ctzSI2 __NW(ctz,2)
-#define __clrsbSI2 __NW(clrsb,2)
-#define __popcountSI2 __NW(popcount,2)
-#define __paritySI2 __NW(parity,2)
-#define __ffsDI2 __NDW(ffs,2)
-#define __clzDI2 __NDW(clz,2)
-#define __ctzDI2 __NDW(ctz,2)
-#define __clrsbDI2 __NDW(clrsb,2)
-#define __popcountDI2 __NDW(popcount,2)
-#define __parityDI2 __NDW(parity,2)
-
-#define __clz_tab __N(clz_tab)
-#define __bswapsi2 __N(bswapsi2)
-#define __bswapdi2 __N(bswapdi2)
-#define __udiv_w_sdiv __N(udiv_w_sdiv)
-#define __clear_cache __N(clear_cache)
-#define __enable_execute_stack __N(enable_execute_stack)
-
-#ifndef __powisf2
-#define __powisf2 __N(powisf2)
-#endif
-#ifndef __powidf2
-#define __powidf2 __N(powidf2)
-#endif
-#ifndef __powitf2
-#define __powitf2 __N(powitf2)
-#endif
-#ifndef __powixf2
-#define __powixf2 __N(powixf2)
-#endif
-#ifndef __mulsc3
-#define __mulsc3 __N(mulsc3)
-#endif
-#ifndef __muldc3
-#define __muldc3 __N(muldc3)
-#endif
-#ifndef __mulxc3
-#define __mulxc3 __N(mulxc3)
-#endif
-#ifndef __multc3
-#define __multc3 __N(multc3)
-#endif
-#ifndef __divsc3
-#define __divsc3 __N(divsc3)
-#endif
-#ifndef __divdc3
-#define __divdc3 __N(divdc3)
-#endif
-#ifndef __divxc3
-#define __divxc3 __N(divxc3)
-#endif
-#ifndef __divtc3
-#define __divtc3 __N(divtc3)
-#endif
-
-extern DWtype __muldi3 (DWtype, DWtype);
-extern DWtype __divdi3 (DWtype, DWtype);
-extern UDWtype __udivdi3 (UDWtype, UDWtype);
-extern UDWtype __umoddi3 (UDWtype, UDWtype);
-extern DWtype __moddi3 (DWtype, DWtype);
-
-/* __udivmoddi4 is static inline when building other libgcc2 portions. */
-#if (!defined (L_udivdi3) && !defined (L_divdi3) && \
- !defined (L_umoddi3) && !defined (L_moddi3))
-extern UDWtype __udivmoddi4 (UDWtype, UDWtype, UDWtype *);
-#endif
-
-/* __negdi2 is static inline when building other libgcc2 portions. */
-#if !defined(L_divdi3) && !defined(L_moddi3)
-extern DWtype __negdi2 (DWtype);
-#endif
-
-extern DWtype __lshrdi3 (DWtype, shift_count_type);
-extern DWtype __ashldi3 (DWtype, shift_count_type);
-extern DWtype __ashrdi3 (DWtype, shift_count_type);
-
-/* __udiv_w_sdiv is static inline when building other libgcc2 portions. */
-#if (!defined(L_udivdi3) && !defined(L_divdi3) && \
- !defined(L_umoddi3) && !defined(L_moddi3))
-extern UWtype __udiv_w_sdiv (UWtype *, UWtype, UWtype, UWtype);
-#endif
-
-extern cmp_return_type __cmpdi2 (DWtype, DWtype);
-extern cmp_return_type __ucmpdi2 (DWtype, DWtype);
-
-#if MIN_UNITS_PER_WORD > 1
-extern SItype __bswapsi2 (SItype);
-#endif
-#if __SIZEOF_LONG_LONG__ > 4
-extern DItype __bswapdi2 (DItype);
-#endif
-
-extern Wtype __absvSI2 (Wtype);
-extern Wtype __addvSI3 (Wtype, Wtype);
-extern Wtype __subvSI3 (Wtype, Wtype);
-extern Wtype __mulvSI3 (Wtype, Wtype);
-extern Wtype __negvSI2 (Wtype);
-extern DWtype __absvDI2 (DWtype);
-extern DWtype __addvDI3 (DWtype, DWtype);
-extern DWtype __subvDI3 (DWtype, DWtype);
-extern DWtype __mulvDI3 (DWtype, DWtype);
-extern DWtype __negvDI2 (DWtype);
-
-#ifdef COMPAT_SIMODE_TRAPPING_ARITHMETIC
-#define __absvsi2 __N(absvsi2)
-#define __negvsi2 __N(negvsi2)
-#define __addvsi3 __N(addvsi3)
-#define __subvsi3 __N(subvsi3)
-#define __mulvsi3 __N(mulvsi3)
-
-extern SItype __absvsi2 (SItype);
-extern SItype __addvsi3 (SItype, SItype);
-extern SItype __subvsi3 (SItype, SItype);
-extern SItype __mulvsi3 (SItype, SItype);
-extern SItype __negvsi2 (SItype);
-#endif /* COMPAT_SIMODE_TRAPPING_ARITHMETIC */
-
-#undef int
-#if LIBGCC2_HAS_SF_MODE
-extern DWtype __fixsfdi (SFtype);
-extern SFtype __floatdisf (DWtype);
-extern SFtype __floatundisf (UDWtype);
-extern UWtype __fixunssfSI (SFtype);
-extern UDWtype __fixunssfDI (SFtype);
-extern SFtype __powisf2 (SFtype, int);
-extern SCtype __divsc3 (SFtype, SFtype, SFtype, SFtype);
-extern SCtype __mulsc3 (SFtype, SFtype, SFtype, SFtype);
-#endif
-#if LIBGCC2_HAS_DF_MODE
-extern DWtype __fixdfdi (DFtype);
-extern DFtype __floatdidf (DWtype);
-extern DFtype __floatundidf (UDWtype);
-extern UWtype __fixunsdfSI (DFtype);
-extern UDWtype __fixunsdfDI (DFtype);
-extern DFtype __powidf2 (DFtype, int);
-extern DCtype __divdc3 (DFtype, DFtype, DFtype, DFtype);
-extern DCtype __muldc3 (DFtype, DFtype, DFtype, DFtype);
-#endif
-
-#if LIBGCC2_HAS_XF_MODE
-extern DWtype __fixxfdi (XFtype);
-extern UDWtype __fixunsxfDI (XFtype);
-extern XFtype __floatdixf (DWtype);
-extern XFtype __floatundixf (UDWtype);
-extern UWtype __fixunsxfSI (XFtype);
-extern XFtype __powixf2 (XFtype, int);
-extern XCtype __divxc3 (XFtype, XFtype, XFtype, XFtype);
-extern XCtype __mulxc3 (XFtype, XFtype, XFtype, XFtype);
-#endif
-
-#if LIBGCC2_HAS_TF_MODE
-extern UDWtype __fixunstfDI (TFtype);
-extern DWtype __fixtfdi (TFtype);
-extern TFtype __floatditf (DWtype);
-extern TFtype __floatunditf (UDWtype);
-extern TFtype __powitf2 (TFtype, int);
-extern TCtype __divtc3 (TFtype, TFtype, TFtype, TFtype);
-extern TCtype __multc3 (TFtype, TFtype, TFtype, TFtype);
-#endif
-#define int bogus_type
-
-/* DWstructs are pairs of Wtype values in the order determined by
- __BYTE_ORDER__. */
-
-#if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__
- struct DWstruct {Wtype high, low;};
-#else
- struct DWstruct {Wtype low, high;};
-#endif
-
-/* We need this union to unpack/pack DImode values, since we don't have
- any arithmetic yet. Incoming DImode parameters are stored into the
- `ll' field, and the unpacked result is read from the struct `s'. */
-
-typedef union
-{
- struct DWstruct s;
- DWtype ll;
-} DWunion;
-
-/* Defined for L_popcount_tab. Exported here because some targets may
- want to use it for their own versions of the __popcount builtins. */
-extern const UQItype __popcount_tab[256];
-
-/* Defined for L_clz. Exported here because some targets may want to use
- it for their own versions of the __clz builtins. It contains the bit
- position of the first set bit for the numbers 0 - 255. This avoids the
- need for a separate table for the __ctz builtins. */
-extern const UQItype __clz_tab[256];
-
-#include "longlong.h"
-
-#undef int
-extern int __clzDI2 (UDWtype);
-extern int __clzSI2 (UWtype);
-extern int __ctzSI2 (UWtype);
-extern int __ctzDI2 (UDWtype);
-extern int __clrsbSI2 (Wtype);
-extern int __clrsbDI2 (DWtype);
-extern int __ffsSI2 (UWtype);
-extern int __ffsDI2 (DWtype);
-extern int __popcountSI2 (UWtype);
-extern int __popcountDI2 (UDWtype);
-extern int __paritySI2 (UWtype);
-extern int __parityDI2 (UDWtype);
-#define int bogus_type
-
-extern void __enable_execute_stack (void *);
-
-#ifndef HIDE_EXPORTS
-#pragma GCC visibility pop
-#endif
-
-#endif /* ! GCC_LIBGCC2_H */
diff --git a/gcc/longlong.h b/gcc/longlong.h
deleted file mode 100644
index 30cc2e337f3..00000000000
--- a/gcc/longlong.h
+++ /dev/null
@@ -1,1660 +0,0 @@
-/* longlong.h -- definitions for mixed size 32/64 bit arithmetic.
- Copyright (C) 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
- 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.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file into
- combinations with other programs, and to distribute those
- combinations without any restriction coming from the use of this
- file. (The Lesser General Public License restrictions do apply in
- other respects; for example, they cover modification of the file,
- and distribution when not linked into a combine executable.)
-
- 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, 51 Franklin Street, Fifth Floor, Boston,
- MA 02110-1301, USA. */
-
-/* You have to define the following before including this file:
-
- UWtype -- An unsigned type, default type for operations (typically a "word")
- UHWtype -- An unsigned type, at least half the size of UWtype.
- UDWtype -- An unsigned type, at least twice as large a UWtype
- W_TYPE_SIZE -- size in bits of UWtype
-
- UQItype -- Unsigned 8 bit type.
- SItype, USItype -- Signed and unsigned 32 bit types.
- DItype, UDItype -- Signed and unsigned 64 bit types.
-
- On a 32 bit machine UWtype should typically be USItype;
- on a 64 bit machine, UWtype should typically be UDItype. */
-
-#define __BITS4 (W_TYPE_SIZE / 4)
-#define __ll_B ((UWtype) 1 << (W_TYPE_SIZE / 2))
-#define __ll_lowpart(t) ((UWtype) (t) & (__ll_B - 1))
-#define __ll_highpart(t) ((UWtype) (t) >> (W_TYPE_SIZE / 2))
-
-#ifndef W_TYPE_SIZE
-#define W_TYPE_SIZE 32
-#define UWtype USItype
-#define UHWtype USItype
-#define UDWtype UDItype
-#endif
-
-/* Used in glibc only. */
-#ifndef attribute_hidden
-#define attribute_hidden
-#endif
-
-extern const UQItype __clz_tab[256] attribute_hidden;
-
-/* Define auxiliary asm macros.
-
- 1) umul_ppmm(high_prod, low_prod, multiplier, multiplicand) multiplies two
- UWtype integers MULTIPLIER and MULTIPLICAND, and generates a two UWtype
- word product in HIGH_PROD and LOW_PROD.
-
- 2) __umulsidi3(a,b) multiplies two UWtype integers A and B, and returns a
- UDWtype product. This is just a variant of umul_ppmm.
-
- 3) udiv_qrnnd(quotient, remainder, high_numerator, low_numerator,
- denominator) divides a UDWtype, composed by the UWtype integers
- HIGH_NUMERATOR and LOW_NUMERATOR, by DENOMINATOR and places the quotient
- in QUOTIENT and the remainder in REMAINDER. HIGH_NUMERATOR must be less
- than DENOMINATOR for correct operation. If, in addition, the most
- significant bit of DENOMINATOR must be 1, then the pre-processor symbol
- UDIV_NEEDS_NORMALIZATION is defined to 1.
-
- 4) sdiv_qrnnd(quotient, remainder, high_numerator, low_numerator,
- denominator). Like udiv_qrnnd but the numbers are signed. The quotient
- is rounded towards 0.
-
- 5) count_leading_zeros(count, x) counts the number of zero-bits from the
- msb to the first nonzero bit in the UWtype X. This is the number of
- steps X needs to be shifted left to set the msb. Undefined for X == 0,
- unless the symbol COUNT_LEADING_ZEROS_0 is defined to some value.
-
- 6) count_trailing_zeros(count, x) like count_leading_zeros, but counts
- from the least significant end.
-
- 7) add_ssaaaa(high_sum, low_sum, high_addend_1, low_addend_1,
- high_addend_2, low_addend_2) adds two UWtype integers, composed by
- HIGH_ADDEND_1 and LOW_ADDEND_1, and HIGH_ADDEND_2 and LOW_ADDEND_2
- respectively. The result is placed in HIGH_SUM and LOW_SUM. Overflow
- (i.e. carry out) is not stored anywhere, and is lost.
-
- 8) sub_ddmmss(high_difference, low_difference, high_minuend, low_minuend,
- high_subtrahend, low_subtrahend) subtracts two two-word UWtype integers,
- composed by HIGH_MINUEND_1 and LOW_MINUEND_1, and HIGH_SUBTRAHEND_2 and
- LOW_SUBTRAHEND_2 respectively. The result is placed in HIGH_DIFFERENCE
- and LOW_DIFFERENCE. Overflow (i.e. carry out) is not stored anywhere,
- and is lost.
-
- If any of these macros are left undefined for a particular CPU,
- C macros are used. */
-
-/* The CPUs come in alphabetical order below.
-
- Please add support for more CPUs here, or improve the current support
- for the CPUs below!
- (E.g. WE32100, IBM360.) */
-
-#if defined (__GNUC__) && !defined (NO_ASM)
-
-/* We sometimes need to clobber "cc" with gcc2, but that would not be
- understood by gcc1. Use cpp to avoid major code duplication. */
-#if __GNUC__ < 2
-#define __CLOBBER_CC
-#define __AND_CLOBBER_CC
-#else /* __GNUC__ >= 2 */
-#define __CLOBBER_CC : "cc"
-#define __AND_CLOBBER_CC , "cc"
-#endif /* __GNUC__ < 2 */
-
-#if defined (__alpha) && W_TYPE_SIZE == 64
-#define umul_ppmm(ph, pl, m0, m1) \
- do { \
- UDItype __m0 = (m0), __m1 = (m1); \
- (ph) = __builtin_alpha_umulh (__m0, __m1); \
- (pl) = __m0 * __m1; \
- } while (0)
-#define UMUL_TIME 46
-#ifndef LONGLONG_STANDALONE
-#define udiv_qrnnd(q, r, n1, n0, d) \
- do { UDItype __r; \
- (q) = __udiv_qrnnd (&__r, (n1), (n0), (d)); \
- (r) = __r; \
- } while (0)
-extern UDItype __udiv_qrnnd (UDItype *, UDItype, UDItype, UDItype);
-#define UDIV_TIME 220
-#endif /* LONGLONG_STANDALONE */
-#ifdef __alpha_cix__
-#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clzl (X))
-#define count_trailing_zeros(COUNT,X) ((COUNT) = __builtin_ctzl (X))
-#define COUNT_LEADING_ZEROS_0 64
-#else
-#define count_leading_zeros(COUNT,X) \
- do { \
- UDItype __xr = (X), __t, __a; \
- __t = __builtin_alpha_cmpbge (0, __xr); \
- __a = __clz_tab[__t ^ 0xff] - 1; \
- __t = __builtin_alpha_extbl (__xr, __a); \
- (COUNT) = 64 - (__clz_tab[__t] + __a*8); \
- } while (0)
-#define count_trailing_zeros(COUNT,X) \
- do { \
- UDItype __xr = (X), __t, __a; \
- __t = __builtin_alpha_cmpbge (0, __xr); \
- __t = ~__t & -~__t; \
- __a = ((__t & 0xCC) != 0) * 2; \
- __a += ((__t & 0xF0) != 0) * 4; \
- __a += ((__t & 0xAA) != 0); \
- __t = __builtin_alpha_extbl (__xr, __a); \
- __a <<= 3; \
- __t &= -__t; \
- __a += ((__t & 0xCC) != 0) * 2; \
- __a += ((__t & 0xF0) != 0) * 4; \
- __a += ((__t & 0xAA) != 0); \
- (COUNT) = __a; \
- } while (0)
-#endif /* __alpha_cix__ */
-#endif /* __alpha */
-
-#if defined (__arc__) && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("add.f %1, %4, %5\n\tadc %0, %2, %3" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "%r" ((USItype) (ah)), \
- "rIJ" ((USItype) (bh)), \
- "%r" ((USItype) (al)), \
- "rIJ" ((USItype) (bl)))
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("sub.f %1, %4, %5\n\tsbc %0, %2, %3" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "r" ((USItype) (ah)), \
- "rIJ" ((USItype) (bh)), \
- "r" ((USItype) (al)), \
- "rIJ" ((USItype) (bl)))
-/* Call libgcc routine. */
-#define umul_ppmm(w1, w0, u, v) \
-do { \
- DWunion __w; \
- __w.ll = __umulsidi3 (u, v); \
- w1 = __w.s.high; \
- w0 = __w.s.low; \
-} while (0)
-#define __umulsidi3 __umulsidi3
-UDItype __umulsidi3 (USItype, USItype);
-#endif
-
-#if defined (__arm__) && !defined (__thumb__) && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("adds %1, %4, %5\n\tadc %0, %2, %3" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "%r" ((USItype) (ah)), \
- "rI" ((USItype) (bh)), \
- "%r" ((USItype) (al)), \
- "rI" ((USItype) (bl)) __CLOBBER_CC)
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("subs %1, %4, %5\n\tsbc %0, %2, %3" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "r" ((USItype) (ah)), \
- "rI" ((USItype) (bh)), \
- "r" ((USItype) (al)), \
- "rI" ((USItype) (bl)) __CLOBBER_CC)
-#define umul_ppmm(xh, xl, a, b) \
-{register USItype __t0, __t1, __t2; \
- __asm__ ("%@ Inlined umul_ppmm\n" \
- " mov %2, %5, lsr #16\n" \
- " mov %0, %6, lsr #16\n" \
- " bic %3, %5, %2, lsl #16\n" \
- " bic %4, %6, %0, lsl #16\n" \
- " mul %1, %3, %4\n" \
- " mul %4, %2, %4\n" \
- " mul %3, %0, %3\n" \
- " mul %0, %2, %0\n" \
- " adds %3, %4, %3\n" \
- " addcs %0, %0, #65536\n" \
- " adds %1, %1, %3, lsl #16\n" \
- " adc %0, %0, %3, lsr #16" \
- : "=&r" ((USItype) (xh)), \
- "=r" ((USItype) (xl)), \
- "=&r" (__t0), "=&r" (__t1), "=r" (__t2) \
- : "r" ((USItype) (a)), \
- "r" ((USItype) (b)) __CLOBBER_CC );}
-#define UMUL_TIME 20
-#define UDIV_TIME 100
-#endif /* __arm__ */
-
-#if defined(__arm__)
-/* Let gcc decide how best to implement count_leading_zeros. */
-#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clz (X))
-#define COUNT_LEADING_ZEROS_0 32
-#endif
-
-#if defined (__AVR__)
-
-#if W_TYPE_SIZE == 16
-#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clz (X))
-#define count_trailing_zeros(COUNT,X) ((COUNT) = __builtin_ctz (X))
-#define COUNT_LEADING_ZEROS_0 16
-#endif /* W_TYPE_SIZE == 16 */
-
-#if W_TYPE_SIZE == 32
-#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clzl (X))
-#define count_trailing_zeros(COUNT,X) ((COUNT) = __builtin_ctzl (X))
-#define COUNT_LEADING_ZEROS_0 32
-#endif /* W_TYPE_SIZE == 32 */
-
-#if W_TYPE_SIZE == 64
-#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clzll (X))
-#define count_trailing_zeros(COUNT,X) ((COUNT) = __builtin_ctzll (X))
-#define COUNT_LEADING_ZEROS_0 64
-#endif /* W_TYPE_SIZE == 64 */
-
-#endif /* defined (__AVR__) */
-
-#if defined (__CRIS__) && __CRIS_arch_version >= 3
-#define count_leading_zeros(COUNT, X) ((COUNT) = __builtin_clz (X))
-#if __CRIS_arch_version >= 8
-#define count_trailing_zeros(COUNT, X) ((COUNT) = __builtin_ctz (X))
-#endif
-#endif /* __CRIS__ */
-
-#if defined (__hppa) && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("add %4,%5,%1\n\taddc %2,%3,%0" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "%rM" ((USItype) (ah)), \
- "rM" ((USItype) (bh)), \
- "%rM" ((USItype) (al)), \
- "rM" ((USItype) (bl)))
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("sub %4,%5,%1\n\tsubb %2,%3,%0" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "rM" ((USItype) (ah)), \
- "rM" ((USItype) (bh)), \
- "rM" ((USItype) (al)), \
- "rM" ((USItype) (bl)))
-#if defined (_PA_RISC1_1)
-#define umul_ppmm(w1, w0, u, v) \
- do { \
- union \
- { \
- UDItype __f; \
- struct {USItype __w1, __w0;} __w1w0; \
- } __t; \
- __asm__ ("xmpyu %1,%2,%0" \
- : "=x" (__t.__f) \
- : "x" ((USItype) (u)), \
- "x" ((USItype) (v))); \
- (w1) = __t.__w1w0.__w1; \
- (w0) = __t.__w1w0.__w0; \
- } while (0)
-#define UMUL_TIME 8
-#else
-#define UMUL_TIME 30
-#endif
-#define UDIV_TIME 40
-#define count_leading_zeros(count, x) \
- do { \
- USItype __tmp; \
- __asm__ ( \
- "ldi 1,%0\n" \
-" extru,= %1,15,16,%%r0 ; Bits 31..16 zero?\n" \
-" extru,tr %1,15,16,%1 ; No. Shift down, skip add.\n"\
-" ldo 16(%0),%0 ; Yes. Perform add.\n" \
-" extru,= %1,23,8,%%r0 ; Bits 15..8 zero?\n" \
-" extru,tr %1,23,8,%1 ; No. Shift down, skip add.\n"\
-" ldo 8(%0),%0 ; Yes. Perform add.\n" \
-" extru,= %1,27,4,%%r0 ; Bits 7..4 zero?\n" \
-" extru,tr %1,27,4,%1 ; No. Shift down, skip add.\n"\
-" ldo 4(%0),%0 ; Yes. Perform add.\n" \
-" extru,= %1,29,2,%%r0 ; Bits 3..2 zero?\n" \
-" extru,tr %1,29,2,%1 ; No. Shift down, skip add.\n"\
-" ldo 2(%0),%0 ; Yes. Perform add.\n" \
-" extru %1,30,1,%1 ; Extract bit 1.\n" \
-" sub %0,%1,%0 ; Subtract it.\n" \
- : "=r" (count), "=r" (__tmp) : "1" (x)); \
- } while (0)
-#endif
-
-#if (defined (__i370__) || defined (__s390__) || defined (__mvs__)) && W_TYPE_SIZE == 32
-#if !defined (__zarch__)
-#define smul_ppmm(xh, xl, m0, m1) \
- do { \
- union {DItype __ll; \
- struct {USItype __h, __l;} __i; \
- } __x; \
- __asm__ ("lr %N0,%1\n\tmr %0,%2" \
- : "=&r" (__x.__ll) \
- : "r" (m0), "r" (m1)); \
- (xh) = __x.__i.__h; (xl) = __x.__i.__l; \
- } while (0)
-#define sdiv_qrnnd(q, r, n1, n0, d) \
- do { \
- union {DItype __ll; \
- struct {USItype __h, __l;} __i; \
- } __x; \
- __x.__i.__h = n1; __x.__i.__l = n0; \
- __asm__ ("dr %0,%2" \
- : "=r" (__x.__ll) \
- : "0" (__x.__ll), "r" (d)); \
- (q) = __x.__i.__l; (r) = __x.__i.__h; \
- } while (0)
-#else
-#define smul_ppmm(xh, xl, m0, m1) \
- do { \
- register SItype __r0 __asm__ ("0"); \
- register SItype __r1 __asm__ ("1") = (m0); \
- \
- __asm__ ("mr\t%%r0,%3" \
- : "=r" (__r0), "=r" (__r1) \
- : "r" (__r1), "r" (m1)); \
- (xh) = __r0; (xl) = __r1; \
- } while (0)
-
-#define sdiv_qrnnd(q, r, n1, n0, d) \
- do { \
- register SItype __r0 __asm__ ("0") = (n1); \
- register SItype __r1 __asm__ ("1") = (n0); \
- \
- __asm__ ("dr\t%%r0,%4" \
- : "=r" (__r0), "=r" (__r1) \
- : "r" (__r0), "r" (__r1), "r" (d)); \
- (q) = __r1; (r) = __r0; \
- } while (0)
-#endif /* __zarch__ */
-#endif
-
-#if (defined (__i386__) || defined (__i486__)) && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("add{l} {%5,%1|%1,%5}\n\tadc{l} {%3,%0|%0,%3}" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "%0" ((USItype) (ah)), \
- "g" ((USItype) (bh)), \
- "%1" ((USItype) (al)), \
- "g" ((USItype) (bl)))
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("sub{l} {%5,%1|%1,%5}\n\tsbb{l} {%3,%0|%0,%3}" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "0" ((USItype) (ah)), \
- "g" ((USItype) (bh)), \
- "1" ((USItype) (al)), \
- "g" ((USItype) (bl)))
-#define umul_ppmm(w1, w0, u, v) \
- __asm__ ("mul{l} %3" \
- : "=a" ((USItype) (w0)), \
- "=d" ((USItype) (w1)) \
- : "%0" ((USItype) (u)), \
- "rm" ((USItype) (v)))
-#define udiv_qrnnd(q, r, n1, n0, dv) \
- __asm__ ("div{l} %4" \
- : "=a" ((USItype) (q)), \
- "=d" ((USItype) (r)) \
- : "0" ((USItype) (n0)), \
- "1" ((USItype) (n1)), \
- "rm" ((USItype) (dv)))
-#define count_leading_zeros(count, x) ((count) = __builtin_clz (x))
-#define count_trailing_zeros(count, x) ((count) = __builtin_ctz (x))
-#define UMUL_TIME 40
-#define UDIV_TIME 40
-#endif /* 80x86 */
-
-#if (defined (__x86_64__) || defined (__i386__)) && W_TYPE_SIZE == 64
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("add{q} {%5,%1|%1,%5}\n\tadc{q} {%3,%0|%0,%3}" \
- : "=r" ((UDItype) (sh)), \
- "=&r" ((UDItype) (sl)) \
- : "%0" ((UDItype) (ah)), \
- "rme" ((UDItype) (bh)), \
- "%1" ((UDItype) (al)), \
- "rme" ((UDItype) (bl)))
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("sub{q} {%5,%1|%1,%5}\n\tsbb{q} {%3,%0|%0,%3}" \
- : "=r" ((UDItype) (sh)), \
- "=&r" ((UDItype) (sl)) \
- : "0" ((UDItype) (ah)), \
- "rme" ((UDItype) (bh)), \
- "1" ((UDItype) (al)), \
- "rme" ((UDItype) (bl)))
-#define umul_ppmm(w1, w0, u, v) \
- __asm__ ("mul{q} %3" \
- : "=a" ((UDItype) (w0)), \
- "=d" ((UDItype) (w1)) \
- : "%0" ((UDItype) (u)), \
- "rm" ((UDItype) (v)))
-#define udiv_qrnnd(q, r, n1, n0, dv) \
- __asm__ ("div{q} %4" \
- : "=a" ((UDItype) (q)), \
- "=d" ((UDItype) (r)) \
- : "0" ((UDItype) (n0)), \
- "1" ((UDItype) (n1)), \
- "rm" ((UDItype) (dv)))
-#define count_leading_zeros(count, x) ((count) = __builtin_clzll (x))
-#define count_trailing_zeros(count, x) ((count) = __builtin_ctzll (x))
-#define UMUL_TIME 40
-#define UDIV_TIME 40
-#endif /* x86_64 */
-
-#if defined (__i960__) && W_TYPE_SIZE == 32
-#define umul_ppmm(w1, w0, u, v) \
- ({union {UDItype __ll; \
- struct {USItype __l, __h;} __i; \
- } __xx; \
- __asm__ ("emul %2,%1,%0" \
- : "=d" (__xx.__ll) \
- : "%dI" ((USItype) (u)), \
- "dI" ((USItype) (v))); \
- (w1) = __xx.__i.__h; (w0) = __xx.__i.__l;})
-#define __umulsidi3(u, v) \
- ({UDItype __w; \
- __asm__ ("emul %2,%1,%0" \
- : "=d" (__w) \
- : "%dI" ((USItype) (u)), \
- "dI" ((USItype) (v))); \
- __w; })
-#endif /* __i960__ */
-
-#if defined (__ia64) && W_TYPE_SIZE == 64
-/* This form encourages gcc (pre-release 3.4 at least) to emit predicated
- "sub r=r,r" and "sub r=r,r,1", giving a 2 cycle latency. The generic
- code using "al<bl" arithmetically comes out making an actual 0 or 1 in a
- register, which takes an extra cycle. */
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- do { \
- UWtype __x; \
- __x = (al) - (bl); \
- if ((al) < (bl)) \
- (sh) = (ah) - (bh) - 1; \
- else \
- (sh) = (ah) - (bh); \
- (sl) = __x; \
- } while (0)
-
-/* Do both product parts in assembly, since that gives better code with
- all gcc versions. Some callers will just use the upper part, and in
- that situation we waste an instruction, but not any cycles. */
-#define umul_ppmm(ph, pl, m0, m1) \
- __asm__ ("xma.hu %0 = %2, %3, f0\n\txma.l %1 = %2, %3, f0" \
- : "=&f" (ph), "=f" (pl) \
- : "f" (m0), "f" (m1))
-#define count_leading_zeros(count, x) \
- do { \
- UWtype _x = (x), _y, _a, _c; \
- __asm__ ("mux1 %0 = %1, @rev" : "=r" (_y) : "r" (_x)); \
- __asm__ ("czx1.l %0 = %1" : "=r" (_a) : "r" (-_y | _y)); \
- _c = (_a - 1) << 3; \
- _x >>= _c; \
- if (_x >= 1 << 4) \
- _x >>= 4, _c += 4; \
- if (_x >= 1 << 2) \
- _x >>= 2, _c += 2; \
- _c += _x >> 1; \
- (count) = W_TYPE_SIZE - 1 - _c; \
- } while (0)
-/* similar to what gcc does for __builtin_ffs, but 0 based rather than 1
- based, and we don't need a special case for x==0 here */
-#define count_trailing_zeros(count, x) \
- do { \
- UWtype __ctz_x = (x); \
- __asm__ ("popcnt %0 = %1" \
- : "=r" (count) \
- : "r" ((__ctz_x-1) & ~__ctz_x)); \
- } while (0)
-#define UMUL_TIME 14
-#endif
-
-#if defined (__M32R__) && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- /* The cmp clears the condition bit. */ \
- __asm__ ("cmp %0,%0\n\taddx %1,%5\n\taddx %0,%3" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "0" ((USItype) (ah)), \
- "r" ((USItype) (bh)), \
- "1" ((USItype) (al)), \
- "r" ((USItype) (bl)) \
- : "cbit")
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- /* The cmp clears the condition bit. */ \
- __asm__ ("cmp %0,%0\n\tsubx %1,%5\n\tsubx %0,%3" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "0" ((USItype) (ah)), \
- "r" ((USItype) (bh)), \
- "1" ((USItype) (al)), \
- "r" ((USItype) (bl)) \
- : "cbit")
-#endif /* __M32R__ */
-
-#if defined (__mc68000__) && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("add%.l %5,%1\n\taddx%.l %3,%0" \
- : "=d" ((USItype) (sh)), \
- "=&d" ((USItype) (sl)) \
- : "%0" ((USItype) (ah)), \
- "d" ((USItype) (bh)), \
- "%1" ((USItype) (al)), \
- "g" ((USItype) (bl)))
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("sub%.l %5,%1\n\tsubx%.l %3,%0" \
- : "=d" ((USItype) (sh)), \
- "=&d" ((USItype) (sl)) \
- : "0" ((USItype) (ah)), \
- "d" ((USItype) (bh)), \
- "1" ((USItype) (al)), \
- "g" ((USItype) (bl)))
-
-/* The '020, '030, '040, '060 and CPU32 have 32x32->64 and 64/32->32q-32r. */
-#if (defined (__mc68020__) && !defined (__mc68060__))
-#define umul_ppmm(w1, w0, u, v) \
- __asm__ ("mulu%.l %3,%1:%0" \
- : "=d" ((USItype) (w0)), \
- "=d" ((USItype) (w1)) \
- : "%0" ((USItype) (u)), \
- "dmi" ((USItype) (v)))
-#define UMUL_TIME 45
-#define udiv_qrnnd(q, r, n1, n0, d) \
- __asm__ ("divu%.l %4,%1:%0" \
- : "=d" ((USItype) (q)), \
- "=d" ((USItype) (r)) \
- : "0" ((USItype) (n0)), \
- "1" ((USItype) (n1)), \
- "dmi" ((USItype) (d)))
-#define UDIV_TIME 90
-#define sdiv_qrnnd(q, r, n1, n0, d) \
- __asm__ ("divs%.l %4,%1:%0" \
- : "=d" ((USItype) (q)), \
- "=d" ((USItype) (r)) \
- : "0" ((USItype) (n0)), \
- "1" ((USItype) (n1)), \
- "dmi" ((USItype) (d)))
-
-#elif defined (__mcoldfire__) /* not mc68020 */
-
-#define umul_ppmm(xh, xl, a, b) \
- __asm__ ("| Inlined umul_ppmm\n" \
- " move%.l %2,%/d0\n" \
- " move%.l %3,%/d1\n" \
- " move%.l %/d0,%/d2\n" \
- " swap %/d0\n" \
- " move%.l %/d1,%/d3\n" \
- " swap %/d1\n" \
- " move%.w %/d2,%/d4\n" \
- " mulu %/d3,%/d4\n" \
- " mulu %/d1,%/d2\n" \
- " mulu %/d0,%/d3\n" \
- " mulu %/d0,%/d1\n" \
- " move%.l %/d4,%/d0\n" \
- " clr%.w %/d0\n" \
- " swap %/d0\n" \
- " add%.l %/d0,%/d2\n" \
- " add%.l %/d3,%/d2\n" \
- " jcc 1f\n" \
- " add%.l %#65536,%/d1\n" \
- "1: swap %/d2\n" \
- " moveq %#0,%/d0\n" \
- " move%.w %/d2,%/d0\n" \
- " move%.w %/d4,%/d2\n" \
- " move%.l %/d2,%1\n" \
- " add%.l %/d1,%/d0\n" \
- " move%.l %/d0,%0" \
- : "=g" ((USItype) (xh)), \
- "=g" ((USItype) (xl)) \
- : "g" ((USItype) (a)), \
- "g" ((USItype) (b)) \
- : "d0", "d1", "d2", "d3", "d4")
-#define UMUL_TIME 100
-#define UDIV_TIME 400
-#else /* not ColdFire */
-/* %/ inserts REGISTER_PREFIX, %# inserts IMMEDIATE_PREFIX. */
-#define umul_ppmm(xh, xl, a, b) \
- __asm__ ("| Inlined umul_ppmm\n" \
- " move%.l %2,%/d0\n" \
- " move%.l %3,%/d1\n" \
- " move%.l %/d0,%/d2\n" \
- " swap %/d0\n" \
- " move%.l %/d1,%/d3\n" \
- " swap %/d1\n" \
- " move%.w %/d2,%/d4\n" \
- " mulu %/d3,%/d4\n" \
- " mulu %/d1,%/d2\n" \
- " mulu %/d0,%/d3\n" \
- " mulu %/d0,%/d1\n" \
- " move%.l %/d4,%/d0\n" \
- " eor%.w %/d0,%/d0\n" \
- " swap %/d0\n" \
- " add%.l %/d0,%/d2\n" \
- " add%.l %/d3,%/d2\n" \
- " jcc 1f\n" \
- " add%.l %#65536,%/d1\n" \
- "1: swap %/d2\n" \
- " moveq %#0,%/d0\n" \
- " move%.w %/d2,%/d0\n" \
- " move%.w %/d4,%/d2\n" \
- " move%.l %/d2,%1\n" \
- " add%.l %/d1,%/d0\n" \
- " move%.l %/d0,%0" \
- : "=g" ((USItype) (xh)), \
- "=g" ((USItype) (xl)) \
- : "g" ((USItype) (a)), \
- "g" ((USItype) (b)) \
- : "d0", "d1", "d2", "d3", "d4")
-#define UMUL_TIME 100
-#define UDIV_TIME 400
-
-#endif /* not mc68020 */
-
-/* The '020, '030, '040 and '060 have bitfield insns.
- cpu32 disguises as a 68020, but lacks them. */
-#if defined (__mc68020__) && !defined (__mcpu32__)
-#define count_leading_zeros(count, x) \
- __asm__ ("bfffo %1{%b2:%b2},%0" \
- : "=d" ((USItype) (count)) \
- : "od" ((USItype) (x)), "n" (0))
-/* Some ColdFire architectures have a ff1 instruction supported via
- __builtin_clz. */
-#elif defined (__mcfisaaplus__) || defined (__mcfisac__)
-#define count_leading_zeros(count,x) ((count) = __builtin_clz (x))
-#define COUNT_LEADING_ZEROS_0 32
-#endif
-#endif /* mc68000 */
-
-#if defined (__m88000__) && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("addu.co %1,%r4,%r5\n\taddu.ci %0,%r2,%r3" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "%rJ" ((USItype) (ah)), \
- "rJ" ((USItype) (bh)), \
- "%rJ" ((USItype) (al)), \
- "rJ" ((USItype) (bl)))
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("subu.co %1,%r4,%r5\n\tsubu.ci %0,%r2,%r3" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "rJ" ((USItype) (ah)), \
- "rJ" ((USItype) (bh)), \
- "rJ" ((USItype) (al)), \
- "rJ" ((USItype) (bl)))
-#define count_leading_zeros(count, x) \
- do { \
- USItype __cbtmp; \
- __asm__ ("ff1 %0,%1" \
- : "=r" (__cbtmp) \
- : "r" ((USItype) (x))); \
- (count) = __cbtmp ^ 31; \
- } while (0)
-#define COUNT_LEADING_ZEROS_0 63 /* sic */
-#if defined (__mc88110__)
-#define umul_ppmm(wh, wl, u, v) \
- do { \
- union {UDItype __ll; \
- struct {USItype __h, __l;} __i; \
- } __xx; \
- __asm__ ("mulu.d %0,%1,%2" \
- : "=r" (__xx.__ll) \
- : "r" ((USItype) (u)), \
- "r" ((USItype) (v))); \
- (wh) = __xx.__i.__h; \
- (wl) = __xx.__i.__l; \
- } while (0)
-#define udiv_qrnnd(q, r, n1, n0, d) \
- ({union {UDItype __ll; \
- struct {USItype __h, __l;} __i; \
- } __xx; \
- USItype __q; \
- __xx.__i.__h = (n1); __xx.__i.__l = (n0); \
- __asm__ ("divu.d %0,%1,%2" \
- : "=r" (__q) \
- : "r" (__xx.__ll), \
- "r" ((USItype) (d))); \
- (r) = (n0) - __q * (d); (q) = __q; })
-#define UMUL_TIME 5
-#define UDIV_TIME 25
-#else
-#define UMUL_TIME 17
-#define UDIV_TIME 150
-#endif /* __mc88110__ */
-#endif /* __m88000__ */
-
-#if defined (__mn10300__)
-# if defined (__AM33__)
-# define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clz (X))
-# define umul_ppmm(w1, w0, u, v) \
- asm("mulu %3,%2,%1,%0" : "=r"(w0), "=r"(w1) : "r"(u), "r"(v))
-# define smul_ppmm(w1, w0, u, v) \
- asm("mul %3,%2,%1,%0" : "=r"(w0), "=r"(w1) : "r"(u), "r"(v))
-# else
-# define umul_ppmm(w1, w0, u, v) \
- asm("nop; nop; mulu %3,%0" : "=d"(w0), "=z"(w1) : "%0"(u), "d"(v))
-# define smul_ppmm(w1, w0, u, v) \
- asm("nop; nop; mul %3,%0" : "=d"(w0), "=z"(w1) : "%0"(u), "d"(v))
-# endif
-# define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- do { \
- DWunion __s, __a, __b; \
- __a.s.low = (al); __a.s.high = (ah); \
- __b.s.low = (bl); __b.s.high = (bh); \
- __s.ll = __a.ll + __b.ll; \
- (sl) = __s.s.low; (sh) = __s.s.high; \
- } while (0)
-# define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- do { \
- DWunion __s, __a, __b; \
- __a.s.low = (al); __a.s.high = (ah); \
- __b.s.low = (bl); __b.s.high = (bh); \
- __s.ll = __a.ll - __b.ll; \
- (sl) = __s.s.low; (sh) = __s.s.high; \
- } while (0)
-# define udiv_qrnnd(q, r, nh, nl, d) \
- asm("divu %2,%0" : "=D"(q), "=z"(r) : "D"(d), "0"(nl), "1"(nh))
-# define sdiv_qrnnd(q, r, nh, nl, d) \
- asm("div %2,%0" : "=D"(q), "=z"(r) : "D"(d), "0"(nl), "1"(nh))
-# define UMUL_TIME 3
-# define UDIV_TIME 38
-#endif
-
-#if defined (__mips__) && W_TYPE_SIZE == 32
-#define umul_ppmm(w1, w0, u, v) \
- do { \
- UDItype __x = (UDItype) (USItype) (u) * (USItype) (v); \
- (w1) = (USItype) (__x >> 32); \
- (w0) = (USItype) (__x); \
- } while (0)
-#define UMUL_TIME 10
-#define UDIV_TIME 100
-
-#if (__mips == 32 || __mips == 64) && ! __mips16
-#define count_leading_zeros(COUNT,X) ((COUNT) = __builtin_clz (X))
-#define COUNT_LEADING_ZEROS_0 32
-#endif
-#endif /* __mips__ */
-
-#if defined (__ns32000__) && W_TYPE_SIZE == 32
-#define umul_ppmm(w1, w0, u, v) \
- ({union {UDItype __ll; \
- struct {USItype __l, __h;} __i; \
- } __xx; \
- __asm__ ("meid %2,%0" \
- : "=g" (__xx.__ll) \
- : "%0" ((USItype) (u)), \
- "g" ((USItype) (v))); \
- (w1) = __xx.__i.__h; (w0) = __xx.__i.__l;})
-#define __umulsidi3(u, v) \
- ({UDItype __w; \
- __asm__ ("meid %2,%0" \
- : "=g" (__w) \
- : "%0" ((USItype) (u)), \
- "g" ((USItype) (v))); \
- __w; })
-#define udiv_qrnnd(q, r, n1, n0, d) \
- ({union {UDItype __ll; \
- struct {USItype __l, __h;} __i; \
- } __xx; \
- __xx.__i.__h = (n1); __xx.__i.__l = (n0); \
- __asm__ ("deid %2,%0" \
- : "=g" (__xx.__ll) \
- : "0" (__xx.__ll), \
- "g" ((USItype) (d))); \
- (r) = __xx.__i.__l; (q) = __xx.__i.__h; })
-#define count_trailing_zeros(count,x) \
- do { \
- __asm__ ("ffsd %2,%0" \
- : "=r" ((USItype) (count)) \
- : "0" ((USItype) 0), \
- "r" ((USItype) (x))); \
- } while (0)
-#endif /* __ns32000__ */
-
-/* FIXME: We should test _IBMR2 here when we add assembly support for the
- system vendor compilers.
- FIXME: What's needed for gcc PowerPC VxWorks? __vxworks__ is not good
- enough, since that hits ARM and m68k too. */
-#if (defined (_ARCH_PPC) /* AIX */ \
- || defined (_ARCH_PWR) /* AIX */ \
- || defined (_ARCH_COM) /* AIX */ \
- || defined (__powerpc__) /* gcc */ \
- || defined (__POWERPC__) /* BEOS */ \
- || defined (__ppc__) /* Darwin */ \
- || (defined (PPC) && ! defined (CPU_FAMILY)) /* gcc 2.7.x GNU&SysV */ \
- || (defined (PPC) && defined (CPU_FAMILY) /* VxWorks */ \
- && CPU_FAMILY == PPC) \
- ) && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- do { \
- if (__builtin_constant_p (bh) && (bh) == 0) \
- __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (ah), "%r" (al), "rI" (bl));\
- else if (__builtin_constant_p (bh) && (bh) == ~(USItype) 0) \
- __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (ah), "%r" (al), "rI" (bl));\
- else \
- __asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3" \
- : "=r" (sh), "=&r" (sl) \
- : "%r" (ah), "r" (bh), "%r" (al), "rI" (bl)); \
- } while (0)
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- do { \
- if (__builtin_constant_p (ah) && (ah) == 0) \
- __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfze|subfze} %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\
- else if (__builtin_constant_p (ah) && (ah) == ~(USItype) 0) \
- __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfme|subfme} %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\
- else if (__builtin_constant_p (bh) && (bh) == 0) \
- __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{ame|addme} %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\
- else if (__builtin_constant_p (bh) && (bh) == ~(USItype) 0) \
- __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{aze|addze} %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\
- else \
- __asm__ ("{sf%I4|subf%I4c} %1,%5,%4\n\t{sfe|subfe} %0,%3,%2" \
- : "=r" (sh), "=&r" (sl) \
- : "r" (ah), "r" (bh), "rI" (al), "r" (bl)); \
- } while (0)
-#define count_leading_zeros(count, x) \
- __asm__ ("{cntlz|cntlzw} %0,%1" : "=r" (count) : "r" (x))
-#define COUNT_LEADING_ZEROS_0 32
-#if defined (_ARCH_PPC) || defined (__powerpc__) || defined (__POWERPC__) \
- || defined (__ppc__) \
- || (defined (PPC) && ! defined (CPU_FAMILY)) /* gcc 2.7.x GNU&SysV */ \
- || (defined (PPC) && defined (CPU_FAMILY) /* VxWorks */ \
- && CPU_FAMILY == PPC)
-#define umul_ppmm(ph, pl, m0, m1) \
- do { \
- USItype __m0 = (m0), __m1 = (m1); \
- __asm__ ("mulhwu %0,%1,%2" : "=r" (ph) : "%r" (m0), "r" (m1)); \
- (pl) = __m0 * __m1; \
- } while (0)
-#define UMUL_TIME 15
-#define smul_ppmm(ph, pl, m0, m1) \
- do { \
- SItype __m0 = (m0), __m1 = (m1); \
- __asm__ ("mulhw %0,%1,%2" : "=r" (ph) : "%r" (m0), "r" (m1)); \
- (pl) = __m0 * __m1; \
- } while (0)
-#define SMUL_TIME 14
-#define UDIV_TIME 120
-#elif defined (_ARCH_PWR)
-#define UMUL_TIME 8
-#define smul_ppmm(xh, xl, m0, m1) \
- __asm__ ("mul %0,%2,%3" : "=r" (xh), "=q" (xl) : "r" (m0), "r" (m1))
-#define SMUL_TIME 4
-#define sdiv_qrnnd(q, r, nh, nl, d) \
- __asm__ ("div %0,%2,%4" : "=r" (q), "=q" (r) : "r" (nh), "1" (nl), "r" (d))
-#define UDIV_TIME 100
-#endif
-#endif /* 32-bit POWER architecture variants. */
-
-/* We should test _IBMR2 here when we add assembly support for the system
- vendor compilers. */
-#if (defined (_ARCH_PPC64) || defined (__powerpc64__)) && W_TYPE_SIZE == 64
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- do { \
- if (__builtin_constant_p (bh) && (bh) == 0) \
- __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (ah), "%r" (al), "rI" (bl));\
- else if (__builtin_constant_p (bh) && (bh) == ~(UDItype) 0) \
- __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (ah), "%r" (al), "rI" (bl));\
- else \
- __asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3" \
- : "=r" (sh), "=&r" (sl) \
- : "%r" (ah), "r" (bh), "%r" (al), "rI" (bl)); \
- } while (0)
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- do { \
- if (__builtin_constant_p (ah) && (ah) == 0) \
- __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfze|subfze} %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\
- else if (__builtin_constant_p (ah) && (ah) == ~(UDItype) 0) \
- __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfme|subfme} %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (bh), "rI" (al), "r" (bl));\
- else if (__builtin_constant_p (bh) && (bh) == 0) \
- __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{ame|addme} %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\
- else if (__builtin_constant_p (bh) && (bh) == ~(UDItype) 0) \
- __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{aze|addze} %0,%2" \
- : "=r" (sh), "=&r" (sl) : "r" (ah), "rI" (al), "r" (bl));\
- else \
- __asm__ ("{sf%I4|subf%I4c} %1,%5,%4\n\t{sfe|subfe} %0,%3,%2" \
- : "=r" (sh), "=&r" (sl) \
- : "r" (ah), "r" (bh), "rI" (al), "r" (bl)); \
- } while (0)
-#define count_leading_zeros(count, x) \
- __asm__ ("cntlzd %0,%1" : "=r" (count) : "r" (x))
-#define COUNT_LEADING_ZEROS_0 64
-#define umul_ppmm(ph, pl, m0, m1) \
- do { \
- UDItype __m0 = (m0), __m1 = (m1); \
- __asm__ ("mulhdu %0,%1,%2" : "=r" (ph) : "%r" (m0), "r" (m1)); \
- (pl) = __m0 * __m1; \
- } while (0)
-#define UMUL_TIME 15
-#define smul_ppmm(ph, pl, m0, m1) \
- do { \
- DItype __m0 = (m0), __m1 = (m1); \
- __asm__ ("mulhd %0,%1,%2" : "=r" (ph) : "%r" (m0), "r" (m1)); \
- (pl) = __m0 * __m1; \
- } while (0)
-#define SMUL_TIME 14 /* ??? */
-#define UDIV_TIME 120 /* ??? */
-#endif /* 64-bit PowerPC. */
-
-#if defined (__ibm032__) /* RT/ROMP */ && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("a %1,%5\n\tae %0,%3" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "%0" ((USItype) (ah)), \
- "r" ((USItype) (bh)), \
- "%1" ((USItype) (al)), \
- "r" ((USItype) (bl)))
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("s %1,%5\n\tse %0,%3" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "0" ((USItype) (ah)), \
- "r" ((USItype) (bh)), \
- "1" ((USItype) (al)), \
- "r" ((USItype) (bl)))
-#define umul_ppmm(ph, pl, m0, m1) \
- do { \
- USItype __m0 = (m0), __m1 = (m1); \
- __asm__ ( \
- "s r2,r2\n" \
-" mts r10,%2\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" m r2,%3\n" \
-" cas %0,r2,r0\n" \
-" mfs r10,%1" \
- : "=r" ((USItype) (ph)), \
- "=r" ((USItype) (pl)) \
- : "%r" (__m0), \
- "r" (__m1) \
- : "r2"); \
- (ph) += ((((SItype) __m0 >> 31) & __m1) \
- + (((SItype) __m1 >> 31) & __m0)); \
- } while (0)
-#define UMUL_TIME 20
-#define UDIV_TIME 200
-#define count_leading_zeros(count, x) \
- do { \
- if ((x) >= 0x10000) \
- __asm__ ("clz %0,%1" \
- : "=r" ((USItype) (count)) \
- : "r" ((USItype) (x) >> 16)); \
- else \
- { \
- __asm__ ("clz %0,%1" \
- : "=r" ((USItype) (count)) \
- : "r" ((USItype) (x))); \
- (count) += 16; \
- } \
- } while (0)
-#endif
-
-#if defined(__sh__) && !__SHMEDIA__ && W_TYPE_SIZE == 32
-#ifndef __sh1__
-#define umul_ppmm(w1, w0, u, v) \
- __asm__ ( \
- "dmulu.l %2,%3\n\tsts%M1 macl,%1\n\tsts%M0 mach,%0" \
- : "=r<" ((USItype)(w1)), \
- "=r<" ((USItype)(w0)) \
- : "r" ((USItype)(u)), \
- "r" ((USItype)(v)) \
- : "macl", "mach")
-#define UMUL_TIME 5
-#endif
-
-/* This is the same algorithm as __udiv_qrnnd_c. */
-#define UDIV_NEEDS_NORMALIZATION 1
-
-#define udiv_qrnnd(q, r, n1, n0, d) \
- do { \
- extern UWtype __udiv_qrnnd_16 (UWtype, UWtype) \
- __attribute__ ((visibility ("hidden"))); \
- /* r0: rn r1: qn */ /* r0: n1 r4: n0 r5: d r6: d1 */ /* r2: __m */ \
- __asm__ ( \
- "mov%M4 %4,r5\n" \
-" swap.w %3,r4\n" \
-" swap.w r5,r6\n" \
-" jsr @%5\n" \
-" shll16 r6\n" \
-" swap.w r4,r4\n" \
-" jsr @%5\n" \
-" swap.w r1,%0\n" \
-" or r1,%0" \
- : "=r" (q), "=&z" (r) \
- : "1" (n1), "r" (n0), "rm" (d), "r" (&__udiv_qrnnd_16) \
- : "r1", "r2", "r4", "r5", "r6", "pr", "t"); \
- } while (0)
-
-#define UDIV_TIME 80
-
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("clrt;subc %5,%1; subc %4,%0" \
- : "=r" (sh), "=r" (sl) \
- : "0" (ah), "1" (al), "r" (bh), "r" (bl) : "t")
-
-#endif /* __sh__ */
-
-#if defined (__SH5__) && __SHMEDIA__ && W_TYPE_SIZE == 32
-#define __umulsidi3(u,v) ((UDItype)(USItype)u*(USItype)v)
-#define count_leading_zeros(count, x) \
- do \
- { \
- UDItype x_ = (USItype)(x); \
- SItype c_; \
- \
- __asm__ ("nsb %1, %0" : "=r" (c_) : "r" (x_)); \
- (count) = c_ - 31; \
- } \
- while (0)
-#define COUNT_LEADING_ZEROS_0 32
-#endif
-
-#if defined (__sparc__) && !defined (__arch64__) && !defined (__sparcv9) \
- && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("addcc %r4,%5,%1\n\taddx %r2,%3,%0" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "%rJ" ((USItype) (ah)), \
- "rI" ((USItype) (bh)), \
- "%rJ" ((USItype) (al)), \
- "rI" ((USItype) (bl)) \
- __CLOBBER_CC)
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("subcc %r4,%5,%1\n\tsubx %r2,%3,%0" \
- : "=r" ((USItype) (sh)), \
- "=&r" ((USItype) (sl)) \
- : "rJ" ((USItype) (ah)), \
- "rI" ((USItype) (bh)), \
- "rJ" ((USItype) (al)), \
- "rI" ((USItype) (bl)) \
- __CLOBBER_CC)
-#if defined (__sparc_v8__)
-#define umul_ppmm(w1, w0, u, v) \
- __asm__ ("umul %2,%3,%1;rd %%y,%0" \
- : "=r" ((USItype) (w1)), \
- "=r" ((USItype) (w0)) \
- : "r" ((USItype) (u)), \
- "r" ((USItype) (v)))
-#define udiv_qrnnd(__q, __r, __n1, __n0, __d) \
- __asm__ ("mov %2,%%y;nop;nop;nop;udiv %3,%4,%0;umul %0,%4,%1;sub %3,%1,%1"\
- : "=&r" ((USItype) (__q)), \
- "=&r" ((USItype) (__r)) \
- : "r" ((USItype) (__n1)), \
- "r" ((USItype) (__n0)), \
- "r" ((USItype) (__d)))
-#else
-#if defined (__sparclite__)
-/* This has hardware multiply but not divide. It also has two additional
- instructions scan (ffs from high bit) and divscc. */
-#define umul_ppmm(w1, w0, u, v) \
- __asm__ ("umul %2,%3,%1;rd %%y,%0" \
- : "=r" ((USItype) (w1)), \
- "=r" ((USItype) (w0)) \
- : "r" ((USItype) (u)), \
- "r" ((USItype) (v)))
-#define udiv_qrnnd(q, r, n1, n0, d) \
- __asm__ ("! Inlined udiv_qrnnd\n" \
-" wr %%g0,%2,%%y ! Not a delayed write for sparclite\n" \
-" tst %%g0\n" \
-" divscc %3,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%%g1\n" \
-" divscc %%g1,%4,%0\n" \
-" rd %%y,%1\n" \
-" bl,a 1f\n" \
-" add %1,%4,%1\n" \
-"1: ! End of inline udiv_qrnnd" \
- : "=r" ((USItype) (q)), \
- "=r" ((USItype) (r)) \
- : "r" ((USItype) (n1)), \
- "r" ((USItype) (n0)), \
- "rI" ((USItype) (d)) \
- : "g1" __AND_CLOBBER_CC)
-#define UDIV_TIME 37
-#define count_leading_zeros(count, x) \
- do { \
- __asm__ ("scan %1,1,%0" \
- : "=r" ((USItype) (count)) \
- : "r" ((USItype) (x))); \
- } while (0)
-/* Early sparclites return 63 for an argument of 0, but they warn that future
- implementations might change this. Therefore, leave COUNT_LEADING_ZEROS_0
- undefined. */
-#else
-/* SPARC without integer multiplication and divide instructions.
- (i.e. at least Sun4/20,40,60,65,75,110,260,280,330,360,380,470,490) */
-#define umul_ppmm(w1, w0, u, v) \
- __asm__ ("! Inlined umul_ppmm\n" \
-" wr %%g0,%2,%%y ! SPARC has 0-3 delay insn after a wr\n"\
-" sra %3,31,%%o5 ! Don't move this insn\n" \
-" and %2,%%o5,%%o5 ! Don't move this insn\n" \
-" andcc %%g0,0,%%g1 ! Don't move this insn\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,%3,%%g1\n" \
-" mulscc %%g1,0,%%g1\n" \
-" add %%g1,%%o5,%0\n" \
-" rd %%y,%1" \
- : "=r" ((USItype) (w1)), \
- "=r" ((USItype) (w0)) \
- : "%rI" ((USItype) (u)), \
- "r" ((USItype) (v)) \
- : "g1", "o5" __AND_CLOBBER_CC)
-#define UMUL_TIME 39 /* 39 instructions */
-/* It's quite necessary to add this much assembler for the sparc.
- The default udiv_qrnnd (in C) is more than 10 times slower! */
-#define udiv_qrnnd(__q, __r, __n1, __n0, __d) \
- __asm__ ("! Inlined udiv_qrnnd\n" \
-" mov 32,%%g1\n" \
-" subcc %1,%2,%%g0\n" \
-"1: bcs 5f\n" \
-" addxcc %0,%0,%0 ! shift n1n0 and a q-bit in lsb\n" \
-" sub %1,%2,%1 ! this kills msb of n\n" \
-" addx %1,%1,%1 ! so this can't give carry\n" \
-" subcc %%g1,1,%%g1\n" \
-"2: bne 1b\n" \
-" subcc %1,%2,%%g0\n" \
-" bcs 3f\n" \
-" addxcc %0,%0,%0 ! shift n1n0 and a q-bit in lsb\n" \
-" b 3f\n" \
-" sub %1,%2,%1 ! this kills msb of n\n" \
-"4: sub %1,%2,%1\n" \
-"5: addxcc %1,%1,%1\n" \
-" bcc 2b\n" \
-" subcc %%g1,1,%%g1\n" \
-"! Got carry from n. Subtract next step to cancel this carry.\n" \
-" bne 4b\n" \
-" addcc %0,%0,%0 ! shift n1n0 and a 0-bit in lsb\n" \
-" sub %1,%2,%1\n" \
-"3: xnor %0,0,%0\n" \
-" ! End of inline udiv_qrnnd" \
- : "=&r" ((USItype) (__q)), \
- "=&r" ((USItype) (__r)) \
- : "r" ((USItype) (__d)), \
- "1" ((USItype) (__n1)), \
- "0" ((USItype) (__n0)) : "g1" __AND_CLOBBER_CC)
-#define UDIV_TIME (3+7*32) /* 7 instructions/iteration. 32 iterations. */
-#endif /* __sparclite__ */
-#endif /* __sparc_v8__ */
-#endif /* sparc32 */
-
-#if ((defined (__sparc__) && defined (__arch64__)) || defined (__sparcv9)) \
- && W_TYPE_SIZE == 64
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("addcc %r4,%5,%1\n\t" \
- "add %r2,%3,%0\n\t" \
- "bcs,a,pn %%xcc, 1f\n\t" \
- "add %0, 1, %0\n" \
- "1:" \
- : "=r" ((UDItype)(sh)), \
- "=&r" ((UDItype)(sl)) \
- : "%rJ" ((UDItype)(ah)), \
- "rI" ((UDItype)(bh)), \
- "%rJ" ((UDItype)(al)), \
- "rI" ((UDItype)(bl)) \
- __CLOBBER_CC)
-
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("subcc %r4,%5,%1\n\t" \
- "sub %r2,%3,%0\n\t" \
- "bcs,a,pn %%xcc, 1f\n\t" \
- "sub %0, 1, %0\n\t" \
- "1:" \
- : "=r" ((UDItype)(sh)), \
- "=&r" ((UDItype)(sl)) \
- : "rJ" ((UDItype)(ah)), \
- "rI" ((UDItype)(bh)), \
- "rJ" ((UDItype)(al)), \
- "rI" ((UDItype)(bl)) \
- __CLOBBER_CC)
-
-#define umul_ppmm(wh, wl, u, v) \
- do { \
- UDItype tmp1, tmp2, tmp3, tmp4; \
- __asm__ __volatile__ ( \
- "srl %7,0,%3\n\t" \
- "mulx %3,%6,%1\n\t" \
- "srlx %6,32,%2\n\t" \
- "mulx %2,%3,%4\n\t" \
- "sllx %4,32,%5\n\t" \
- "srl %6,0,%3\n\t" \
- "sub %1,%5,%5\n\t" \
- "srlx %5,32,%5\n\t" \
- "addcc %4,%5,%4\n\t" \
- "srlx %7,32,%5\n\t" \
- "mulx %3,%5,%3\n\t" \
- "mulx %2,%5,%5\n\t" \
- "sethi %%hi(0x80000000),%2\n\t" \
- "addcc %4,%3,%4\n\t" \
- "srlx %4,32,%4\n\t" \
- "add %2,%2,%2\n\t" \
- "movcc %%xcc,%%g0,%2\n\t" \
- "addcc %5,%4,%5\n\t" \
- "sllx %3,32,%3\n\t" \
- "add %1,%3,%1\n\t" \
- "add %5,%2,%0" \
- : "=r" ((UDItype)(wh)), \
- "=&r" ((UDItype)(wl)), \
- "=&r" (tmp1), "=&r" (tmp2), "=&r" (tmp3), "=&r" (tmp4) \
- : "r" ((UDItype)(u)), \
- "r" ((UDItype)(v)) \
- __CLOBBER_CC); \
- } while (0)
-#define UMUL_TIME 96
-#define UDIV_TIME 230
-#endif /* sparc64 */
-
-#if defined (__vax__) && W_TYPE_SIZE == 32
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("addl2 %5,%1\n\tadwc %3,%0" \
- : "=g" ((USItype) (sh)), \
- "=&g" ((USItype) (sl)) \
- : "%0" ((USItype) (ah)), \
- "g" ((USItype) (bh)), \
- "%1" ((USItype) (al)), \
- "g" ((USItype) (bl)))
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("subl2 %5,%1\n\tsbwc %3,%0" \
- : "=g" ((USItype) (sh)), \
- "=&g" ((USItype) (sl)) \
- : "0" ((USItype) (ah)), \
- "g" ((USItype) (bh)), \
- "1" ((USItype) (al)), \
- "g" ((USItype) (bl)))
-#define umul_ppmm(xh, xl, m0, m1) \
- do { \
- union { \
- UDItype __ll; \
- struct {USItype __l, __h;} __i; \
- } __xx; \
- USItype __m0 = (m0), __m1 = (m1); \
- __asm__ ("emul %1,%2,$0,%0" \
- : "=r" (__xx.__ll) \
- : "g" (__m0), \
- "g" (__m1)); \
- (xh) = __xx.__i.__h; \
- (xl) = __xx.__i.__l; \
- (xh) += ((((SItype) __m0 >> 31) & __m1) \
- + (((SItype) __m1 >> 31) & __m0)); \
- } while (0)
-#define sdiv_qrnnd(q, r, n1, n0, d) \
- do { \
- union {DItype __ll; \
- struct {SItype __l, __h;} __i; \
- } __xx; \
- __xx.__i.__h = n1; __xx.__i.__l = n0; \
- __asm__ ("ediv %3,%2,%0,%1" \
- : "=g" (q), "=g" (r) \
- : "g" (__xx.__ll), "g" (d)); \
- } while (0)
-#endif /* __vax__ */
-
-#ifdef _TMS320C6X
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- do \
- { \
- UDItype __ll; \
- __asm__ ("addu .l1 %1, %2, %0" \
- : "=a" (__ll) : "a" (al), "a" (bl)); \
- (sl) = (USItype)__ll; \
- (sh) = ((USItype)(__ll >> 32)) + (ah) + (bh); \
- } \
- while (0)
-
-#ifdef _TMS320C6400_PLUS
-#define __umulsidi3(u,v) ((UDItype)(USItype)u*(USItype)v)
-#define umul_ppmm(w1, w0, u, v) \
- do { \
- UDItype __x = (UDItype) (USItype) (u) * (USItype) (v); \
- (w1) = (USItype) (__x >> 32); \
- (w0) = (USItype) (__x); \
- } while (0)
-#endif /* _TMS320C6400_PLUS */
-
-#define count_leading_zeros(count, x) ((count) = __builtin_clz (x))
-#ifdef _TMS320C6400
-#define count_trailing_zeros(count, x) ((count) = __builtin_ctz (x))
-#endif
-#define UMUL_TIME 4
-#define UDIV_TIME 40
-#endif /* _TMS320C6X */
-
-#if defined (__xtensa__) && W_TYPE_SIZE == 32
-/* This code is not Xtensa-configuration-specific, so rely on the compiler
- to expand builtin functions depending on what configuration features
- are available. This avoids library calls when the operation can be
- performed in-line. */
-#define umul_ppmm(w1, w0, u, v) \
- do { \
- DWunion __w; \
- __w.ll = __builtin_umulsidi3 (u, v); \
- w1 = __w.s.high; \
- w0 = __w.s.low; \
- } while (0)
-#define __umulsidi3(u, v) __builtin_umulsidi3 (u, v)
-#define count_leading_zeros(COUNT, X) ((COUNT) = __builtin_clz (X))
-#define count_trailing_zeros(COUNT, X) ((COUNT) = __builtin_ctz (X))
-#endif /* __xtensa__ */
-
-#if defined xstormy16
-extern UHItype __stormy16_count_leading_zeros (UHItype);
-#define count_leading_zeros(count, x) \
- do \
- { \
- UHItype size; \
- \
- /* We assume that W_TYPE_SIZE is a multiple of 16... */ \
- for ((count) = 0, size = W_TYPE_SIZE; size; size -= 16) \
- { \
- UHItype c; \
- \
- c = __clzhi2 ((x) >> (size - 16)); \
- (count) += c; \
- if (c != 16) \
- break; \
- } \
- } \
- while (0)
-#define COUNT_LEADING_ZEROS_0 W_TYPE_SIZE
-#endif
-
-#if defined (__z8000__) && W_TYPE_SIZE == 16
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- __asm__ ("add %H1,%H5\n\tadc %H0,%H3" \
- : "=r" ((unsigned int)(sh)), \
- "=&r" ((unsigned int)(sl)) \
- : "%0" ((unsigned int)(ah)), \
- "r" ((unsigned int)(bh)), \
- "%1" ((unsigned int)(al)), \
- "rQR" ((unsigned int)(bl)))
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- __asm__ ("sub %H1,%H5\n\tsbc %H0,%H3" \
- : "=r" ((unsigned int)(sh)), \
- "=&r" ((unsigned int)(sl)) \
- : "0" ((unsigned int)(ah)), \
- "r" ((unsigned int)(bh)), \
- "1" ((unsigned int)(al)), \
- "rQR" ((unsigned int)(bl)))
-#define umul_ppmm(xh, xl, m0, m1) \
- do { \
- union {long int __ll; \
- struct {unsigned int __h, __l;} __i; \
- } __xx; \
- unsigned int __m0 = (m0), __m1 = (m1); \
- __asm__ ("mult %S0,%H3" \
- : "=r" (__xx.__i.__h), \
- "=r" (__xx.__i.__l) \
- : "%1" (__m0), \
- "rQR" (__m1)); \
- (xh) = __xx.__i.__h; (xl) = __xx.__i.__l; \
- (xh) += ((((signed int) __m0 >> 15) & __m1) \
- + (((signed int) __m1 >> 15) & __m0)); \
- } while (0)
-#endif /* __z8000__ */
-
-#endif /* __GNUC__ */
-
-/* If this machine has no inline assembler, use C macros. */
-
-#if !defined (add_ssaaaa)
-#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
- do { \
- UWtype __x; \
- __x = (al) + (bl); \
- (sh) = (ah) + (bh) + (__x < (al)); \
- (sl) = __x; \
- } while (0)
-#endif
-
-#if !defined (sub_ddmmss)
-#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
- do { \
- UWtype __x; \
- __x = (al) - (bl); \
- (sh) = (ah) - (bh) - (__x > (al)); \
- (sl) = __x; \
- } while (0)
-#endif
-
-/* If we lack umul_ppmm but have smul_ppmm, define umul_ppmm in terms of
- smul_ppmm. */
-#if !defined (umul_ppmm) && defined (smul_ppmm)
-#define umul_ppmm(w1, w0, u, v) \
- do { \
- UWtype __w1; \
- UWtype __xm0 = (u), __xm1 = (v); \
- smul_ppmm (__w1, w0, __xm0, __xm1); \
- (w1) = __w1 + (-(__xm0 >> (W_TYPE_SIZE - 1)) & __xm1) \
- + (-(__xm1 >> (W_TYPE_SIZE - 1)) & __xm0); \
- } while (0)
-#endif
-
-/* If we still don't have umul_ppmm, define it using plain C. */
-#if !defined (umul_ppmm)
-#define umul_ppmm(w1, w0, u, v) \
- do { \
- UWtype __x0, __x1, __x2, __x3; \
- UHWtype __ul, __vl, __uh, __vh; \
- \
- __ul = __ll_lowpart (u); \
- __uh = __ll_highpart (u); \
- __vl = __ll_lowpart (v); \
- __vh = __ll_highpart (v); \
- \
- __x0 = (UWtype) __ul * __vl; \
- __x1 = (UWtype) __ul * __vh; \
- __x2 = (UWtype) __uh * __vl; \
- __x3 = (UWtype) __uh * __vh; \
- \
- __x1 += __ll_highpart (__x0);/* this can't give carry */ \
- __x1 += __x2; /* but this indeed can */ \
- if (__x1 < __x2) /* did we get it? */ \
- __x3 += __ll_B; /* yes, add it in the proper pos. */ \
- \
- (w1) = __x3 + __ll_highpart (__x1); \
- (w0) = __ll_lowpart (__x1) * __ll_B + __ll_lowpart (__x0); \
- } while (0)
-#endif
-
-#if !defined (__umulsidi3)
-#define __umulsidi3(u, v) \
- ({DWunion __w; \
- umul_ppmm (__w.s.high, __w.s.low, u, v); \
- __w.ll; })
-#endif
-
-/* Define this unconditionally, so it can be used for debugging. */
-#define __udiv_qrnnd_c(q, r, n1, n0, d) \
- do { \
- UWtype __d1, __d0, __q1, __q0; \
- UWtype __r1, __r0, __m; \
- __d1 = __ll_highpart (d); \
- __d0 = __ll_lowpart (d); \
- \
- __r1 = (n1) % __d1; \
- __q1 = (n1) / __d1; \
- __m = (UWtype) __q1 * __d0; \
- __r1 = __r1 * __ll_B | __ll_highpart (n0); \
- if (__r1 < __m) \
- { \
- __q1--, __r1 += (d); \
- if (__r1 >= (d)) /* i.e. we didn't get carry when adding to __r1 */\
- if (__r1 < __m) \
- __q1--, __r1 += (d); \
- } \
- __r1 -= __m; \
- \
- __r0 = __r1 % __d1; \
- __q0 = __r1 / __d1; \
- __m = (UWtype) __q0 * __d0; \
- __r0 = __r0 * __ll_B | __ll_lowpart (n0); \
- if (__r0 < __m) \
- { \
- __q0--, __r0 += (d); \
- if (__r0 >= (d)) \
- if (__r0 < __m) \
- __q0--, __r0 += (d); \
- } \
- __r0 -= __m; \
- \
- (q) = (UWtype) __q1 * __ll_B | __q0; \
- (r) = __r0; \
- } while (0)
-
-/* If the processor has no udiv_qrnnd but sdiv_qrnnd, go through
- __udiv_w_sdiv (defined in libgcc or elsewhere). */
-#if !defined (udiv_qrnnd) && defined (sdiv_qrnnd)
-#define udiv_qrnnd(q, r, nh, nl, d) \
- do { \
- USItype __r; \
- (q) = __udiv_w_sdiv (&__r, nh, nl, d); \
- (r) = __r; \
- } while (0)
-#endif
-
-/* If udiv_qrnnd was not defined for this processor, use __udiv_qrnnd_c. */
-#if !defined (udiv_qrnnd)
-#define UDIV_NEEDS_NORMALIZATION 1
-#define udiv_qrnnd __udiv_qrnnd_c
-#endif
-
-#if !defined (count_leading_zeros)
-#define count_leading_zeros(count, x) \
- do { \
- UWtype __xr = (x); \
- UWtype __a; \
- \
- if (W_TYPE_SIZE <= 32) \
- { \
- __a = __xr < ((UWtype)1<<2*__BITS4) \
- ? (__xr < ((UWtype)1<<__BITS4) ? 0 : __BITS4) \
- : (__xr < ((UWtype)1<<3*__BITS4) ? 2*__BITS4 : 3*__BITS4); \
- } \
- else \
- { \
- for (__a = W_TYPE_SIZE - 8; __a > 0; __a -= 8) \
- if (((__xr >> __a) & 0xff) != 0) \
- break; \
- } \
- \
- (count) = W_TYPE_SIZE - (__clz_tab[__xr >> __a] + __a); \
- } while (0)
-#define COUNT_LEADING_ZEROS_0 W_TYPE_SIZE
-#endif
-
-#if !defined (count_trailing_zeros)
-/* Define count_trailing_zeros using count_leading_zeros. The latter might be
- defined in asm, but if it is not, the C version above is good enough. */
-#define count_trailing_zeros(count, x) \
- do { \
- UWtype __ctz_x = (x); \
- UWtype __ctz_c; \
- count_leading_zeros (__ctz_c, __ctz_x & -__ctz_x); \
- (count) = W_TYPE_SIZE - 1 - __ctz_c; \
- } while (0)
-#endif
-
-#ifndef UDIV_NEEDS_NORMALIZATION
-#define UDIV_NEEDS_NORMALIZATION 0
-#endif
diff --git a/gcc/po/ChangeLog b/gcc/po/ChangeLog
index e8c56e0356c..5cc12f4372c 100644
--- a/gcc/po/ChangeLog
+++ b/gcc/po/ChangeLog
@@ -1,5 +1,10 @@
2011-11-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+ * EXCLUDES (config/vxlib.c, gbl-ctors.h, libgcc2.c, libgcc2.h)
+ (longlong.h): Remove.
+
+2011-11-02 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
+
* EXCLUDES (crtstuff.c): Remove.
2011-10-30 Joseph Myers <joseph@codesourcery.com>
diff --git a/gcc/po/EXCLUDES b/gcc/po/EXCLUDES
index 31e995b56d1..c969910fa56 100644
--- a/gcc/po/EXCLUDES
+++ b/gcc/po/EXCLUDES
@@ -22,8 +22,6 @@
# .def are examined to begin with.
# These files are part of libgcc, or target headers provided by gcc.
-config/vxlib.c
-gbl-ctors.h
gcov-io.h
gcov-iov.c
gthr-aix.h
@@ -36,11 +34,8 @@ gthr-solaris.h
gthr-vxworks.h
gthr-win32.h
gthr.h
-libgcc2.c
-libgcc2.h
limitx.h
limity.h
-longlong.h
# These programs are meant to be executed only by GCC maintainers or
# installers. Such files do not need to be translated, as these
OpenPOWER on IntegriCloud