brcm47xx: relocate the stack in loader
authorHauke Mehrtens <hauke@hauke-m.de>
Sun, 8 Oct 2017 16:31:03 +0000 (18:31 +0200)
committerHauke Mehrtens <hauke@hauke-m.de>
Wed, 11 Oct 2017 19:36:24 +0000 (21:36 +0200)
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 <hauke@hauke-m.de>
target/linux/brcm47xx/image/lzma-loader/src/Makefile
target/linux/brcm47xx/image/lzma-loader/src/head.S

index 444039c5586e90b15d4e6e9421d36fa9a8651ad8..a08fc05b9fc22df0c0a748e67735439ddc095f58 100644 (file)
@@ -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
 
index 930c9ba27728411fe96aecc95ac6cf6bf5741f62..50c159ce573509221f9fe94f718818c05a794df8 100644 (file)
@@ -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)