Browse Source

bcm63xx: lzma-loader: allow bigger ramdisks

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 <[email protected]>
Álvaro Fernández Rojas 5 years ago
parent
commit
6dc01cdee8

+ 2 - 1
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)

+ 4 - 3
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