From 6dc01cdee8162ca5d23c67443558a051da085add Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=81lvaro=20Fern=C3=A1ndez=20Rojas?= Date: Wed, 3 Jun 2020 13:39:50 +0200 Subject: [PATCH] bcm63xx: lzma-loader: allow bigger ramdisks MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Some (older) CFEs are loaded at 0x80401000 and ramdisks are loaded at 0x80010000, which means that ramdisk size limit is 0x3F1000 (almost 4M). Therefore, current ramdisks (~4MB) are overwritting CFE in these devices, which results in a crash. This commit changes the address where ramdisks are loaded to 0x80a00000, which is the same address where kernel is loaded when booting from the flash. Therefore, lzma-loader will now be loaded at 0x80a00000, but it will still decompress the kernel at 0x80010000. Tested with huawei,hg556a-b, which has its CFE loaded at 0x80401000. Signed-off-by: Álvaro Fernández Rojas --- target/linux/bcm63xx/image/Makefile | 3 ++- target/linux/bcm63xx/image/lzma-loader/src/Makefile | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/target/linux/bcm63xx/image/Makefile b/target/linux/bcm63xx/image/Makefile index d7e2432bdb..c962e531a9 100644 --- a/target/linux/bcm63xx/image/Makefile +++ b/target/linux/bcm63xx/image/Makefile @@ -15,7 +15,8 @@ LZMA_TEXT_START = 0x81800000 # 32MB - 8MB LOADER_MAKEOPTS= \ KDIR=$(KDIR) \ - LOADADDR=$(KERNEL_LOADADDR) \ + LOADER_ADDR=$(LOADER_ENTRY) \ + KERNEL_ADDR=$(KERNEL_LOADADDR) \ RAMSIZE=$(RAMSIZE) \ LZMA_TEXT_START=$(LZMA_TEXT_START) \ CHIP_ID=$(CHIP_ID) diff --git a/target/linux/bcm63xx/image/lzma-loader/src/Makefile b/target/linux/bcm63xx/image/lzma-loader/src/Makefile index 9115f75af3..0310051a93 100644 --- a/target/linux/bcm63xx/image/lzma-loader/src/Makefile +++ b/target/linux/bcm63xx/image/lzma-loader/src/Makefile @@ -17,7 +17,8 @@ # by the Free Software Foundation. # -LOADADDR := +LOADER_ADDR := +KERNEL_ADDR := LZMA_TEXT_START := 0x80a00000 LOADER_DATA := @@ -49,7 +50,7 @@ OBJECTS := head.o loader.o cache.o board.o printf.o LzmaDecode.o ifneq ($(strip $(LOADER_DATA)),) OBJECTS += data.o -CFLAGS += -DLZMA_WRAPPER=1 -DLOADADDR=$(LOADADDR) +CFLAGS += -DLZMA_WRAPPER=1 -DLOADADDR=$(KERNEL_ADDR) endif @@ -79,7 +80,7 @@ loader2.o: loader.bin $(LD) -r -b binary --oformat $(O_FORMAT) -o $@ $< loader.elf: loader2.o - $(LD) -e startup -T loader2.lds -Ttext $(LOADADDR) -o $@ $< + $(LD) -e startup -T loader2.lds -Ttext $(LOADER_ADDR) -o $@ $< mrproper: clean