diff options
author | Mathias Kresin <dev@kresin.me> | 2021-11-05 10:41:26 +0100 |
---|---|---|
committer | Mathias Kresin <dev@kresin.me> | 2021-11-14 21:36:15 +0100 |
commit | 8fb714edd6e4340729e271139164a0163b027d68 (patch) | |
tree | 7b4df5fdf61cd273b91411e8439b66e993a8d5e9 /package/network | |
parent | b5b526285ab5588794e2ed52298a2f8dd220fc92 (diff) | |
download | upstream-8fb714edd6e4340729e271139164a0163b027d68.tar.gz upstream-8fb714edd6e4340729e271139164a0163b027d68.tar.bz2 upstream-8fb714edd6e4340729e271139164a0163b027d68.zip |
uboot-lantiq: danube: fix hanging lzma kernel uncompression
At least since gcc 7.3.0 (OpenWrt 18.06) lwr/lwl are used in the
assembly of LzmaProps_Decode. While the decission made by the compiler
looks perfect fine, it triggers some obscure hang on lantiq danube-s
v1.5 with MX29LV640EB NOR flash chips.
Only if the offset 1 is used, the hang can be observed. Using any other
offset works fine:
lwl s0,0(a1) - s0 == 0x6d000080
lwl s0,1(a1) - hangs
lwl s0,2(a1) - s0 == 0x0080xxxx
lwl s0,3(a1) - s0 == 0x80xxxxxx
It isn't clear whether it is a limitation of the flash chip, the EBU or
something else.
Force 8bit reads to prevent gcc optimizing the read with lwr/lwl
instructions.
Signed-off-by: Mathias Kresin <dev@kresin.me>
Diffstat (limited to 'package/network')
0 files changed, 0 insertions, 0 deletions