extern const struct mcu_type_s avr_mcu_types[];
extern const struct base_arch_s avr_arch_types[];
-#define TARGET_CPU_CPP_BUILTINS() \
- do \
- { \
- builtin_define_std ("AVR"); \
- if (avr_current_arch->macro) \
- builtin_define (avr_current_arch->macro); \
- if (avr_extra_arch_macro) \
- builtin_define (avr_extra_arch_macro); \
- if (avr_current_arch->have_elpm) \
- builtin_define ("__AVR_HAVE_RAMPZ__"); \
- if (avr_current_arch->have_elpm) \
- builtin_define ("__AVR_HAVE_ELPM__"); \
- if (avr_current_arch->have_elpmx) \
- builtin_define ("__AVR_HAVE_ELPMX__"); \
- if (avr_current_arch->have_movw_lpmx) \
- { \
- builtin_define ("__AVR_HAVE_MOVW__"); \
- builtin_define ("__AVR_HAVE_LPMX__"); \
- } \
- if (avr_current_arch->asm_only) \
- builtin_define ("__AVR_ASM_ONLY__"); \
- if (avr_current_arch->have_mul) \
- { \
- builtin_define ("__AVR_ENHANCED__"); \
- builtin_define ("__AVR_HAVE_MUL__"); \
- } \
- if (avr_current_arch->have_jmp_call) \
- { \
- builtin_define ("__AVR_MEGA__"); \
- builtin_define ("__AVR_HAVE_JMP_CALL__"); \
- } \
- if (avr_current_arch->have_eijmp_eicall) \
- { \
- builtin_define ("__AVR_HAVE_EIJMP_EICALL__"); \
- builtin_define ("__AVR_3_BYTE_PC__"); \
- } \
- else \
- { \
- builtin_define ("__AVR_2_BYTE_PC__"); \
- } \
- if (TARGET_NO_INTERRUPTS) \
- builtin_define ("__NO_INTERRUPTS__"); \
- } \
- while (0)
-
-extern const char *avr_extra_arch_macro;
+#define TARGET_CPU_CPP_BUILTINS() avr_cpu_cpp_builtins (pfile)
#if !defined(IN_LIBGCC2) && !defined(IN_TARGET_LIBS)
extern GTY(()) section *progmem_section;
#define AVR_HAVE_LPMX (avr_current_arch->have_movw_lpmx)
#define AVR_HAVE_RAMPZ (avr_current_arch->have_elpm)
#define AVR_HAVE_EIJMP_EICALL (avr_current_arch->have_eijmp_eicall)
+#define AVR_HAVE_8BIT_SP (avr_current_device->short_sp || TARGET_TINY_STACK)
#define AVR_2_BYTE_PC (!AVR_HAVE_EIJMP_EICALL)
#define AVR_3_BYTE_PC (AVR_HAVE_EIJMP_EICALL)
#define STATIC_CHAIN_REGNUM 2
-#define FRAME_POINTER_REQUIRED avr_frame_pointer_required_p()
-
/* Offset from the frame pointer register value to the top of the stack. */
#define FRAME_POINTER_CFA_OFFSET(FNDECL) 0
{FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM} \
,{FRAME_POINTER_REGNUM+1,STACK_POINTER_REGNUM+1}}
-#define CAN_ELIMINATE(FROM, TO) avr_can_eliminate (FROM, TO)
-
#define INITIAL_ELIMINATION_OFFSET(FROM, TO, OFFSET) \
OFFSET = avr_initial_elimination_offset (FROM, TO)
#define HAVE_POST_INCREMENT 1
#define HAVE_PRE_DECREMENT 1
-#define CONSTANT_ADDRESS_P(X) CONSTANT_P (X)
-
#define MAX_REGS_PER_ADDRESS 1
#define REG_OK_FOR_BASE_NOSTRICT_P(X) \
#define NO_DOLLAR_IN_LABEL 1
-#define TRAMPOLINE_TEMPLATE(FILE) \
- internal_error ("trampolines not supported")
-
#define TRAMPOLINE_SIZE 4
-#define INITIALIZE_TRAMPOLINE(TRAMP, FNADDR, CXT) \
-{ \
- emit_move_insn (gen_rtx_MEM (HImode, plus_constant ((TRAMP), 2)), CXT); \
- emit_move_insn (gen_rtx_MEM (HImode, plus_constant ((TRAMP), 6)), FNADDR); \
-}
/* Store in cc_status the expressions
that the condition codes will describe
after execution of an instruction whose pattern is EXP.
This is added to the cfun structure. */
struct GTY(()) machine_function
{
- /* 'true' - if the current function is a leaf function. */
- int is_leaf;
-
/* 'true' - if current function is a naked function. */
int is_naked;