File: progmem.h

package info (click to toggle)
avr-libc 1%3A1.6.2.cvs20080610-2
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 14,848 kB
  • ctags: 55,619
  • sloc: ansic: 92,267; asm: 6,692; sh: 4,131; makefile: 2,481; python: 976; pascal: 426; perl: 116
file content (30 lines) | stat: -rw-r--r-- 759 bytes parent folder | download
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
26
27
28
29
30
/* $Id: progmem.h,v 1.5.2.1 2007/12/23 07:34:10 dmix Exp $	*/

#ifdef	__AVR__

# include <avr/pgmspace.h>

# define pgm_read_qword(addr)	({			\
    union {						\
	unsigned long __dw[2];				\
	unsigned long long __qw[1];			\
    } __u;						\
    __u.__dw[0] = pgm_read_dword (addr);		\
    __u.__dw[1] = pgm_read_dword ((void *)addr + 4);	\
    __u.__qw[0];					\
  })

#else

# define PROGMEM
# define PSTR(s)		(s)
# define pgm_read_byte(addr)	(*(unsigned char *)(addr))
# define pgm_read_word(addr)	(*(unsigned int *)(addr))
# define pgm_read_dword(addr)	(*(unsigned long *)(addr))
# define pgm_read_qword(addr)	(*(unsigned long long *)(addr))
# define strlen_P		strlen
# define strcmp_P		strcmp
# define strcpy_P		strcpy
# define memcpy_P		memcpy

#endif