mirror of
https://github.com/hanwckf/immortalwrt-mt798x.git
synced 2025-01-09 02:43:53 +08:00
Merge Official Source
Signed-off-by: Tianling Shen <cnsztl@immortalwrt.org>
This commit is contained in:
commit
f894f223d3
@ -0,0 +1,48 @@
|
|||||||
|
From a40a6e16ed76e5e26a0f60226b64c311d4a62c9f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Mathias Kresin <dev@kresin.me>
|
||||||
|
Date: Sun, 31 Oct 2021 23:04:54 +0100
|
||||||
|
Subject: [PATCH] lzma: force 8bit reads
|
||||||
|
|
||||||
|
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>
|
||||||
|
---
|
||||||
|
lib/lzma/LzmaDec.c | 3 ++-
|
||||||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||||
|
|
||||||
|
--- a/lib/lzma/LzmaDec.c
|
||||||
|
+++ b/lib/lzma/LzmaDec.c
|
||||||
|
@@ -7,6 +7,7 @@
|
||||||
|
#include "LzmaDec.h"
|
||||||
|
|
||||||
|
#include <linux/string.h>
|
||||||
|
+#include <asm/io.h>
|
||||||
|
|
||||||
|
#define kNumTopBits 24
|
||||||
|
#define kTopValue ((UInt32)1 << kNumTopBits)
|
||||||
|
@@ -929,7 +930,7 @@ SRes LzmaProps_Decode(CLzmaProps *p, con
|
||||||
|
if (size < LZMA_PROPS_SIZE)
|
||||||
|
return SZ_ERROR_UNSUPPORTED;
|
||||||
|
else
|
||||||
|
- dicSize = data[1] | ((UInt32)data[2] << 8) | ((UInt32)data[3] << 16) | ((UInt32)data[4] << 24);
|
||||||
|
+ dicSize = readb(&data[1]) | ((UInt32)readb(&data[2]) << 8) | ((UInt32)readb(&data[3]) << 16) | ((UInt32)readb(&data[4]) << 24);
|
||||||
|
|
||||||
|
if (dicSize < LZMA_DIC_MIN)
|
||||||
|
dicSize = LZMA_DIC_MIN;
|
@ -5,9 +5,9 @@ PKG_RELEASE:=1
|
|||||||
|
|
||||||
PKG_SOURCE_PROTO:=git
|
PKG_SOURCE_PROTO:=git
|
||||||
PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git
|
PKG_SOURCE_URL=$(PROJECT_GIT)/project/netifd.git
|
||||||
PKG_SOURCE_DATE:=2021-07-26
|
PKG_SOURCE_DATE:=2021-11-27
|
||||||
PKG_SOURCE_VERSION:=440eb0647708274cc8d7d9e7c2bb0cfdfba90023
|
PKG_SOURCE_VERSION:=a68e80513abb73cc76b94b5d70d0813344fa7cd7
|
||||||
PKG_MIRROR_HASH:=eed957036ab608fdc49bdf801fc5b4405fcd2a3a5e5d3343ec39898e156c10e9
|
PKG_MIRROR_HASH:=4f2eff7a0bd4e9b278d220a4361e8948b582feab59eeedcc5eb120678aa72d0d
|
||||||
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
PKG_MAINTAINER:=Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
PKG_LICENSE:=GPL-2.0
|
PKG_LICENSE:=GPL-2.0
|
||||||
|
Loading…
x
Reference in New Issue
Block a user