aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.target/avr/progmem.h
blob: 17bb771537474acb713505e14e606a5ecf76668a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#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; }))
#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