summaryrefslogtreecommitdiffstats
path: root/target/linux/brcm47xx
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2017-10-08 18:31:03 +0200
committerHauke Mehrtens <hauke@hauke-m.de>2017-10-11 21:36:24 +0200
commit2909a4b78e2bce5f6b9c35361866d5e9477a1bdc (patch)
tree8b8354ffd636439c34af2626e353a7064c75de0b /target/linux/brcm47xx
parentd5cf4a5aa4a3211012967748569d9a631ee19466 (diff)
downloadopenwrt-2909a4b78e2bce5f6b9c35361866d5e9477a1bdc.tar.gz
openwrt-2909a4b78e2bce5f6b9c35361866d5e9477a1bdc.tar.bz2
openwrt-2909a4b78e2bce5f6b9c35361866d5e9477a1bdc.zip
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 <hauke@hauke-m.de>
Diffstat (limited to 'target/linux/brcm47xx')
-rw-r--r--target/linux/brcm47xx/image/lzma-loader/src/Makefile5
-rw-r--r--target/linux/brcm47xx/image/lzma-loader/src/head.S1
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 444039c558..a08fc05b9f 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 930c9ba277..50c159ce57 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)