aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/rs6000/t-ppccomm
diff options
context:
space:
mode:
authorNathan Froyd <froydnj@codesourcery.com>2008-06-26 20:12:41 +0000
committerNathan Froyd <froydnj@gcc.gnu.org>2008-06-26 20:12:41 +0000
commitf78c3290cdcd5328d1924935806f8ef24d7f7788 (patch)
treea4b578b731cb2590f6903b103e988eaafd60303a /gcc/config/rs6000/t-ppccomm
parente24c4814fd36bb95521e729c648daee92c716a92 (diff)
downloadgcc-f78c3290cdcd5328d1924935806f8ef24d7f7788.zip
gcc-f78c3290cdcd5328d1924935806f8ef24d7f7788.tar.gz
gcc-f78c3290cdcd5328d1924935806f8ef24d7f7788.tar.bz2
rs6000.c (emit_allocate_stack): Add copy_r11 parameter.
* config/rs6000/rs6000.c (emit_allocate_stack): Add copy_r11 parameter. Copy stack_reg to r11 where appropriate. (no_global_regs_above): Add gpr parameter. (rs6000_stack_info): Only add padding for SPE save area if we are saving SPE GPRs and CR. (saveres_routine_syms): New variable. (FIRST_SAVRES_REGISTER, LAST_SAVRES_REGISTER, N_SAVRES_REGISTERS): Define. (rs6000_savres_routine_sym): New function. (rs6000_emit_stack_reset, rs6000_restore_saved_cr): New functions, split out of... (rs6000_emit_epilogue): ...here. Use rs6000_use_multiple_p and rs6000_savres_strategy. Restore GPRs out-of-line if appropriate. Tweak FPR out-of-line saving. (rs6000_make_savres_rtx): New function. (rs6000_use_multiple_p): New function. (rs6000_savres_strategy): New function. (rs6000_emit_prologue): Use rs6000_savres_strategy. Save GPRs out-of-line if appropriate. * config/rs6000/sysv4.h (FP_SAVE_INLINE): Save FPRs out-of-line if we are optimizing for size. (GP_SAVE_INLINE): Define. (SAVE_FP_SUFFIX, RESTORE_FP_SUFFIX): Only use _l on 64-bit targets. * config/rs6000/darwin.h (GP_SAVE_INLINE): Define. * config/rs6000/aix.h (GP_SAVE_INLINE): Define. * config/rs6000/rs6000.md (*save_gpregs_<mode>): New insn. (*save_fpregs_<mode>): Add use of r11. (*restore_gpregs_<mode>): New insn. (*return_and_restore_gpregs_<mode>): New insn. (*return_and_restore_fpregs_<mode>): Adjust to clobber LR and use r11. * config/rs6000/spe.md (*save_gpregs_spe): New insn. (*restore_gpregs_spe): New insn. (*return_and_restore_gpregs_spe): New insn. * config/rs6000/predicates.md (save_world_operation): Fix check. From-SVN: r137160
Diffstat (limited to 'gcc/config/rs6000/t-ppccomm')
-rw-r--r--gcc/config/rs6000/t-ppccomm132
1 files changed, 1 insertions, 131 deletions
diff --git a/gcc/config/rs6000/t-ppccomm b/gcc/config/rs6000/t-ppccomm
index 8fc3e71..36455712 100644
--- a/gcc/config/rs6000/t-ppccomm
+++ b/gcc/config/rs6000/t-ppccomm
@@ -3,23 +3,7 @@
LIB2FUNCS_EXTRA += tramp.S $(srcdir)/config/rs6000/darwin-ldouble.c
# These can't end up in shared libgcc
-LIB2FUNCS_STATIC_EXTRA = eabi.S \
- crtsavfpr.S crtresfpr.S \
- crtsavgpr.S crtresgpr.S \
- crtresxfpr.S crtresxgpr.S \
- e500crtres32gpr.S \
- e500crtres64gpr.S \
- e500crtres64gprctr.S \
- e500crtrest32gpr.S \
- e500crtrest64gpr.S \
- e500crtresx32gpr.S \
- e500crtresx64gpr.S \
- e500crtsav32gpr.S \
- e500crtsav64gpr.S \
- e500crtsav64gprctr.S \
- e500crtsavg32gpr.S \
- e500crtsavg64gpr.S \
- e500crtsavg64gprctr.S
+LIB2FUNCS_STATIC_EXTRA = eabi.S
eabi.S: $(srcdir)/config/rs6000/eabi.asm
cat $(srcdir)/config/rs6000/eabi.asm > eabi.S
@@ -52,63 +36,6 @@ ncrti.S: $(srcdir)/config/rs6000/sol-ci.asm
ncrtn.S: $(srcdir)/config/rs6000/sol-cn.asm
cat $(srcdir)/config/rs6000/sol-cn.asm >ncrtn.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
-
-e500crtres32gpr.S: $(srcdir)/config/rs6000/e500crtres32gpr.asm
- cat $(srcdir)/config/rs6000/e500crtres32gpr.asm >e500crtres32gpr.S
-
-e500crtres64gpr.S: $(srcdir)/config/rs6000/e500crtres64gpr.asm
- cat $(srcdir)/config/rs6000/e500crtres64gpr.asm >e500crtres64gpr.S
-
-e500crtres64gprctr.S: $(srcdir)/config/rs6000/e500crtres64gprctr.asm
- cat $(srcdir)/config/rs6000/e500crtres64gprctr.asm >e500crtres64gprctr.S
-
-e500crtrest32gpr.S: $(srcdir)/config/rs6000/e500crtrest32gpr.asm
- cat $(srcdir)/config/rs6000/e500crtrest32gpr.asm >e500crtrest32gpr.S
-
-e500crtrest64gpr.S: $(srcdir)/config/rs6000/e500crtrest64gpr.asm
- cat $(srcdir)/config/rs6000/e500crtrest64gpr.asm >e500crtrest64gpr.S
-
-e500crtresx32gpr.S: $(srcdir)/config/rs6000/e500crtresx32gpr.asm
- cat $(srcdir)/config/rs6000/e500crtresx32gpr.asm >e500crtresx32gpr.S
-
-e500crtresx64gpr.S: $(srcdir)/config/rs6000/e500crtresx64gpr.asm
- cat $(srcdir)/config/rs6000/e500crtresx64gpr.asm >e500crtresx64gpr.S
-
-e500crtsav32gpr.S: $(srcdir)/config/rs6000/e500crtsav32gpr.asm
- cat $(srcdir)/config/rs6000/e500crtsav32gpr.asm >e500crtsav32gpr.S
-
-e500crtsav64gpr.S: $(srcdir)/config/rs6000/e500crtsav64gpr.asm
- cat $(srcdir)/config/rs6000/e500crtsav64gpr.asm >e500crtsav64gpr.S
-
-e500crtsav64gprctr.S: $(srcdir)/config/rs6000/e500crtsav64gprctr.asm
- cat $(srcdir)/config/rs6000/e500crtsav64gprctr.asm >e500crtsav64gprctr.S
-
-e500crtsavg32gpr.S: $(srcdir)/config/rs6000/e500crtsavg32gpr.asm
- cat $(srcdir)/config/rs6000/e500crtsavg32gpr.asm >e500crtsavg32gpr.S
-
-e500crtsavg64gpr.S: $(srcdir)/config/rs6000/e500crtsavg64gpr.asm
- cat $(srcdir)/config/rs6000/e500crtsavg64gpr.asm >e500crtsavg64gpr.S
-
-e500crtsavg64gprctr.S: $(srcdir)/config/rs6000/e500crtsavg64gprctr.asm
- cat $(srcdir)/config/rs6000/e500crtsavg64gprctr.asm >e500crtsavg64gprctr.S
-
# Build multiple copies of ?crt{i,n}.o, one for each target switch.
$(T)ecrti$(objext): ecrti.S
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c ecrti.S -o $(T)ecrti$(objext)
@@ -122,63 +49,6 @@ $(T)ncrti$(objext): ncrti.S
$(T)ncrtn$(objext): ncrtn.S
$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c ncrtn.S -o $(T)ncrtn$(objext)
-$(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)
-
-$(T)e500crtres32gpr$(objext): e500crtres32gpr.S
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtres32gpr.S -o $(T)e500crtres32gpr$(objext)
-
-$(T)e500crtres64gpr$(objext): e500crtres64gpr.S
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtres64gpr.S -o $(T)e500crtres64gpr$(objext)
-
-$(T)e500crtres64gprctr$(objext): e500crtres64gprctr.S
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtres64gprctr.S -o $(T)e500crtres64gprctr$(objext)
-
-$(T)e500crtrest32gpr$(objext): e500crtrest32gpr.S
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtrest32gpr.S -o $(T)e500crtrest32gpr$(objext)
-
-$(T)e500crtrest64gpr$(objext): e500crtrest64gpr.S
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtrest64gpr.S -o $(T)e500crtrest64gpr$(objext)
-
-$(T)e500crtresx32gpr$(objext): e500crtresx32gpr.S
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtresx32gpr.S -o $(T)e500crtresx32gpr$(objext)
-
-$(T)e500crtresx64gpr$(objext): e500crtresx64gpr.S
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtresx64gpr.S -o $(T)e500crtresx64gpr$(objext)
-
-$(T)e500crtsav32gpr$(objext): e500crtsav32gpr.S
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsav32gpr.S -o $(T)e500crtsav32gpr$(objext)
-
-$(T)e500crtsav64gpr$(objext): e500crtsav64gpr.S
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsav64gpr.S -o $(T)e500crtsav64gpr$(objext)
-
-$(T)e500crtsav64gprctr$(objext): e500crtsav64gprctr.S
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsav64gprctr.S -o $(T)e500crtsav64gprctr$(objext)
-
-$(T)e500crtsavg32gpr$(objext): e500crtsavg32gpr.S
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsavg32gpr.S -o $(T)e500crtsavg32gpr$(objext)
-
-$(T)e500crtsavg64gpr$(objext): e500crtsavg64gpr.S
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsavg64gpr.S -o $(T)e500crtsavg64gpr$(objext)
-
-$(T)e500crtsavg64gprctr$(objext): e500crtsavg64gprctr.S
- $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(INCLUDES) $(MULTILIB_CFLAGS) -c e500crtsavg64gprctr.S -o $(T)e500crtsavg64gprctr$(objext)
-
# It is important that crtbegin.o, etc., aren't surprised by stuff in .sdata.
CRTSTUFF_T_CFLAGS = -msdata=none
# Make sure crt*.o are built with -fPIC even if configured with