Skip to content

Commit 78acedd

Browse files
Lauszusme-no-dev
authored andcommitted
1 parent 9642877 commit 78acedd

File tree

1 file changed

+18
-3
lines changed

1 file changed

+18
-3
lines changed

cores/esp32/pgmspace.h

+18-3
Original file line numberDiff line numberDiff line change
@@ -37,18 +37,33 @@ typedef unsigned long prog_uint32_t;
3737
#define _SFR_BYTE(n) (n)
3838

3939
#define pgm_read_byte(addr) (*(const unsigned char *)(addr))
40-
#define pgm_read_word(addr) (*(const unsigned short *)(addr))
41-
#define pgm_read_dword(addr) (*(const unsigned long *)(addr))
42-
#define pgm_read_float(addr) (*(const float *)(addr))
40+
#define pgm_read_word(addr) ({ \
41+
typeof(addr) _addr = (addr); \
42+
*(const unsigned short *)(_addr); \
43+
})
44+
#define pgm_read_dword(addr) ({ \
45+
typeof(addr) _addr = (addr); \
46+
*(const unsigned long *)(_addr); \
47+
})
48+
#define pgm_read_float(addr) ({ \
49+
typeof(addr) _addr = (addr); \
50+
*(const float *)(_addr); \
51+
})
52+
#define pgm_read_ptr(addr) ({ \
53+
typeof(addr) _addr = (addr); \
54+
*(void * const *)(_addr); \
55+
})
4356

4457
#define pgm_read_byte_near(addr) pgm_read_byte(addr)
4558
#define pgm_read_word_near(addr) pgm_read_word(addr)
4659
#define pgm_read_dword_near(addr) pgm_read_dword(addr)
4760
#define pgm_read_float_near(addr) pgm_read_float(addr)
61+
#define pgm_read_ptr_near(addr) pgm_read_ptr(addr)
4862
#define pgm_read_byte_far(addr) pgm_read_byte(addr)
4963
#define pgm_read_word_far(addr) pgm_read_word(addr)
5064
#define pgm_read_dword_far(addr) pgm_read_dword(addr)
5165
#define pgm_read_float_far(addr) pgm_read_float(addr)
66+
#define pgm_read_ptr_far(addr) pgm_read_ptr(addr)
5267

5368
#define memcmp_P memcmp
5469
#define memccpy_P memccpy

0 commit comments

Comments
 (0)