From: Georg-Johann Lay Date: Tue, 20 Mar 2012 17:38:29 +0000 (+0000) Subject: progmem.h (pgm_read_char): Define depending on __AVR_HAVE_LPMX__ X-Git-Tag: upstream/12.2.0~77279 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=73f46872b4d140254e9d167138e2e8e92be989c3;p=platform%2Fupstream%2Fgcc.git progmem.h (pgm_read_char): Define depending on __AVR_HAVE_LPMX__ * gcc.target/avr/progmem.h (pgm_read_char): Define depending on __AVR_HAVE_LPMX__ From-SVN: r185583 --- diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index dfdee37..124ea72 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,10 @@ 2012-03-20 Georg-Johann Lay + * gcc.target/avr/progmem.h (pgm_read_char): Define depending on + __AVR_HAVE_LPMX__ + +2012-03-20 Georg-Johann Lay + PR target/49868 * gcc.target/avr/torture/addr-space-2.h: New file. * gcc.target/avr/torture/addr-space-2-g.h: New test. diff --git a/gcc/testsuite/gcc.target/avr/progmem.h b/gcc/testsuite/gcc.target/avr/progmem.h index d5e86c9..17bb771 100644 --- a/gcc/testsuite/gcc.target/avr/progmem.h +++ b/gcc/testsuite/gcc.target/avr/progmem.h @@ -5,6 +5,7 @@ static const char __c[] PROGMEM = (s); \ &__c[0];})) +#ifdef __AVR_HAVE_LPMX__ #define pgm_read_char(addr) \ (__extension__({ \ unsigned int __addr16 = (unsigned int)(addr); \ @@ -12,3 +13,13 @@ __asm__ ("lpm %0, %a1" \ : "=r" (__result) : "z" (__addr16)); \ __result; })) +#else +#define pgm_read_char(addr) \ + (__extension__({ \ + unsigned int __addr16 = (unsigned int)(addr); \ + char __result; \ + __asm__ ("lpm" "\n\t" \ + "mov %0, r0" \ + : "=r" (__result) : "z" (__addr16)); \ + __result; })) +#endif