thermosphere: use barriers and caches *properly*. Cache code refactoring
- set/way cache ops create losses of coherency, do not broadcast and are only meant to be used on boot, period. Cache ops by VA are **the only way** to do data cache maintenance. Fix a bug where the L2 cache was evicted by each core. It shouldn't have. - Cleaning dcache to PoU and invalidating icache to PoU, by VA is sufficient for self-modifying code - Since we operate within a single cluster and don't do DMA, we almost always operate within the inner shareability domain (commit untested on real hw)
This commit is contained in:
@@ -50,8 +50,11 @@ _startCommon:
|
||||
dsb sy
|
||||
isb
|
||||
|
||||
mov x2, x0
|
||||
bl cacheClearLocalDataCacheOnBoot
|
||||
cbz x19, 1f
|
||||
bl cacheClearSharedDataCachesOnBoot
|
||||
|
||||
1:
|
||||
// Get core ID
|
||||
// Ensure Aff0 is 4-1 at most (4 cores), and that Aff1, 2 and 3 are 0 (1 cluster only)
|
||||
mrs x0, mpidr_el1
|
||||
|
||||
Reference in New Issue
Block a user