* Declare arm_arch5 and arm_arch5e. Set arm_arch5 for if -mcpu=arm10tdmi,
-mcpu=arm1020t, -mcpu=xscale, -march=armv5, -march=armv5e, -march=armv5te.
Set arm_arch5e for -mcpu=xscale, -march=armv5e, -march=armv5te.
arm.md:
* Define the "clz" insn for arm_arch5.
* Define an "ffssi2" expander for arm_arch5 which uses "clz".
The GCC ChangeLog does not have a complete description to quote here,
so:
arm.c:
* arm_override_options(): Set arm_is_scale according to the the
-mcpu=xscale option. Set arm_constant_limit to 2 if arm_is_xscale.
* arm_adjust_cost(): If arm_is_xscale, account for stalls that can
occur due to shifted operands.
* arm_gen_load_multiple(): Account for the cost of ldm vs. ldr if
arm_is_xscale.
* arm_gen_store_multiple(): Likewise for stm vs. str.
arm.h:
* CONSTANT_ALIGNMENT(): Use a constant alignment factor of 2 if
arm_is_xscale.
* MOVE_RATIO: Set to 4 if arm_is_xscale.
arm.md:
* Add XScale scheduling parameters.
* Define a "shift" attribute (used by arm_adjust_cost()) and give it
to the appropriate operands on andsi_not_shiftsi_si, *shiftsi3,
*shiftsi3_compare0, *shiftsi3_compare0_scratch, *notsi_shiftsi,
*notsi_shiftsi_compare0, *not_shiftsi_compare0_scratch,
abssi2, *neg_abssi2, extendsidi2, *cmpsi_shiftsi, *cmpsi_shiftsi_swp,
*cmpsi_neg_shiftsi, *arith_shiftsi, *arith_shiftsi_compare0,
*arith_shiftsi_compare0_scratch, *sub_shiftsi, *sub_shiftsi_compare0,
*sub_shiftsi_compare0_scratch, *if_shift_move, *if_move_shift,
and *if_shift_shift.
treated like -march=armv4t, but which generate __ARM_ARCH_5__,
__ARM_ARCH_5T__, and __ARM_ARCH_5TE__ defines, respecitively.
* Add -mcpu=xscale, which is internally treated like -mcpu=strongarm,
but which generates __ARM_ARCH_5TE__ and __XSCALE__ defines.
These command-line options and definitions are consistent with gcc 3.x,
and allow NetBSD Makefiles to use them in a forward-compatible way, and
also give hand-tuned source code (e.g. assembly) a chance of tuning for
XScale.
reasons:
1) There is already a destructor that does this. The atexit() is superfluous.
2) If libstdc++ is loaded dynamically by dlopen() and then is removed by
dlclose(), the pointer is no longer valid and the program would core dump
at exit() time. (This caused xmms to core dump at exit when xmms-sid was
installed, for example.)
to build full-feature libbfd, do the following:
- add "--enable-targets=all --enable-64-bit-bfd" to
src/tools/toolchain/Makefile configure arg
- invoke nbmake-<platform> native, to regenerate files under src/gnu