mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-19 13:48:06 +00:00
ar71xx: fix lzma loader performance issues
Some bootloaders set a cache cohenrency to a very slow mode. Use code from Linux kernel to set it to "Cacheable, noncoherent, write-back, write allocate". Perfomance impact is significant on TP-Link EAP245 board, kernel decompression time fall from 33 seconds to less than 1. Signed-off-by: Julien Dusser <julien.dusser@free.fr>
This commit is contained in:
parent
06e41056aa
commit
8c5702f2a0
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user