blob: c91dc4c3f4fe163a58caab98e5122f0e730e4344 [file] [log] [blame]
#define PROGMEM __attribute__((progmem))
#define PSTR(s) \
(__extension__({ \
static const char __c[] PROGMEM = (s); \
&__c[0];}))
#ifdef __AVR_HAVE_LPMX__
#define pgm_read_char(addr) \
(__extension__({ \
unsigned int __addr16 = (unsigned int)(addr); \
char __result; \
__asm__ ("lpm %0, %a1" \
: "=r" (__result) : "z" (__addr16)); \
__result; }))
#elif defined (__AVR_TINY__)
/* PR71948 auto-adds 0x4000 as needed, hance just a plain read. */
#define pgm_read_char(addr) \
(*(addr))
#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