|
|
|
|
|
|
|
|
{ |
|
|
{ |
|
|
uint32_t location = (uint32_t)addr & 0xFFFFFFE0; |
|
|
uint32_t location = (uint32_t)addr & 0xFFFFFFE0; |
|
|
uint32_t end_addr = (uint32_t)addr + size; |
|
|
uint32_t end_addr = (uint32_t)addr + size; |
|
|
|
|
|
asm volatile("": : :"memory"); |
|
|
asm("dsb"); |
|
|
asm("dsb"); |
|
|
do { |
|
|
do { |
|
|
SCB_CACHE_DCCMVAC = location; |
|
|
SCB_CACHE_DCCMVAC = location; |
|
|
|
|
|
|
|
|
{ |
|
|
{ |
|
|
uint32_t location = (uint32_t)addr & 0xFFFFFFE0; |
|
|
uint32_t location = (uint32_t)addr & 0xFFFFFFE0; |
|
|
uint32_t end_addr = (uint32_t)addr + size; |
|
|
uint32_t end_addr = (uint32_t)addr + size; |
|
|
|
|
|
asm volatile("": : :"memory"); |
|
|
asm("dsb"); |
|
|
asm("dsb"); |
|
|
do { |
|
|
do { |
|
|
SCB_CACHE_DCIMVAC = location; |
|
|
SCB_CACHE_DCIMVAC = location; |
|
|
|
|
|
|
|
|
{ |
|
|
{ |
|
|
uint32_t location = (uint32_t)addr & 0xFFFFFFE0; |
|
|
uint32_t location = (uint32_t)addr & 0xFFFFFFE0; |
|
|
uint32_t end_addr = (uint32_t)addr + size; |
|
|
uint32_t end_addr = (uint32_t)addr + size; |
|
|
|
|
|
asm volatile("": : :"memory"); |
|
|
asm("dsb"); |
|
|
asm("dsb"); |
|
|
do { |
|
|
do { |
|
|
SCB_CACHE_DCCIMVAC = location; |
|
|
SCB_CACHE_DCCIMVAC = location; |