aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ath79/image/lzma-loader/src/head.S
diff options
context:
space:
mode:
Diffstat (limited to 'target/linux/ath79/image/lzma-loader/src/head.S')
-rw-r--r--target/linux/ath79/image/lzma-loader/src/head.S13
1 files changed, 13 insertions, 0 deletions
diff --git a/target/linux/ath79/image/lzma-loader/src/head.S b/target/linux/ath79/image/lzma-loader/src/head.S
index 47a7c9bd63..d414b14d11 100644
--- a/target/linux/ath79/image/lzma-loader/src/head.S
+++ b/target/linux/ath79/image/lzma-loader/src/head.S
@@ -42,6 +42,19 @@ LEAF(startup)
mtc0 t0, CP0_STATUS
ehb
+ /*
+ * Some bootloaders set the 'Kseg0 coherency algorithm' to
+ * 'Cacheable, noncoherent, write-through, no write allocate'
+ * and this cause performance issues. Let's go and change it to
+ * 'Cacheable, noncoherent, write-back, write allocate'
+ */
+ mfc0 t0, CP0_CONFIG
+ li t1, ~7 #~CONF_CM_CMASK
+ and t0, t1
+ ori t0, 3 #CONF_CM_CACHABLE_NONCOHERENT
+ mtc0 t0, CP0_CONFIG
+ nop
+
mtc0 zero, CP0_COUNT
mtc0 zero, CP0_COMPARE
ehb