From ddedcb19e52909b9de851bcdad500656069046b5 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sun, 8 Oct 2017 18:31:03 +0200 Subject: [PATCH] brcm47xx: relocate the stack in loader By default we are reusing the stack provided by CFE, like it is intended by CFE. On my WRT54GS it is located at 0x8043BF30, so a big kernel image could overwrite it. Relocate it to a different memory region which is still under the 8MB RAM, but in the higher area. We only need this memory region for the stack of the loader, Linux will set up this for its own. Signed-off-by: Hauke Mehrtens --- target/linux/brcm47xx/image/lzma-loader/src/Makefile | 5 +++-- target/linux/brcm47xx/image/lzma-loader/src/head.S | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/target/linux/brcm47xx/image/lzma-loader/src/Makefile b/target/linux/brcm47xx/image/lzma-loader/src/Makefile index 444039c5586..a08fc05b9fc 100644 --- a/target/linux/brcm47xx/image/lzma-loader/src/Makefile +++ b/target/linux/brcm47xx/image/lzma-loader/src/Makefile @@ -19,6 +19,7 @@ TEXT_START := 0x80001000 BZ_TEXT_START := 0x80600000 +BZ_STACK_START := 0x80700000 OBJCOPY := $(CROSS_COMPILE)objcopy -O binary -R .reginfo -R .note -R .comment -R .mdebug -S @@ -28,9 +29,9 @@ CFLAGS = -D__KERNEL__ -Wall -Wstrict-prototypes -Wno-trigraphs -Os \ -mabi=32 -march=mips32 -Wa,-32 -Wa,-march=mips32 -Wa,-mips32 -Wa,--trap CFLAGS += -DLOADADDR=$(TEXT_START) -D_LZMA_IN_CB -ASFLAGS = $(CFLAGS) -D__ASSEMBLY__ -DBZ_TEXT_START=$(BZ_TEXT_START) +ASFLAGS = $(CFLAGS) -D__ASSEMBLY__ -DBZ_TEXT_START=$(BZ_TEXT_START) -DBZ_STACK_START=$(BZ_STACK_START) -SEDFLAGS := s/BZ_TEXT_START/$(BZ_TEXT_START)/;s/TEXT_START/$(TEXT_START)/ +SEDFLAGS := s/BZ_TEXT_START/$(BZ_TEXT_START)/;s/BZ_STACK_START/$(BZ_STACK_START)/;s/TEXT_START/$(TEXT_START)/ OBJECTS := head.o data.o diff --git a/target/linux/brcm47xx/image/lzma-loader/src/head.S b/target/linux/brcm47xx/image/lzma-loader/src/head.S index 930c9ba2772..50c159ce573 100644 --- a/target/linux/brcm47xx/image/lzma-loader/src/head.S +++ b/target/linux/brcm47xx/image/lzma-loader/src/head.S @@ -38,6 +38,7 @@ .text LEAF(startup) .set noreorder + li sp, BZ_STACK_START addi sp, -48 sw a0, 16(sp) sw a1, 20(sp)