gcc/libgcc/config/rs6000/t-savresfgpr
Alan Modra b427dd7ae3 rs6000 (SAVE_INLINE_VRS, [...]): Define.
gcc/
	* config/rs6000/rs6000 (SAVE_INLINE_VRS, REST_INLINE_VRS,
	V_SAVE_INLINE, SAVRES_LR, SAVRES_SAVE, SAVRES_REG,
	SAVRES_GPR, SAVRES_FPR, SAVRES_VR): Define.
	(no_global_regs_above): Delete.
	(no_global_regs): New function.
	(rs6000_savres_strategy): Handle vector regs.  Use proper lr_save_p
	value for load multiple test.
	(savres_routine_syms): Increase size.
	(rs6000_savres_routine_name, rs6000_savres_routine_sym,
	ptr_regno_for_savres, rs6000_emit_savres_rtx): Pass in int selector
	rather than a number of boolean flags.  Update all callers.
	(rs6000_savres_routine_name): Generate vector save/restore names.
	(rs6000_savres_routine_sym): Handle vector regs.  Delete forward decl.
	(ptr_regno_for_savres, rs6000_emit_savres_rtx): Likewise.
	(rs6000_emit_prologue): Delete saving_FPRs_inline, saving_GPRs_inline
	and using_store_multiple.  Expand uses.  Don't always use r11 as
	frame reg when needed for out-of-line saves.  Set up initial offset
	for out-of-line vector saves when buying stack frame.  Handle pointer
	reg setup for out-of-line fp save.  Emit call to out-of-line vector
	save function.  Choose r11 or r12 for vrsave reg when available for
	better scheduling.
	(rs6000_output_function_prologue): Don't emit .extern for ELF.
	(rs6000_emit_epilogue): Choose a better frame reg when restoring
	from back-chain to suit out-of-line vector restore functions.  Emit
	call to out-of-line vector restore function.  Adjust register used
	for cr restore.  Tweak pointer register setup for gpr restore.
	* config/rs6000/rs6000.h (FIRST_SAVED_GP_REGNO): Take into account
	FIXED_R13.
	* config/rs6000/sysv4.h (FP_SAVE_INLINE, GP_SAVE_INLINE): Simplify.
	(V_SAVE_INLINE): Define.
	* config/rs6000/altivec.md (save_vregs_*, restore_vregs_*): New insns.
libgcc/
	* config/rs6000/crtsavevr.S: New file.
	* config/rs6000/crtrestvr.S: New file.
	* config/rs6000/t-savresfgpr: Build the above.
	* config/rs6000/t-netbsd: Likewise.

From-SVN: r186800
2012-04-25 12:02:56 +09:30

24 lines
1.0 KiB
Plaintext

# These can't end up in shared libgcc
LIB2ADD_ST += \
$(srcdir)/config/rs6000/crtsavfpr.S \
$(srcdir)/config/rs6000/crtresfpr.S \
$(srcdir)/config/rs6000/crtsavgpr.S \
$(srcdir)/config/rs6000/crtresgpr.S \
$(srcdir)/config/rs6000/crtresxfpr.S \
$(srcdir)/config/rs6000/crtresxgpr.S \
$(srcdir)/config/rs6000/crtsavevr.S \
$(srcdir)/config/rs6000/crtrestvr.S \
$(srcdir)/config/rs6000/e500crtres32gpr.S \
$(srcdir)/config/rs6000/e500crtres64gpr.S \
$(srcdir)/config/rs6000/e500crtres64gprctr.S \
$(srcdir)/config/rs6000/e500crtrest32gpr.S \
$(srcdir)/config/rs6000/e500crtrest64gpr.S \
$(srcdir)/config/rs6000/e500crtresx32gpr.S \
$(srcdir)/config/rs6000/e500crtresx64gpr.S \
$(srcdir)/config/rs6000/e500crtsav32gpr.S \
$(srcdir)/config/rs6000/e500crtsav64gpr.S \
$(srcdir)/config/rs6000/e500crtsav64gprctr.S \
$(srcdir)/config/rs6000/e500crtsavg32gpr.S \
$(srcdir)/config/rs6000/e500crtsavg64gpr.S \
$(srcdir)/config/rs6000/e500crtsavg64gprctr.S