0c19ecdca8
Completely reorganize the patches for this port. Patches for new devices are now synchronized with the Atmel AVR tools. The main difference is the naming scheme, as FreeBSD patches start with "patch-", while the Atmel AVR Tools patches end up in ".patch".
52 lines
1.9 KiB
Text
52 lines
1.9 KiB
Text
diff -Naurp gcc/config/avr/avr.c gcc/config/avr/avr.c
|
|
--- gcc/config/avr/avr.c 2011-01-19 13:45:00.000000000 -0600
|
|
+++ gcc/config/avr/avr.c 2011-01-19 13:45:47.000000000 -0600
|
|
@@ -784,7 +784,8 @@ expand_prologue (void)
|
|
}
|
|
else if ((!AVR_XMEGA && TARGET_NO_INTERRUPTS)
|
|
|| (!AVR_XMEGA && cfun->machine->is_signal)
|
|
- || (!AVR_XMEGA && cfun->machine->is_OS_main))
|
|
+ || (!AVR_XMEGA && cfun->machine->is_OS_main)
|
|
+ || (AVR_XMEGA && cfun->machine->is_nmi))
|
|
{
|
|
insn =
|
|
emit_insn (gen_movhi_sp_r_irq_off (stack_pointer_rtx,
|
|
@@ -963,7 +964,8 @@ expand_epilogue (void)
|
|
emit_move_insn (stack_pointer_rtx, frame_pointer_rtx);
|
|
}
|
|
else if ((!AVR_XMEGA && TARGET_NO_INTERRUPTS)
|
|
- || (!AVR_XMEGA && cfun->machine->is_signal))
|
|
+ || (!AVR_XMEGA && cfun->machine->is_signal)
|
|
+ || (AVR_XMEGA && cfun->machine->is_nmi))
|
|
{
|
|
emit_insn (gen_movhi_sp_r_irq_off (stack_pointer_rtx,
|
|
frame_pointer_rtx));
|
|
diff -Naurp gcc/function.c gcc/function.c
|
|
--- gcc/function.c 2010-02-26 09:58:57.000000000 -0600
|
|
+++ gcc/function.c 2011-01-19 13:45:48.000000000 -0600
|
|
@@ -4980,6 +4980,14 @@ contains (const_rtx insn, htab_t hash)
|
|
}
|
|
|
|
int
|
|
+prologue_contains (const_rtx insn)
|
|
+{
|
|
+ if (contains (insn, prologue_insn_hash))
|
|
+ return 1;
|
|
+ return 0;
|
|
+}
|
|
+
|
|
+int
|
|
prologue_epilogue_contains (const_rtx insn)
|
|
{
|
|
if (contains (insn, prologue_insn_hash))
|
|
diff -Naurp gcc/rtl.h gcc/rtl.h
|
|
--- gcc/rtl.h 2010-03-16 05:50:42.000000000 -0500
|
|
+++ gcc/rtl.h 2011-01-19 13:45:48.000000000 -0600
|
|
@@ -2296,6 +2296,7 @@ extern void print_inline_rtx (FILE *, co
|
|
|
|
/* In function.c */
|
|
extern void reposition_prologue_and_epilogue_notes (void);
|
|
+extern int prologue_contains (const_rtx);
|
|
extern int prologue_epilogue_contains (const_rtx);
|
|
extern int sibcall_epilogue_contains (const_rtx);
|
|
extern void mark_temp_addr_taken (rtx);
|