MIPS: add pre-bootloader (pbl) image support
This patch is based on ARM pbl support and allows creating a pre-bootloader binary for compressed image. For different MIPS SoCs (or even for different boards based on the same SoC) the operations carried on in start-pbl.S can be very different. The additional constraints can be imposed on the size of the boot code or the special magic labels in the beginning of the boot code; In some cases it could be necessary to show CPU is alive as early as possible (transmit a char via UART or blink a LED). So the demands for pbl start operation can be very different. E.g. malta board store boot code at the NOR flash mapped to the MIPS power-on address (0xbfc00000); it is the most simple case: we need just copy pbl image from direct-mapped flash to RAM and jump there. The XBurst-powered boards store boot code in the beginning of a NAND flash or in the beginning of SD/MMC card. In this case we must use simple and short NAND or SD/MMC access routines to copy pbl image to RAM. To meet so different demands a simple technique is selected: * MIPS pbl entry point located in file arch/mips/boot/start-pbl.S. * MIPS pbl code (see start-pbl.S) assumes that every pbl-enabled board has a arch/mips/boards/<BOARD>/include/board/board_pbl_start.h header file. This file must contain definition of the board_pbl_start macro. This macro is used as start of pbl image; * the most popular asm routines (stack setup, relocation to link address, NS16550 initialization (WIP) and so on) are containt in the arch/mips/include/asm/pbl_macros.h header file. So board pbl macro can use it if necessary. It is possible to create similar headers with macros for each specific SoC; so even if we have many different boards based on the same SoC the board_pbl_start macro for every board can be short and clear. * after board-specific initialization the stack pointer is initialized and pbl C code is started. Signed-off-by: Antony Pavlov <antonynpavlov@gmail.com> Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
WIP_next-LS
master
next
stable/v2013.05
stable/v2013.06
stable/v2013.07
stable/v2013.08
stable/v2013.10
stable/v2014.05
stable/v2014.06
stable/v2014.07
stable/v2014.08
stable/v2014.09
stable/v2014.10
stable/v2014.11
stable/v2014.12
stable/v2015.01
stable/v2015.02
stable/v2017.05
stable/v2017.06
stable/v2017.07
stable/v2017.11
stable/v2018.07
stable/v2018.09
stable/v2018.12
work/fit-support
v2020.07.0
v2020.06.0
v2020.05.0
v2020.04.0
v2020.03.0
v2020.02.0
v2020.01.0
v2019.12.0
v2019.11.0
v2019.10.0
v2019.09.0
v2019.08.1
v2019.08.0
v2019.07.0
v2019.06.1
v2019.06.0
v2019.05.0
v2019.04.0
v2019.03.0
v2019.02.0
v2019.01.0
v2018.12.0
v2018.11.0
v2018.10.0
v2018.09.1
v2018.09.0
v2018.08.1
v2018.08.0
v2018.07.2
v2018.07.1
v2018.07.0
v2018.06.0
v2018.05.0
v2018.04.0
v2018.03.0
v2018.02.0
v2018.01.0
v2017.12.0
v2017.11.0
v2017.10.0
v2017.09.0
v2017.08.0
v2017.07.1
v2017.07.0
v2017.06.2
v2017.06.1
v2017.06.0
v2017.05.4
v2017.05.3
v2017.05.2
v2017.05.1
v2017.05.0
v2017.04.0
v2017.03.0
v2017.02.0
v2017.01.0
v2016.11.0
v2016.10.0
v2016.09.0
v2016.08.0
v2016.07.0
v2016.06.0
v2016.05.0
v2016.04.0
v2016.03.0
v2016.02.0
v2016.01.0
v2015.12.0
v2015.11.0
v2015.10.0
v2015.09.0
v2015.08.0
v2015.07.0
v2015.06.0
v2015.05.0
v2015.04.0
v2015.03.0
v2015.02.0
v2015.01.0
v2014.12.0
v2014.11.0
v2014.10.0
v2014.09.0
v2014.08.0
v2014.07.0
v2014.06.0
v2014.05.0
v2014.04.0
v2014.03.0
v2014.02.0
v2014.01.0
v2013.12.0
v2013.11.0
v2013.10.1
v2013.10.0
v2013.09.0
v2013.08.1
v2013.08.0
v2013.07.0
v2013.06.1
v2013.06.0
v2013.05.1
v2013.05.0
v2013.04.0
v2013.03.0
v2013.02.0
|
---|
|
arch/mips/Makefile |
---|
arch/mips/boot/Makefile |
---|
arch/mips/boot/main_entry-pbl.c 0 → 100644 |
---|
arch/mips/boot/start-pbl.S 0 → 100644 |
---|
arch/mips/include/asm/pbl_macros.h 0 → 100644 |
---|
arch/mips/pbl/.gitignore 0 → 100644 |
---|
arch/mips/pbl/Makefile 0 → 100644 |
---|
arch/mips/pbl/piggy.gzip.S 0 → 100644 |
---|
arch/mips/pbl/piggy.lzo.S 0 → 100644 |
---|
arch/mips/pbl/zbarebox.lds.S 0 → 100644 |
---|