Provided by: avr-libc_1.8.0-4.1_all
NAME
pgmspace.h -
SYNOPSIS
Macros #define __need_size_t #define __ATTR_PROGMEM__ __attribute__((__progmem__)) #define __ATTR_PURE__ __attribute__((__pure__)) #define PROGMEM __ATTR_PROGMEM__ #define PGM_P const char * #define PGM_VOID_P const void * #define PSTR(s) ((const PROGMEM char *)(s)) #define __LPM_classic__(addr) #define __LPM_enhanced__(addr) #define __LPM_word_classic__(addr) #define __LPM_word_enhanced__(addr) #define __LPM_dword_classic__(addr) #define __LPM_dword_enhanced__(addr) #define __LPM_float_classic__(addr) #define __LPM_float_enhanced__(addr) #define __LPM(addr) __LPM_classic__(addr) #define __LPM_word(addr) __LPM_word_classic__(addr) #define __LPM_dword(addr) __LPM_dword_classic__(addr) #define __LPM_float(addr) __LPM_float_classic__(addr) #define pgm_read_byte_near(address_short) __LPM((uint16_t)(address_short)) #define pgm_read_word_near(address_short) __LPM_word((uint16_t)(address_short)) #define pgm_read_dword_near(address_short) __LPM_dword((uint16_t)(address_short)) #define pgm_read_float_near(address_short) __LPM_float((uint16_t)(address_short)) #define __ELPM_classic__(addr) #define __ELPM_enhanced__(addr) #define __ELPM_xmega__(addr) #define __ELPM_word_classic__(addr) #define __ELPM_word_enhanced__(addr) #define __ELPM_word_xmega__(addr) #define __ELPM_dword_classic__(addr) #define __ELPM_dword_enhanced__(addr) #define __ELPM_dword_xmega__(addr) #define __ELPM_float_classic__(addr) #define __ELPM_float_enhanced__(addr) #define __ELPM_float_xmega__(addr) #define __ELPM(addr) __ELPM_classic__(addr) #define __ELPM_word(addr) __ELPM_word_classic__(addr) #define __ELPM_dword(addr) __ELPM_dword_classic__(addr) #define __ELPM_float(addr) __ELPM_float_classic__(addr) #define pgm_read_byte_far(address_long) __ELPM((uint32_t)(address_long)) #define pgm_read_word_far(address_long) __ELPM_word((uint32_t)(address_long)) #define pgm_read_dword_far(address_long) __ELPM_dword((uint32_t)(address_long)) #define pgm_read_float_far(address_long) __ELPM_float((uint32_t)(address_long)) #define pgm_read_byte(address_short) pgm_read_byte_near(address_short) #define pgm_read_word(address_short) pgm_read_word_near(address_short) #define pgm_read_dword(address_short) pgm_read_dword_near(address_short) #define pgm_read_float(address_short) pgm_read_float_near(address_short) #define pgm_get_far_address(var) Typedefs typedef void PROGMEM prog_void typedef char PROGMEM prog_char typedef unsigned char PROGMEM prog_uchar typedef int8_t PROGMEM prog_int8_t typedef uint8_t PROGMEM prog_uint8_t typedef int16_t PROGMEM prog_int16_t typedef uint16_t PROGMEM prog_uint16_t typedef int32_t PROGMEM prog_int32_t typedef uint32_t PROGMEM prog_uint32_t typedef int64_t PROGMEM prog_int64_t typedef uint64_t PROGMEM prog_uint64_t Functions const void * memchr_P (const void *, int __val, size_t __len) int memcmp_P (const void *, const void *, size_t) __ATTR_PURE__ void * memccpy_P (void *, const void *, int __val, size_t) void * memcpy_P (void *, const void *, size_t) void * memmem_P (const void *, size_t, const void *, size_t) __ATTR_PURE__ const void * memrchr_P (const void *, int __val, size_t __len) char * strcat_P (char *, const char *) const char * strchr_P (const char *, int __val) const char * strchrnul_P (const char *, int __val) int strcmp_P (const char *, const char *) __ATTR_PURE__ char * strcpy_P (char *, const char *) int strcasecmp_P (const char *, const char *) __ATTR_PURE__ char * strcasestr_P (const char *, const char *) __ATTR_PURE__ size_t strcspn_P (const char *__s, const char *__reject) __ATTR_PURE__ size_t strlcat_P (char *, const char *, size_t) size_t strlcpy_P (char *, const char *, size_t) size_t __strlen_P (const char *) size_t strnlen_P (const char *, size_t) int strncmp_P (const char *, const char *, size_t) __ATTR_PURE__ int strncasecmp_P (const char *, const char *, size_t) __ATTR_PURE__ char * strncat_P (char *, const char *, size_t) char * strncpy_P (char *, const char *, size_t) char * strpbrk_P (const char *__s, const char *__accept) __ATTR_PURE__ const char * strrchr_P (const char *, int __val) char * strsep_P (char **__sp, const char *__delim) size_t strspn_P (const char *__s, const char *__accept) __ATTR_PURE__ char * strstr_P (const char *, const char *) __ATTR_PURE__ char * strtok_P (char *__s, const char *__delim) char * strtok_rP (char *__s, const char *__delim, char **__last) size_t strlen_PF (uint_farptr_t src) size_t strnlen_PF (uint_farptr_t src, size_t len) void * memcpy_PF (void *dest, uint_farptr_t src, size_t len) char * strcpy_PF (char *dest, uint_farptr_t src) char * strncpy_PF (char *dest, uint_farptr_t src, size_t len) char * strcat_PF (char *dest, uint_farptr_t src) size_t strlcat_PF (char *dst, uint_farptr_t src, size_t siz) char * strncat_PF (char *dest, uint_farptr_t src, size_t len) int strcmp_PF (const char *s1, uint_farptr_t s2) __ATTR_PURE__ int strncmp_PF (const char *s1, uint_farptr_t s2, size_t n) __ATTR_PURE__ int strcasecmp_PF (const char *s1, uint_farptr_t s2) __ATTR_PURE__ int strncasecmp_PF (const char *s1, uint_farptr_t s2, size_t n) __ATTR_PURE__ char * strstr_PF (const char *s1, uint_farptr_t s2) size_t strlcpy_PF (char *dst, uint_farptr_t src, size_t siz) int memcmp_PF (const void *, uint_farptr_t, size_t) __ATTR_PURE__ __attribute__ ((__always_inline__)) static inline size_t strlen_P(const char *s) static size_t strlen_P (const char *s)
Macro Definition Documentation
#define __ELPM_classic__(addr) Value: (__extension__({ \ uint32_t __addr32 = (uint32_t)(addr); \ uint8_t __result; __asm__ ( "out %2, %C1" "" "mov r31, %B1" "" "mov r30, %A1" "" "elpm" "" "mov %0, r0" "" : "=r" (__result) : "r" (__addr32), "I" (_SFR_IO_ADDR(RAMPZ)) : "r0", "r30", "r31" ); __result; })) #define __ELPM_dword_enhanced__(addr) Value: (__extension__({ \ uint32_t __addr32 = (uint32_t)(addr); \ uint32_t __result; __asm__ ( "out %2, %C1" "" "movw r30, %1" "" "elpm %A0, Z+" "" "elpm %B0, Z+" "" "elpm %C0, Z+" "" "elpm %D0, Z" "" : "=r" (__result) : "r" (__addr32), "I" (_SFR_IO_ADDR(RAMPZ)) : "r30", "r31" ); __result; })) #define __ELPM_dword_xmega__(addr) Value: (__extension__({ \ uint32_t __addr32 = (uint32_t)(addr); \ uint32_t __result; __asm__ ( "in __tmp_reg__, %2" "" "out %2, %C1" "" "movw r30, %1" "" "elpm %A0, Z+" "" "elpm %B0, Z+" "" "elpm %C0, Z+" "" "elpm %D0, Z" "" "out %2, __tmp_reg__" : "=r" (__result) : "r" (__addr32), "I" (_SFR_IO_ADDR(RAMPZ)) : "r30", "r31" ); __result; })) #define __ELPM_enhanced__(addr) Value: (__extension__({ \ uint32_t __addr32 = (uint32_t)(addr); \ uint8_t __result; __asm__ ( "out %2, %C1" "" "movw r30, %1" "" "elpm %0, Z+" "" : "=r" (__result) : "r" (__addr32), "I" (_SFR_IO_ADDR(RAMPZ)) : "r30", "r31" ); __result; })) #define __ELPM_float_enhanced__(addr) Value: (__extension__({ \ uint32_t __addr32 = (uint32_t)(addr); float __result; __asm__ ( "out %2, %C1" "" "movw r30, %1" "" "elpm %A0, Z+" "" "elpm %B0, Z+" "" "elpm %C0, Z+" "" "elpm %D0, Z" "" : "=r" (__result) : "r" (__addr32), "I" (_SFR_IO_ADDR(RAMPZ)) : "r30", "r31" ); __result; })) #define __ELPM_float_xmega__(addr) Value: (__extension__({ \ uint32_t __addr32 = (uint32_t)(addr); float __result; __asm__ ( "in __tmp_reg__, %2" "" "out %2, %C1" "" "movw r30, %1" "" "elpm %A0, Z+" "" "elpm %B0, Z+" "" "elpm %C0, Z+" "" "elpm %D0, Z" "" "out %2, __tmp_reg__" : "=r" (__result) : "r" (__addr32), "I" (_SFR_IO_ADDR(RAMPZ)) : "r30", "r31" ); __result; })) #define __ELPM_word_classic__(addr) Value: (__extension__({ \ uint32_t __addr32 = (uint32_t)(addr); \ uint16_t __result; __asm__ ( "out %2, %C1" "" "mov r31, %B1" "" "mov r30, %A1" "" "elpm" "" "mov %A0, r0" "" "in r0, %2" "" "adiw r30, 1" "" "adc r0, __zero_reg__" "" "out %2, r0" "" "elpm" "" "mov %B0, r0" "" : "=r" (__result) : "r" (__addr32), "I" (_SFR_IO_ADDR(RAMPZ)) : "r0", "r30", "r31" ); __result; })) #define __ELPM_word_enhanced__(addr) Value: (__extension__({ \ uint32_t __addr32 = (uint32_t)(addr); \ uint16_t __result; __asm__ ( "out %2, %C1" "" "movw r30, %1" "" "elpm %A0, Z+" "" "elpm %B0, Z" "" : "=r" (__result) : "r" (__addr32), "I" (_SFR_IO_ADDR(RAMPZ)) : "r30", "r31" ); __result; })) #define __ELPM_word_xmega__(addr) Value: (__extension__({ \ uint32_t __addr32 = (uint32_t)(addr); \ uint16_t __result; __asm__ ( "in __tmp_reg__, %2" "" "out %2, %C1" "" "movw r30, %1" "" "elpm %A0, Z+" "" "elpm %B0, Z" "" "out %2, __tmp_reg__" : "=r" (__result) : "r" (__addr32), "I" (_SFR_IO_ADDR(RAMPZ)) : "r30", "r31" ); __result; })) #define __ELPM_xmega__(addr) Value: (__extension__({ \ uint32_t __addr32 = (uint32_t)(addr); \ uint8_t __result; __asm__ ( "in __tmp_reg__, %2" "" "out %2, %C1" "" "movw r30, %1" "" "elpm %0, Z+" "" "out %2, __tmp_reg__" : "=r" (__result) : "r" (__addr32), "I" (_SFR_IO_ADDR(RAMPZ)) : "r30", "r31" ); __result; })) #define __LPM_classic__(addr) Value: (__extension__({ \ uint16_t __addr16 = (uint16_t)(addr); \ uint8_t __result; __asm__ ( "lpm" "" "mov %0, r0" "" : "=r" (__result) : "z" (__addr16) : "r0" ); __result; })) #define __LPM_dword_classic__(addr) Value: (__extension__({ \ uint16_t __addr16 = (uint16_t)(addr); \ uint32_t __result; __asm__ ( "lpm" "" "mov %A0, r0" "" "adiw r30, 1" "" "lpm" "" "mov %B0, r0" "" "adiw r30, 1" "" "lpm" "" "mov %C0, r0" "" "adiw r30, 1" "" "lpm" "" "mov %D0, r0" "" : "=r" (__result), "=z" (__addr16) : "1" (__addr16) : "r0" ); __result; })) #define __LPM_dword_enhanced__(addr) Value: (__extension__({ \ uint16_t __addr16 = (uint16_t)(addr); \ uint32_t __result; __asm__ ( "lpm %A0, Z+" "" "lpm %B0, Z+" "" "lpm %C0, Z+" "" "lpm %D0, Z" "" : "=r" (__result), "=z" (__addr16) : "1" (__addr16) ); __result; })) #define __LPM_enhanced__(addr) Value: (__extension__({ \ uint16_t __addr16 = (uint16_t)(addr); \ uint8_t __result; __asm__ ( "lpm %0, Z" "" : "=r" (__result) : "z" (__addr16) ); __result; })) #define __LPM_float_classic__(addr) Value: (__extension__({ \ uint16_t __addr16 = (uint16_t)(addr); float __result; __asm__ ( "lpm" "" "mov %A0, r0" "" "adiw r30, 1" "" "lpm" "" "mov %B0, r0" "" "adiw r30, 1" "" "lpm" "" "mov %C0, r0" "" "adiw r30, 1" "" "lpm" "" "mov %D0, r0" "" : "=r" (__result), "=z" (__addr16) : "1" (__addr16) : "r0" ); __result; })) #define __LPM_float_enhanced__(addr) Value: (__extension__({ \ uint16_t __addr16 = (uint16_t)(addr); float __result; __asm__ ( "lpm %A0, Z+" "" "lpm %B0, Z+" "" "lpm %C0, Z+" "" "lpm %D0, Z" "" : "=r" (__result), "=z" (__addr16) : "1" (__addr16) ); __result; })) #define __LPM_word_classic__(addr) Value: (__extension__({ \ uint16_t __addr16 = (uint16_t)(addr); \ uint16_t __result; __asm__ ( "lpm" "" "mov %A0, r0" "" "adiw r30, 1" "" "lpm" "" "mov %B0, r0" "" : "=r" (__result), "=z" (__addr16) : "1" (__addr16) : "r0" ); __result; })) #define __LPM_word_enhanced__(addr) Value: (__extension__({ \ uint16_t __addr16 = (uint16_t)(addr); \ uint16_t __result; __asm__ ( "lpm %A0, Z+" "" "lpm %B0, Z" "" : "=r" (__result), "=z" (__addr16) : "1" (__addr16) ); __result; })) #define pgm_get_far_address(var) Value: ({ \ uint_farptr_t tmp; __asm__ __volatile__( "ldi %A0, lo8(%1)" "" "ldi %B0, hi8(%1)" "" "ldi %C0, hh8(%1)" "" "clr %D0" "" : "=d" (tmp) : "p" (&(var)) ); tmp; })
Author
Generated automatically by Doxygen for avr-libc from the source code.