bcm63xx: lzma-loader: allow bigger ramdisks
authorÁlvaro Fernández Rojas <noltari@gmail.com>
Wed, 3 Jun 2020 11:39:50 +0000 (13:39 +0200)
committerÁlvaro Fernández Rojas <noltari@gmail.com>
Wed, 3 Jun 2020 13:33:04 +0000 (15:33 +0200)
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 <noltari@gmail.com>
target/linux/bcm63xx/image/Makefile
target/linux/bcm63xx/image/lzma-loader/src/Makefile

index d7e2432bdba8308f5494ebc174e795cf231ad9e1..c962e531a9d47c577ce1f66b126b26e8fdc704e2 100644 (file)
@@ -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)
index 9115f75af375c2f806e1c5251e5ae4245bcfcb45..0310051a93027ad057e52435841a0166208d6dda 100644 (file)
@@ -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