diff options
author | Matthias Schiffer <mschiffer@universe-factory.net> | 2022-03-27 20:57:01 +0200 |
---|---|---|
committer | David Bauer <mail@david-bauer.net> | 2022-10-14 23:15:12 +0200 |
commit | f7a43e46065609910bdd2fa6f97ffa1deeda222b (patch) | |
tree | 33730b5a09fee04e3d66b03917c40c5f2699258c /target/linux/mpc85xx/image/spi-loader/head.S | |
parent | c1fcca50ba924fcb2b51a03a8dbf68c2fe7ae60c (diff) | |
download | upstream-f7a43e46065609910bdd2fa6f97ffa1deeda222b.tar.gz upstream-f7a43e46065609910bdd2fa6f97ffa1deeda222b.tar.bz2 upstream-f7a43e46065609910bdd2fa6f97ffa1deeda222b.zip |
mpc85xx: add SPI kernel loader for TP-Link TL-WDR4900 v1
Similar to the lzma-loader on our MIPS targets, the spi-loader acts as
a second-stage loader that will then load and start the actual kernel.
As the TL-WDR4900 uses SPI-NOR and the P1010 family does not have support
for memory mapping of this type of flash, this loader needs to contain a
basic driver for the FSL ESPI controller.
Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
(cherry picked from commit a296055b82fbb20457273492069ce9d62009e2a1)
Diffstat (limited to 'target/linux/mpc85xx/image/spi-loader/head.S')
-rw-r--r-- | target/linux/mpc85xx/image/spi-loader/head.S | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/target/linux/mpc85xx/image/spi-loader/head.S b/target/linux/mpc85xx/image/spi-loader/head.S new file mode 100644 index 0000000000..032e914126 --- /dev/null +++ b/target/linux/mpc85xx/image/spi-loader/head.S @@ -0,0 +1,36 @@ +/* SPDX-License-Identifier: GPL-2.0-or-later */ +/* + * Copyright (C) 2022 Matthias Schiffer <mschiffer@universe-factory.net> + * + * Based on Linux arch/powerpc/boot/crt0.S, which is: + * + * Copyright (C) Paul Mackerras 1997. + */ + +#include <ppc_asm.h> + + .text + .global _start +_start: + /* Do a cache flush for our text, in case the loader didn't */ + lis r3,_text_start@ha + addi r3,r3,_text_start@l + li r4,_text_len + bl flush_cache + + /* Clear the BSS */ + lis r3,_bss_start@ha + addi r3,r3,_bss_start@l + li r4,0 + li r5,_bss_len + bl memset + + /* Set up stack */ + lis r1,_stack_top@ha + addi r1,r1,_stack_top@l + /* Establish a stack frame */ + li r0,0 + stwu r0,-16(r1) + + /* Call start */ + b start |