aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarek Michalkiewicz <marekm@linux.org.pl>2000-12-17 11:38:37 +0100
committerDenis Chertykov <denisc@gcc.gnu.org>2000-12-17 13:38:37 +0300
commitcf14485b19e06ee0c64d67bd549ec26fd9f7d740 (patch)
tree90370fef4c9fa07ec552d6545a5cc39fd49373d0
parent4984a8d3e5642a0a20316bfed0dac91ea309210f (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/config/avr/avr.c20
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));