| #define fprintf_P(fp, ...) fprintf((fp), __VA_ARGS__) | #define fprintf_P(fp, ...) fprintf((fp), __VA_ARGS__) | ||||
| #define pgm_read_byte(addr) (*(const unsigned char *)(addr)) | #define pgm_read_byte(addr) (*(const unsigned char *)(addr)) | ||||
| #if 0 | |||||
| #define pgm_read_word(addr) (*(const unsigned short *)(addr)) | #define pgm_read_word(addr) (*(const unsigned short *)(addr)) | ||||
| #define pgm_read_dword(addr) (*(const unsigned long *)(addr)) | #define pgm_read_dword(addr) (*(const unsigned long *)(addr)) | ||||
| #define pgm_read_float(addr) (*(const float *)(addr)) | #define pgm_read_float(addr) (*(const float *)(addr)) | ||||
| #else | |||||
| #define pgm_read_word(addr) ({ \ | |||||
| typeof(addr) _addr = (addr); \ | |||||
| *(const unsigned short *)(_addr); \ | |||||
| }) | |||||
| #define pgm_read_dword(addr) ({ \ | |||||
| typeof(addr) _addr = (addr); \ | |||||
| *(const unsigned long *)(_addr); \ | |||||
| }) | |||||
| #define pgm_read_float(addr) ({ \ | |||||
| typeof(addr) _addr = (addr); \ | |||||
| *(const float *)(_addr); \ | |||||
| }) | |||||
| #endif | |||||
| #define pgm_read_byte_near(addr) pgm_read_byte(addr) | #define pgm_read_byte_near(addr) pgm_read_byte(addr) | ||||
| #define pgm_read_word_near(addr) pgm_read_word(addr) | #define pgm_read_word_near(addr) pgm_read_word(addr) |