12 #ifndef SOURCE_ARCHITECTURE_ARM_ARMV6_M_ARMV7_M_INCLUDE_DISTORTOS_ARCHITECTURE_ARMV7_M_BIT_BANDING_H_ 13 #define SOURCE_ARCHITECTURE_ARM_ARMV6_M_ARMV7_M_INCLUDE_DISTORTOS_ARCHITECTURE_ARMV7_M_BIT_BANDING_H_ 17 #if defined(DISTORTOS_ARCHITECTURE_ARM_CORTEX_M3) || defined(DISTORTOS_ARCHITECTURE_ARM_CORTEX_M4) 24 #define DISTORTOS_BITBANDING_SUPPORTED 27 enum { bitbandSramBegin = 0x20000000 };
30 enum { bitbandSramEnd = 0x200fffff };
33 enum { bitbandSramBase = 0x22000000 };
36 enum { bitbandPeripheralBegin = 0x40000000 };
39 enum { bitbandPeripheralEnd = 0x400fffff };
42 enum { bitbandPeripheralBase = 0x42000000 };
53 #define BITBAND_SRAM_ADDRESS(address, bit) \ 54 (bitbandSramBase + (((unsigned long)address) - bitbandSramBegin) * 32 + (bit) * 4) 65 #define BITBAND_PERIPHERAL_ADDRESS(address, bit) \ 66 (bitbandPeripheralBase + (((unsigned long)address) - bitbandPeripheralBegin) * 32 + (bit) * 4) 78 #define BITBAND_ADDRESS(address, bit) \ 79 ((((unsigned long)address) >= bitbandSramBegin) && (((unsigned long)address) <= bitbandSramEnd) ? \ 80 BITBAND_SRAM_ADDRESS(address, bit) : \ 81 (((unsigned long)address) >= bitbandPeripheralBegin) && (((unsigned long)address) <= bitbandPeripheralEnd) ? \ 82 BITBAND_PERIPHERAL_ADDRESS(address, bit) : \ 94 #define BITBAND_SRAM(address, bit) (*(volatile unsigned long*)BITBAND_SRAM_ADDRESS(address, bit)) 105 #define BITBAND_PERIPHERAL(address, bit) (*(volatile unsigned long*)BITBAND_PERIPHERAL_ADDRESS(address, bit)) 117 #define BITBAND(address, bit) (*(volatile unsigned long*)BITBAND_ADDRESS(address, bit))