diff --git a/include/MCF5475.h b/include/MCF5475.h index fa08e81..fca2361 100644 --- a/include/MCF5475.h +++ b/include/MCF5475.h @@ -23,6 +23,8 @@ * linker symbols must be defined in the linker command file. */ +typedef uint32_t __attribute__((__may_alias__)) uint32_t_a; + extern uint8_t _MBAR[]; extern uint8_t _MMUBAR[]; extern uint8_t _RAMBAR0[]; diff --git a/include/MCF5475_MMU.h b/include/MCF5475_MMU.h index a865fd8..16794da 100644 --- a/include/MCF5475_MMU.h +++ b/include/MCF5475_MMU.h @@ -24,7 +24,9 @@ *********************************************************************/ /* Register read/write macros */ -#define MCF_MMU_MMUCR (*(volatile uint32_t*)(&_MMUBAR[0])) + +/* note the uint32_t_a - this is to avoid gcc warnings about pointer aliasing */ +#define MCF_MMU_MMUCR (*(volatile uint32_t_a*)(&_MMUBAR[0])) #define MCF_MMU_MMUOR (*(volatile uint32_t*)(&_MMUBAR[0x4])) #define MCF_MMU_MMUSR (*(volatile uint32_t*)(&_MMUBAR[0x8])) #define MCF_MMU_MMUAR (*(volatile uint32_t*)(&_MMUBAR[0x10]))