(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
avr/
progmem.h
       1  #define PROGMEM __attribute__((progmem))
       2  
       3  #define PSTR(s)                                             \
       4      (__extension__({                                        \
       5              static const char __c[] PROGMEM = (s);          \
       6              &__c[0];}))
       7  
       8  #ifdef __AVR_HAVE_LPMX__
       9  #define pgm_read_char(addr)                                 \
      10      (__extension__({                                        \
      11              unsigned int __addr16 = (unsigned int)(addr);   \
      12              char __result;                                  \
      13              __asm__ ("lpm %0, %a1"                          \
      14                       : "=r" (__result) : "z" (__addr16));   \
      15              __result; }))
      16  #elif defined (__AVR_TINY__)
      17  /* PR71948 auto-adds 0x4000 as needed, hance just a plain read. */
      18  #define pgm_read_char(addr)                                 \
      19    (*(addr))
      20  #else
      21  #define pgm_read_char(addr)                                 \
      22      (__extension__({                                        \
      23              unsigned int __addr16 = (unsigned int)(addr);   \
      24              char __result;                                  \
      25              __asm__ ("lpm" "\n\t"                           \
      26                       "mov %0, r0"                           \
      27                       : "=r" (__result) : "z" (__addr16));   \
      28              __result; }))
      29  #endif