File tree Expand file tree Collapse file tree 1 file changed +4
-1
lines changed Expand file tree Collapse file tree 1 file changed +4
-1
lines changed Original file line number Diff line number Diff line change @@ -129,7 +129,10 @@ static uint32_t begin_critical_flash_section(void) {
129
129
130
130
#if defined(MICROPY_HW_PSRAM_CS_PIN ) && MICROPY_HW_ENABLE_PSRAM
131
131
// We're about to invalidate the XIP cache, clean it first to commit any dirty writes to PSRAM
132
- uint8_t * maintenance_ptr = (uint8_t * )XIP_MAINTENANCE_BASE ;
132
+ // Use the upper 16k of the maintenance space (0x1bffc000 through 0x1bffffff) to workaround
133
+ // incorrect behaviour of the XIP clean operation, where it also alters the tag of the associated
134
+ // cache line: https://forums.raspberrypi.com/viewtopic.php?t=378249#p2263677
135
+ volatile uint8_t * maintenance_ptr = (volatile uint8_t * )(XIP_SRAM_BASE + (XIP_MAINTENANCE_BASE - XIP_BASE ));
133
136
for (int i = 1 ; i < 16 * 1024 ; i += 8 ) {
134
137
maintenance_ptr [i ] = 0 ;
135
138
}
You can’t perform that action at this time.
0 commit comments