From 73f46872b4d140254e9d167138e2e8e92be989c3 Mon Sep 17 00:00:00 2001 From: Georg-Johann Lay Date: Tue, 20 Mar 2012 17:38:29 +0000 Subject: [PATCH] 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 --- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gcc.target/avr/progmem.h | 11 +++++++++++ 2 files changed, 16 insertions(+) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index dfdee374764..124ea7234f9 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +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 diff --git a/gcc/testsuite/gcc.target/avr/progmem.h b/gcc/testsuite/gcc.target/avr/progmem.h index d5e86c9fe3c..17bb7715374 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 -- 2.30.2