aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/bfin/bfin.h
diff options
context:
space:
mode:
authorBernd Schmidt <bernd.schmidt@analog.com>2009-09-03 15:37:28 +0000
committerBernd Schmidt <bernds@gcc.gnu.org>2009-09-03 15:37:28 +0000
commit9840d30abff62d41bda189f256b1ed3e41e6edc1 (patch)
tree2a3d9e1c43f8bd260ab33779e73b86699cbfd3cc /gcc/config/bfin/bfin.h
parentbe2c0fc9418411a898756e517fb6cfbffb3002eb (diff)
downloadgcc-9840d30abff62d41bda189f256b1ed3e41e6edc1.zip
gcc-9840d30abff62d41bda189f256b1ed3e41e6edc1.tar.gz
gcc-9840d30abff62d41bda189f256b1ed3e41e6edc1.tar.bz2
linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1.
gcc/ * config/bfin/linux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1. * config/bfin/uclinux.h (TARGET_SUPPORTS_SYNC_CALLS): Define to 1. * config/bfin/bfin.h (TARGET_SUPPORTS_SYNC_CALLS): Provide default of 0. * config/bfin/sync.md: New file. * config/bfin/bfin.md: Include it. (UNSPEC_ATOMIC): New. (UNSPEC_ONES): Provide a unique number. From Jie Zhang <jie.zhang@analog.com>: * config/bfin/bfin.c (ret_regs): New. (must_save_fp_p): Don't return true because of frame_pointer_needed. (must_save_rets_p): New. (n_regs_saved_by_prologue): Use must_save_rets_p instead of current_function_is_leaf. (do_link): Likewise. (do_unlink): Likewise. (expand_interrupt_handler_prologue): Use ret_regs array. (expand_interrupt_handler_epilogue): Use ret_regs array and pass return register to gen_return_internal. (bfin_expand_epilogue): Pass return register to gen_return_internal. (bfin_expand_call): Explicitly clobber RETS. * config/bfin/bfin.h (FUNCTION_RETURN_REGISTERS): Define. * config/bfin/bfin.md (call_symbol_fdpic, call_value_symbol_fdpic, call_insn_fdpic, call_value_insn_fdpic, call_symbol, call_value_symbol, call_insn, call_value_insn): Explicitly clobber RETS. (return_internal): Take a reg rtx rather than the register number. gcc/testsuite/ * lib/target-supports.exp (check_effective_target_sync_int_long): Supported on Blackfin Linux targets. From-SVN: r151381
Diffstat (limited to 'gcc/config/bfin/bfin.h')
-rw-r--r--gcc/config/bfin/bfin.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/gcc/config/bfin/bfin.h b/gcc/config/bfin/bfin.h
index a9ff6fa..53a7957 100644
--- a/gcc/config/bfin/bfin.h
+++ b/gcc/config/bfin/bfin.h
@@ -794,6 +794,7 @@ enum reg_class
typedef enum {
SUBROUTINE, INTERRUPT_HANDLER, EXCPT_HANDLER, NMI_HANDLER
} e_funkind;
+#define FUNCTION_RETURN_REGISTERS { REG_RETS, REG_RETI, REG_RETX, REG_RETN }
#define FUNCTION_ARG_REGISTERS { REG_R0, REG_R1, REG_R2, -1 }
@@ -1258,4 +1259,8 @@ extern int splitting_for_sched, splitting_loops;
#define PRINT_OPERAND_PUNCT_VALID_P(CHAR) ((CHAR) == '!')
+#ifndef TARGET_SUPPORTS_SYNC_CALLS
+#define TARGET_SUPPORTS_SYNC_CALLS 0
+#endif
+
#endif /* _BFIN_CONFIG */