X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=mware%2Fpgm.h;h=4bd1018c451f7020f598f2800b6f812698591795;hb=c49c99e64ee64ad490b2aea2d6c6d8f9f6d225db;hp=ea28043e98587cdf166bffec5c81844cecff752c;hpb=72f7d07b915bc6a874ec820de585c6d017c81a94;p=bertos.git diff --git a/mware/pgm.h b/mware/pgm.h index ea28043e..4bd1018c 100755 --- a/mware/pgm.h +++ b/mware/pgm.h @@ -24,6 +24,7 @@ #include #include /* For intXX_t */ +#include /* For CPU_HARVARD */ #if CPU_AVR @@ -75,7 +76,8 @@ }) - #else + #else /* !__AVR_ENHANCED__ */ + #define pgm_read_char(addr) \ ({ \ uint16_t __addr16 = (uint16_t)(addr); \ @@ -134,6 +136,12 @@ __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 @@ -152,7 +160,7 @@ #endif #ifndef PROGMEM -#define PROGMEM /* nothing */ +#define PROGMEM /* nothing */ #endif /*! @@ -202,12 +210,12 @@ typedef PROGMEM uint32_t pgm_uint32_t; #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_STR(x) PSTR(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 /* \} */