diff options
author | Marek Michalkiewicz <marekm@linux.org.pl> | 2000-12-17 11:38:37 +0100 |
---|---|---|
committer | Denis Chertykov <denisc@gcc.gnu.org> | 2000-12-17 13:38:37 +0300 |
commit | cf14485b19e06ee0c64d67bd549ec26fd9f7d740 (patch) | |
tree | 90370fef4c9fa07ec552d6545a5cc39fd49373d0 | |
parent | 4984a8d3e5642a0a20316bfed0dac91ea309210f (diff) | |
download | gcc-cf14485b19e06ee0c64d67bd549ec26fd9f7d740.zip gcc-cf14485b19e06ee0c64d67bd549ec26fd9f7d740.tar.gz gcc-cf14485b19e06ee0c64d67bd549ec26fd9f7d740.tar.bz2 |
avr.c (out_set_stack_ptr): Update comment.
* config/avr/avr.c (out_set_stack_ptr): Update comment.
(print_operand): Add support for %~ and %o.
From-SVN: r38326
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/avr/avr.c | 20 |
2 files changed, 21 insertions, 4 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3fa0386..f29af44 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2000-12-12 Marek Michalkiewicz <marekm@linux.org.pl> + + * config/avr/avr.c (out_set_stack_ptr): Update comment. + (print_operand): Add support for %~ and %o. + 2000-12-17 Herman A.J. ten Brugge <Haj.Ten.Brugge@net.HCC.nl> * c4x.h: Add ASM_OUTPUT_DEF definition for bounded pointer code. diff --git a/gcc/config/avr/avr.c b/gcc/config/avr/avr.c index 3de0440..2903509 100644 --- a/gcc/config/avr/avr.c +++ b/gcc/config/avr/avr.c @@ -505,8 +505,8 @@ out_set_stack_ptr (file, before, after) } /* Set/restore the I flag now - interrupts will be really enabled only - after the next instruction starts. This was not clearly documented. - XXX - verify this on the new devices with enhanced AVR core. */ + after the next instruction. This is not clearly documented, but + believed to be true for all AVR devices. */ if (do_save) { fprintf (file, AS2 (out, __SREG__, __tmp_reg__) CR_TAB); @@ -1003,10 +1003,15 @@ print_operand (file, x, code) if (code >= 'A' && code <= 'D') abcd = code - 'A'; - if (REG_P (x)) + if (code == '~') + { + if (!AVR_MEGA) + fputc ('r', file); + } + else if (REG_P (x)) { if (x == zero_reg_rtx) - fprintf (file,"__zero_reg__"); + fprintf (file, "__zero_reg__"); else fprintf (file, reg_names[true_regnum (x) + abcd]); } @@ -1022,6 +1027,13 @@ print_operand (file, x, code) output_address (addr); fprintf (file, ")+%d", abcd); } + else if (code == 'o') + { + if (GET_CODE (addr) != PLUS) + fatal_insn ("Bad address, not (reg+disp):", addr); + + print_operand (file, XEXP (addr, 1), 0); + } else if (GET_CODE (addr) == PLUS) { print_operand_address (file, XEXP (addr,0)); |