projects
/
bertos.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Abb first skel of programmming AVR flash memory.
[bertos.git]
/
mware
/
pgm.h
diff --git
a/mware/pgm.h
b/mware/pgm.h
index ea28043e98587cdf166bffec5c81844cecff752c..5f10d002ea5a6c153048467cd1746da88a79a20b 100755
(executable)
--- a/
mware/pgm.h
+++ b/
mware/pgm.h
@@
-1,4
+1,4
@@
-/*
!
+/*
*
* \file
* <!--
* Copyright 2005 Develer S.r.l. (http://www.develer.com/)
* \file
* <!--
* Copyright 2005 Develer S.r.l. (http://www.develer.com/)
@@
-24,6
+24,7
@@
#include <cfg/cpu_detect.h>
#include <cfg/compiler.h> /* For intXX_t */
#include <cfg/cpu_detect.h>
#include <cfg/compiler.h> /* For intXX_t */
+#include <cfg/cpu.h> /* For CPU_HARVARD */
#if CPU_AVR
#if CPU_AVR
@@
-75,7
+76,8
@@
})
})
- #else
+ #else /* !__AVR_ENHANCED__ */
+
#define pgm_read_char(addr) \
({ \
uint16_t __addr16 = (uint16_t)(addr); \
#define pgm_read_char(addr) \
({ \
uint16_t __addr16 = (uint16_t)(addr); \
@@
-134,6
+136,12
@@
__result; \
})
__result; \
})
+ #endif /* !__AVR_ENHANCED__ */
+
+ #if SIZEOF_INT == 2
+ #define pgm_read_int(addr) ((int)pgm_read_uint16_t(addr))
+ #else
+ #error Missing support for CPU word size != 16bit
#endif
#ifndef PROGMEM
#endif
#ifndef PROGMEM
@@
-142,6
+150,9
@@
#ifndef PSTR
#define PSTR(s) ({ static const char __c[] PROGMEM = (s); &__c[0]; })
#endif
#ifndef PSTR
#define PSTR(s) ({ static const char __c[] PROGMEM = (s); &__c[0]; })
#endif
+ #ifndef PFUNC
+ #define PFUNC(x) x ## _P
+ #endif
#elif CPU_HARVARD
#error Missing CPU support
#elif CPU_HARVARD
#error Missing CPU support
@@
-151,11
+162,15
@@
#define PSTR /* nothing */
#endif
#define PSTR /* nothing */
#endif
+#ifndef PFUNC
+#define PFUNC(x) x
+#endif
+
#ifndef PROGMEM
#ifndef PROGMEM
-#define PROGMEM
/* nothing */
+#define PROGMEM /* nothing */
#endif
#endif
-/*
!
+/*
*
* \name Types for variables stored in program memory (harvard processors).
* \{
*/
* \name Types for variables stored in program memory (harvard processors).
* \{
*/
@@
-168,7
+183,7
@@
typedef PROGMEM int32_t pgm_int32_t;
typedef PROGMEM uint32_t pgm_uint32_t;
/*\}*/
typedef PROGMEM uint32_t pgm_uint32_t;
/*\}*/
-/*
!
+/*
*
* \name PGM support macros.
*
* These macros enable dual compilation of code for both program
* \name PGM support macros.
*
* These macros enable dual compilation of code for both program
@@
-201,13
+216,13
@@
typedef PROGMEM uint32_t pgm_uint32_t;
*/
#ifdef _PROGMEM
#define PGM_READ_CHAR(s) pgm_read_char(s)
*/
#ifdef _PROGMEM
#define PGM_READ_CHAR(s) pgm_read_char(s)
- #define PGM_FUNC(x)
x ## _P
- #define PGM_STR(x) PSTR(x)
+ #define PGM_FUNC(x)
PFUNC(x)
+ #define PGM_STR(x) PSTR(x)
#define PGM_ATTR PROGMEM
#else
#define PGM_READ_CHAR(s) (*(s))
#define PGM_FUNC(x) x
#define PGM_ATTR PROGMEM
#else
#define PGM_READ_CHAR(s) (*(s))
#define PGM_FUNC(x) x
- #define PGM_STR(x) x
+ #define PGM_STR(x) x
#define PGM_ATTR /* nothing */
#endif
/* \} */
#define PGM_ATTR /* nothing */
#endif
/* \} */