table of contents
pgmspace.h(3avr) | avr-libc | pgmspace.h(3avr) |
NAME¶
pgmspace.h -SYNOPSIS¶
Macros¶
#define __need_size_t
Typedefs¶
typedef void PROGMEM prog_void
Functions¶
const void * memchr_P (const void *, int __val, size_t __len)
Macro Definition Documentation¶
#define __ELPM_classic__(addr)¶
Value:(__extension__({ \ uint32_t __addr32 = (uint32_t)(addr); \ uint8_t __result; __asm__ __volatile__ ( "out %2, %C1" "0t" "mov r31, %B1" "0t" "mov r30, %A1" "0t" "elpm" "0t" "mov %0, r0" "0t" : "=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__ __volatile__ ( "out %2, %C1" "0t" "movw r30, %1" "0t" "elpm %A0, Z+" "0t" "elpm %B0, Z+" "0t" "elpm %C0, Z+" "0t" "elpm %D0, Z" "0t" : "=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__ __volatile__ ( "in __tmp_reg__, %2" "0t" "out %2, %C1" "0t" "movw r30, %1" "0t" "elpm %A0, Z+" "0t" "elpm %B0, Z+" "0t" "elpm %C0, Z+" "0t" "elpm %D0, Z" "0t" "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__ __volatile__ ( "out %2, %C1" "0t" "movw r30, %1" "0t" "elpm %0, Z+" "0t" : "=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__ __volatile__ ( "out %2, %C1" "0t" "movw r30, %1" "0t" "elpm %A0, Z+" "0t" "elpm %B0, Z+" "0t" "elpm %C0, Z+" "0t" "elpm %D0, Z" "0t" : "=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__ __volatile__ ( "in __tmp_reg__, %2" "0t" "out %2, %C1" "0t" "movw r30, %1" "0t" "elpm %A0, Z+" "0t" "elpm %B0, Z+" "0t" "elpm %C0, Z+" "0t" "elpm %D0, Z" "0t" "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__ __volatile__ ( "out %2, %C1" "0t" "mov r31, %B1" "0t" "mov r30, %A1" "0t" "elpm" "0t" "mov %A0, r0" "0t" "in r0, %2" "0t" "adiw r30, 1" "0t" "adc r0, __zero_reg__" "0t" "out %2, r0" "0t" "elpm" "0t" "mov %B0, r0" "0t" : "=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__ __volatile__ ( "out %2, %C1" "0t" "movw r30, %1" "0t" "elpm %A0, Z+" "0t" "elpm %B0, Z" "0t" : "=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__ __volatile__ ( "in __tmp_reg__, %2" "0t" "out %2, %C1" "0t" "movw r30, %1" "0t" "elpm %A0, Z+" "0t" "elpm %B0, Z" "0t" "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__ __volatile__ ( "in __tmp_reg__, %2" "0t" "out %2, %C1" "0t" "movw r30, %1" "0t" "elpm %0, Z+" "0t" "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__ __volatile__ ( "lpm" "0t" "mov %0, r0" "0t" : "=r" (__result) : "z" (__addr16) : "r0" ); __result; }))
#define __LPM_dword_classic__(addr)¶
Value:(__extension__({ \ uint16_t __addr16 = (uint16_t)(addr); \ uint32_t __result; __asm__ __volatile__ ( "lpm" "0t" "mov %A0, r0" "0t" "adiw r30, 1" "0t" "lpm" "0t" "mov %B0, r0" "0t" "adiw r30, 1" "0t" "lpm" "0t" "mov %C0, r0" "0t" "adiw r30, 1" "0t" "lpm" "0t" "mov %D0, r0" "0t" : "=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__ __volatile__ ( "lpm %A0, Z+" "0t" "lpm %B0, Z+" "0t" "lpm %C0, Z+" "0t" "lpm %D0, Z" "0t" : "=r" (__result), "=z" (__addr16) : "1" (__addr16) ); __result; }))
#define __LPM_dword_tiny__(addr)¶
Value:(__extension__({ \ uint16_t __addr16 = (uint16_t)(addr) + __AVR_TINY_PM_BASE_ADDRESS__; \ uint32_t __result; __asm__ ( "ld %A0, z+" "0t" "ld %B0, z+" "0t" "ld %C0, z+" "0t" "ld %D0, z" "0t" : "=r" (__result), "=z" (__addr16) : "1" (__addr16) ); __result; }))
#define __LPM_enhanced__(addr)¶
Value:(__extension__({ \ uint16_t __addr16 = (uint16_t)(addr); \ uint8_t __result; __asm__ __volatile__ ( "lpm %0, Z" "0t" : "=r" (__result) : "z" (__addr16) ); __result; }))
#define __LPM_float_classic__(addr)¶
Value:(__extension__({ \ uint16_t __addr16 = (uint16_t)(addr); float __result; __asm__ __volatile__ ( "lpm" "0t" "mov %A0, r0" "0t" "adiw r30, 1" "0t" "lpm" "0t" "mov %B0, r0" "0t" "adiw r30, 1" "0t" "lpm" "0t" "mov %C0, r0" "0t" "adiw r30, 1" "0t" "lpm" "0t" "mov %D0, r0" "0t" : "=r" (__result), "=z" (__addr16) : "1" (__addr16) : "r0" ); __result; }))
#define __LPM_float_enhanced__(addr)¶
Value:(__extension__({ \ uint16_t __addr16 = (uint16_t)(addr); float __result; __asm__ __volatile__ ( "lpm %A0, Z+" "0t" "lpm %B0, Z+" "0t" "lpm %C0, Z+" "0t" "lpm %D0, Z" "0t" : "=r" (__result), "=z" (__addr16) : "1" (__addr16) ); __result; }))
#define __LPM_float_tiny__(addr)¶
Value:(__extension__({ \ uint16_t __addr16 = (uint16_t)(addr) + __AVR_TINY_PM_BASE_ADDRESS__; float __result; __asm__ ( "ld %A0, z+" "0t" "ld %B0, z+" "0t" "ld %C0, z+" "0t" "ld %D0, z" "0t" : "=r" (__result), "=z" (__addr16) : "1" (__addr16) ); __result; }))
#define __LPM_tiny__(addr)¶
Value:(__extension__({ \ uint16_t __addr16 = (uint16_t)(addr) + __AVR_TINY_PM_BASE_ADDRESS__; \ uint8_t __result; __asm__ ( "ld %0, z" "0t" : "=r" (__result) : "z" (__addr16) ); __result; }))
#define __LPM_word_classic__(addr)¶
Value:(__extension__({ \ uint16_t __addr16 = (uint16_t)(addr); \ uint16_t __result; __asm__ __volatile__ ( "lpm" "0t" "mov %A0, r0" "0t" "adiw r30, 1" "0t" "lpm" "0t" "mov %B0, r0" "0t" : "=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__ __volatile__ ( "lpm %A0, Z+" "0t" "lpm %B0, Z" "0t" : "=r" (__result), "=z" (__addr16) : "1" (__addr16) ); __result; }))
#define __LPM_word_tiny__(addr)¶
Value:(__extension__({ \ uint16_t __addr16 = (uint16_t)(addr) + __AVR_TINY_PM_BASE_ADDRESS__; \ uint16_t __result; __asm__ ( "ld %A0, z+" "0t" "ld %B0, z" "0t" : "=r" (__result), "=z" (__addr16) : "1" (__addr16) ); __result; }))
#define pgm_get_far_address(var)¶
Value:({ \ uint_farptr_t tmp; __asm__ __volatile__( "ldi %A0, lo8(%1)" "0t" "ldi %B0, hi8(%1)" "0t" "ldi %C0, hh8(%1)" "0t" "clr %D0" "0t" : "=d" (tmp) : "p" (&(var)) ); tmp; })
Author¶
Generated automatically by Doxygen for avr-libc from the source code.Wed Jun 4 2014 | Version 1.8.0svn |