This patch changes several cache-related pieces to be cleaner, faster or more correct. The largest point is removing the old arm_invalidate_caches() function and surrounding bootblock code to initialize SCTLR and replace it with an all-assembly function that takes care of cache and SCTLR initialization to bring the system to a known state. It runs without stack and before coreboot makes any write accesses to be as compatible as possible with whatever state the system was left in by preceeding code. This also finally fixes the dreaded icache bug that wasted hundreds of milliseconds during boot. CQ-DEPEND=CL:183877 BUG=None TEST=Snow and Nyan still boot. Time between entering romstage main() and the configure_l2ctlr() call on Nyan drops from 390ms to 0.3ms. Even with icache turned on the old implementation took 7.8ms since it cleared the cache multiple times with a slow algorithm. Change-Id: I7bb4995af8184f6383f8e3b1b870b0662bde8bd4 Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/183890 |
||
|---|---|---|
| .. | ||
| aarch64 | ||
| arm | ||
| x86 | ||