TI: Rework SRAM definitions and maximums
PATCH 1/1 TI: Rework SRAM definitions and maximums
On all TI platforms the ROM defines a "downloaded image" area at or near the start of SRAM which is followed by a reserved area. As it is at best bad form and at worst possibly harmful in corner cases to write in this reserved area, we stop doing that by adding in the define NON_SECURE_SRAM_IMG_END to say where the end of the downloaded image area is and make SRAM_SCRATCH_SPACE_ADDR be one kilobyte before this. At current we define the end of scratch space at 0x228 bytes past the start of scratch space this this gives us a lot of room to grow. As these scratch uses are non-optional today, all targets are modified to respect this boundary.
Tested on OMAP4 Pandaboard, OMAP3 Beagle xM
--- arch/arm/include/asm/arch-am33xx/omap.h | 13 ++++++------- arch/arm/include/asm/arch-omap3/omap.h | 5 ++++- arch/arm/include/asm/arch-omap4/omap.h | 5 ++++- arch/arm/include/asm/arch-omap5/omap.h | 6 +++++- include/configs/am3517_crane.h | 3 ++- include/configs/am3517_evm.h | 3 ++- include/configs/am43xx_evm.h | 3 --- include/configs/am57xx_evm.h | 2 -- include/configs/bur_am335x_common.h | 6 ++++-- include/configs/cm_t35.h | 3 ++- include/configs/cm_t43.h | 1 - include/configs/dra7xx_evm.h | 2 -- include/configs/kc1.h | 3 ++- include/configs/omap3_evm.h | 3 ++- include/configs/omap3_igep00x0.h | 8 ++++---- include/configs/omap3_logic.h | 10 ++++++---- include/configs/omap3_overo.h | 8 +++++--- include/configs/siemens-am33x-common.h | 3 ++- include/configs/sniper.h | 3 ++- include/configs/tam3517-common.h | 3 ++- include/configs/tao3530.h | 3 ++- include/configs/ti814x_evm.h | 3 ++- include/configs/ti816x_evm.h | 3 ++- include/configs/ti_am335x_common.h | 1 - include/configs/ti_armv7_common.h | 21 +++++++++++++-------- include/configs/ti_omap3_common.h | 1 - include/configs/ti_omap4_common.h | 1 - include/configs/ti_omap5_common.h | 7 ------- include/configs/tricorder.h | 3 ++- 29 files changed, 75 insertions(+), 61 deletions(-)
arch/arm/include/asm/arch-am33xx/omap.h +6 -7
@@ -15,24 +15,23 @@#ifndef _OMAP_H_#define _OMAP_H_ +#include <linux/sizes.h> +#ifdef CONFIG_AM33XX #define NON_SECURE_SRAM_START 0x402F0400#define NON_SECURE_SRAM_END 0x40310000 -#define SRAM_SCRATCH_SPACE_ADDR 0x4030B800 +#define NON_SECURE_SRAM_IMG_END 0x4030B800#elif defined(CONFIG_TI81XX )#define NON_SECURE_SRAM_START 0x40300000#define NON_SECURE_SRAM_END 0x40320000 -#define SRAM_SCRATCH_SPACE_ADDR 0x4031B800 +#define NON_SECURE_SRAM_IMG_END 0x4031B800#elif defined(CONFIG_AM43XX )#define NON_SECURE_SRAM_START 0x402F0400#define NON_SECURE_SRAM_END 0x40340000 -#define SRAM_SCRATCH_SPACE_ADDR 0x40337C00 -#define AM4372_BOARD_NAME_START SRAM_SCRATCH_SPACE_ADDR -#define AM4372_BOARD_NAME_END SRAM_SCRATCH_SPACE_ADDR + 0xC -#define AM4372_BOARD_VERSION_START SRAM_SCRATCH_SPACE_ADDR + 0xD -#define AM4372_BOARD_VERSION_END SRAM_SCRATCH_SPACE_ADDR + 0x14 +#define NON_SECURE_SRAM_IMG_END 0x40337DE0#define QSPI_BASE 0x47900000#endif +#define SRAM_SCRATCH_SPACE_ADDR (NON_SECURE_SRAM_IMG_END - SZ_1K)/* Boot parameters */ #ifndef __ASSEMBLY__
arch/arm/include/asm/arch-omap3/omap.h +4 -1
@@ -10,6 +10,8 @@#ifndef _OMAP3_H_#define _OMAP3_H_ +#include <linux/sizes.h> +/* Stuff on L3 Interconnect */ #define SMX_APE_BASE 0x68000000
@@ -145,7 +147,8 @@ struct gpio {#define NON_SECURE_SRAM_START 0x40208000/* Works for GP & EMU */ #define NON_SECURE_SRAM_END 0x40210000 -#define SRAM_SCRATCH_SPACE_ADDR 0x4020E000 +#define NON_SECURE_SRAM_IMG_END 0x4020F000 +#define SRAM_SCRATCH_SPACE_ADDR (NON_SECURE_SRAM_IMG_END - SZ_1K)#define LOW_LEVEL_SRAM_STACK 0x4020FFFC
arch/arm/include/asm/arch-omap4/omap.h +4 -1
@@ -19,6 +19,8 @@#include <asm/types.h> #endif /* !(__KERNEL_STRICT_NAMES || __ASSEMBLY__) */ +#include <linux/sizes.h> +/* * L4 Peripherals - L4 Wakeup and L4 Core now */
@@ -109,7 +111,8 @@ struct s32ktimer {*/ #define NON_SECURE_SRAM_START 0x40304000#define NON_SECURE_SRAM_END 0x4030E000/* Not inclusive */ -#define SRAM_SCRATCH_SPACE_ADDR 0x4030C000 +#define NON_SECURE_SRAM_IMG_END 0x4030C000 +#define SRAM_SCRATCH_SPACE_ADDR (NON_SECURE_SRAM_IMG_END - SZ_1K)/* base address for indirect vectors (internal boot mode) */ #define SRAM_ROM_VECT_BASE 0x4030D000
arch/arm/include/asm/arch-omap5/omap.h +5 -1
@@ -16,6 +16,8 @@#include <asm/types.h> #endif /* !(__KERNEL_STRICT_NAMES || __ASSEMBLY__) */ +#include <linux/sizes.h> +/* * L4 Peripherals - L4 Wakeup and L4 Core now */
@@ -186,11 +188,13 @@ struct s32ktimer {#if defined(CONFIG_DRA7XX ) || defined(CONFIG_AM57XX )#define NON_SECURE_SRAM_START 0x40300000#define NON_SECURE_SRAM_END 0x40380000/* Not inclusive */ +#define NON_SECURE_SRAM_IMG_END 0x4037E000#else #define NON_SECURE_SRAM_START 0x40300000#define NON_SECURE_SRAM_END 0x40320000/* Not inclusive */ +#define NON_SECURE_SRAM_IMG_END 0x4031E000#endif -#define SRAM_SCRATCH_SPACE_ADDR 0x4031E000 +#define SRAM_SCRATCH_SPACE_ADDR (NON_SECURE_SRAM_IMG_END - SZ_1K)/* base address for indirect vectors (internal boot mode) */ #define SRAM_ROM_VECT_BASE 0x4031F000
include/configs/am3517_crane.h +2 -1
@@ -279,7 +279,8 @@#define CONFIG_SPL_BOARD_INIT #define CONFIG_SPL_NAND_SIMPLE #define CONFIG_SPL_TEXT_BASE 0x40200800 -#define CONFIG_SPL_MAX_SIZE (54 * 1024)/* 8 KB for stack */ +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE 0x80000/* 512 KB */
include/configs/am3517_evm.h +2 -1
@@ -337,7 +337,8 @@#define CONFIG_SPL_BOARD_INIT #define CONFIG_SPL_NAND_SIMPLE #define CONFIG_SPL_TEXT_BASE 0x40200000 -#define CONFIG_SPL_MAX_SIZE (64 * 1024) +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE 0x80000/* 512 KB */
include/configs/am43xx_evm.h +0 -3
@@ -38,9 +38,6 @@/* SPL defines. */ #define CONFIG_SPL_TEXT_BASE CONFIG_ISW_ENTRY_ADDR -#define CONFIG_SPL_MAX_SIZE (NON_SECURE_SRAM_END - \ - CONFIG_PUB_ROM_DATA_SIZE - \ - CONFIG_SPL_TEXT_BASE)#define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + \ (128 << 20))#define CONFIG_SPL_POWER_SUPPORT
include/configs/am57xx_evm.h +0 -2
@@ -102,8 +102,6 @@#ifdef CONFIG_SPL_BUILD #undef CONFIG_DM_SPI#undef CONFIG_DM_SPI_FLASH -#undef CONFIG_SPL_MAX_SIZE -#define CONFIG_SPL_MAX_SIZE (256 << 10)/* 256 KiB */ #endif /* SPI SPL */
include/configs/bur_am335x_common.h +4 -2
@@ -47,10 +47,12 @@* area between 0x402F0400 and 0x4030B800 as a download area and * 0x4030B800 to 0x4030CE00 as a public stack area. The ROM also * supports X-MODEM loading via UART, and we leverage this and then use -* Y-MODEM to load u-boot.img, when booted over UART. +* Y-MODEM to load u-boot.img, when booted over UART. We must also include +* the scratch space that U-Boot uses in SRAM. */ #define CONFIG_SPL_TEXT_BASE 0x402F0400 -#define CONFIG_SPL_MAX_SIZE (0x4030B800 - CONFIG_SPL_TEXT_BASE) +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)/* * Since SPL did pll and ddr initialization for us,
include/configs/cm_t35.h +2 -1
@@ -344,7 +344,8 @@#define CONFIG_SYS_NAND_U_BOOT_OFFS 0x80000#define CONFIG_SPL_TEXT_BASE 0x40200800 -#define CONFIG_SPL_MAX_SIZE (54 * 1024)/* 8 KB for stack */ +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)/* * Use 0x80008000 as TEXT_BASE here for compatibility reasons with the
include/configs/cm_t43.h +0 -1
@@ -154,7 +154,6 @@/* SPL defines. */ #define CONFIG_SPL_TEXT_BASE 0x40300350 -#define CONFIG_SPL_MAX_SIZE (64 * 1024)#define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + (128 << 20))#define CONFIG_SPL_POWER_SUPPORT #define CONFIG_SYS_SPI_U_BOOT_OFFS (256 * 1024)
include/configs/dra7xx_evm.h +0 -2
@@ -185,8 +185,6 @@/* In SPL, use the environment and discard MMC support for space. */ #ifdef CONFIG_SPL_BUILD #undef CONFIG_SPL_MMC_SUPPORT -#undef CONFIG_SPL_MAX_SIZE -#define CONFIG_SPL_MAX_SIZE (64 << 10)/* 64 KiB */ #endif #define CONFIG_SPL_ENV_SUPPORT #define CONFIG_ENV_IS_IN_SPI_FLASH
include/configs/kc1.h +2 -1
@@ -120,7 +120,8 @@#define CONFIG_SPL_FRAMEWORK #define CONFIG_SPL_TEXT_BASE 0x40300000 -#define CONFIG_SPL_MAX_SIZE (48 * 1024) +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE (512 * 1024)#define CONFIG_SYS_SPL_MALLOC_START 0x80208000
include/configs/omap3_evm.h +2 -1
@@ -345,7 +345,8 @@/* Defines for SPL */ #define CONFIG_SPL_FRAMEWORK #define CONFIG_SPL_TEXT_BASE 0x40200800 -#define CONFIG_SPL_MAX_SIZE (54 * 1024)/* 8 KB for stack */ +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE 0x80000/* 512 KB */
include/configs/omap3_igep00x0.h +4 -4
@@ -16,11 +16,11 @@#include <configs/ti_omap3_common.h> #include <asm/mach-types.h> -/* SRAM starts at 0x40200000 and ends at 0x4020FFFF (64KB) */ -#undef CONFIG_SPL_MAX_SIZE +/* +* We are only ever GP parts and will utilize all of the "downloaded image" +* area in SRAM which starts at 0x40200000 and ends at 0x4020FFFF (64KB). +*/ #undef CONFIG_SPL_TEXT_BASE - -#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_TEXT_BASE 0x40200000/*
include/configs/omap3_logic.h +6 -4
@@ -30,11 +30,13 @@#include <configs/ti_omap3_common.h> -/* Override default SPL info to minimize empty space and allow BCH8 in SPL */ +/* +* We are only ever GP parts and will utilize all of the "downloaded image" +* area in SRAM which starts at 0x40200000 and ends at 0x4020FFFF (64KB) in +* order to allow for BCH8 to fit in. +*/ #undef CONFIG_SPL_TEXT_BASE -#undef CONFIG_SPL_MAX_SIZE -#define CONFIG_SPL_TEXT_BASE 0x40200000 -#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - CONFIG_SPL_TEXT_BASE) +#define CONFIG_SPL_TEXT_BASE 0x40200000/* Display CPU and Board information */
include/configs/omap3_overo.h +5 -3
@@ -11,10 +11,12 @@#define CONFIG_NAND #include <configs/ti_omap3_common.h> -#undef CONFIG_SPL_MAX_SIZE +/* +* We are only ever GP parts and will utilize all of the "downloaded image" +* area in SRAM which starts at 0x40200000 and ends at 0x4020FFFF (64KB). +*/ #undef CONFIG_SPL_TEXT_BASE -#define CONFIG_SPL_TEXT_BASE 0x40200000 -#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - CONFIG_SPL_TEXT_BASE) +#define CONFIG_SPL_TEXT_BASE 0x40200000#define CONFIG_BCH
include/configs/siemens-am33x-common.h +2 -1
@@ -126,7 +126,8 @@/* Defines for SPL */ #define CONFIG_SPL_FRAMEWORK #define CONFIG_SPL_TEXT_BASE 0x402F0400 -#define CONFIG_SPL_MAX_SIZE (101 * 1024) +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE 0x80000/* 512 KB */
include/configs/sniper.h +2 -1
@@ -128,7 +128,8 @@#define CONFIG_SPL_FRAMEWORK #define CONFIG_SPL_TEXT_BASE 0x40200000 -#define CONFIG_SPL_MAX_SIZE (54 * 1024) +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE (512 * 1024)#define CONFIG_SYS_SPL_MALLOC_START 0x80208000
include/configs/tam3517-common.h +2 -1
@@ -220,7 +220,8 @@#define CONFIG_SPL_LDSCRIPT "$(CPUDIR)/omap-common/u-boot-spl.lds"#define CONFIG_SPL_TEXT_BASE 0x40200000/*CONFIG_SYS_SRAM_START*/ -#define CONFIG_SPL_MAX_SIZE (54 * 1024)/* 8 KB for stack */ +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_STACK LOW_LEVEL_SRAM_STACK#define CONFIG_SYS_SPL_MALLOC_START 0x8f000000
include/configs/tao3530.h +2 -1
@@ -328,7 +328,8 @@#define CONFIG_SYS_NAND_U_BOOT_OFFS 0x80000#define CONFIG_SPL_TEXT_BASE 0x40200800 -#define CONFIG_SPL_MAX_SIZE (54 * 1024)/* 8 KB for stack */ +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)/* * Use 0x80008000 as TEXT_BASE here for compatibility reasons with the
include/configs/ti814x_evm.h +2 -1
@@ -159,7 +159,8 @@/* Defines for SPL */ #define CONFIG_SPL_FRAMEWORK #define CONFIG_SPL_TEXT_BASE 0x40300000 -#define CONFIG_SPL_MAX_SIZE ((128 - 18) * 1024) +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE 0x80000/* 512 KB */
include/configs/ti816x_evm.h +2 -1
@@ -125,7 +125,8 @@/* Defines for SPL */ #define CONFIG_SPL_FRAMEWORK #define CONFIG_SPL_TEXT_BASE 0x40400000 -#define CONFIG_SPL_MAX_SIZE ((128 - 18) * 1024) +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE 0x80000/* 512 KB */
include/configs/ti_am335x_common.h +0 -1
@@ -59,7 +59,6 @@* Y-MODEM to load u-boot.img, when booted over UART. */ #define CONFIG_SPL_TEXT_BASE 0x402F0400 -#define CONFIG_SPL_MAX_SIZE (0x4030B800 - CONFIG_SPL_TEXT_BASE)#define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + \ (128 << 20))
include/configs/ti_armv7_common.h +13 -8
@@ -212,14 +212,14 @@/* * Place the image at the start of the ROM defined image space (per * CONFIG_SPL_TEXT_BASE and we limit our size to the ROM-defined -* downloaded image area. We initalize DRAM as soon as we can so that -* we can place stack, malloc and BSS there. We load U-Boot itself into -* memory at 0x80800000 for legacy reasons (to not conflict with older -* SPLs). We have our BSS be placed 2MiB after this, to allow for the -* default Linux kernel address of 0x80008000 to work with most sized -* kernels, in the Falcon Mode case. We have the SPL malloc pool at the -* end of the BSS area. We suggest that the stack be placed at 32MiB after -* the start of DRAM to allow room for all of the above (handled in Kconfig). +* downloaded image area minus 1KiB for scratch space. We initalize DRAM as +* soon as we can so that we can place stack, malloc and BSS there. We load +* U-Boot itself into memory at 0x80800000 for legacy reasons (to not conflict +* with older SPLs). We have our BSS be placed 2MiB after this, to allow for +* the default Linux kernel address of 0x80008000 to work with most sized +* kernels, in the Falcon Mode case. We have the SPL malloc pool at the end +* of the BSS area. We suggest that the stack be placed@32MiB after the +* start of DRAM to allow room for all of the above (handled in Kconfig). */ #ifndef CONFIG_SYS_TEXT_BASE #define CONFIG_SYS_TEXT_BASE 0x80800000
@@ -233,6 +233,11 @@ CONFIG_SPL_BSS_MAX_SIZE)#define CONFIG_SYS_SPL_MALLOC_SIZE CONFIG_SYS_MALLOC_LEN#endif +#ifndef CONFIG_SPL_MAX_SIZE +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE) +#endif +/* RAW SD card / eMMC locations. */ #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300/* address 0x60000 */
include/configs/ti_omap3_common.h +0 -1
@@ -70,7 +70,6 @@/* SPL */ #define CONFIG_SPL_TEXT_BASE 0x40200800 -#define CONFIG_SPL_MAX_SIZE (54 * 1024)#define CONFIG_SPL_LDSCRIPT "$(CPUDIR)/omap-common/u-boot-spl.lds"#define CONFIG_SPL_POWER_SUPPORT #define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + \
include/configs/ti_omap4_common.h +0 -1
@@ -152,7 +152,6 @@* So moving TEXT_BASE down to non-HS limit. */ #define CONFIG_SPL_TEXT_BASE 0x40300000 -#define CONFIG_SPL_MAX_SIZE (0x4030C000 - CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_DISPLAY_PRINT #define CONFIG_SPL_LDSCRIPT "$(CPUDIR)/omap-common/u-boot-spl.lds"#define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + \
include/configs/ti_omap5_common.h +0 -7
@@ -156,13 +156,6 @@#define CONFIG_SPL_TEXT_BASE 0x40300000#endif -/* DRA7xx/AM57xx have 512K of SRAM, OMAP5 only 128K */ -#if defined(CONFIG_DRA7XX ) || defined(CONFIG_AM57XX ) -#define TI_ROM_BOOT_LOAD_END 0x4037E000 -#else -#define TI_ROM_BOOT_LOAD_END 0x4031E000 -#endif -#define CONFIG_SPL_MAX_SIZE (TI_ROM_BOOT_LOAD_END - CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_DISPLAY_PRINT #define CONFIG_SPL_LDSCRIPT "$(CPUDIR)/omap-common/u-boot-spl.lds"#define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + \
include/configs/tricorder.h +2 -1
@@ -340,7 +340,8 @@#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300/* address 0x60000 */ #define CONFIG_SPL_TEXT_BASE 0x40200000/*CONFIG_SYS_SRAM_START*/ -#define CONFIG_SPL_MAX_SIZE (57 * 1024)/* 7 KB for stack */ +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000/*CONFIG_SYS_SDRAM_BASE*/ #define CONFIG_SPL_BSS_MAX_SIZE 0x80000
Signature · 1 line
1.9.1
PATCH 1/1 TI: Rework SRAM definitions and maximums
Quoted 11 lines · Tom Rini
On all TI platforms the ROM defines a "downloaded image" area at or near the start of SRAM which is followed by a reserved area. As it is at best bad form and at worst possibly harmful in corner cases to write in this reserved area, we stop doing that by adding in the define
NON_SECURE_SRAM_IMG_ENDto say where the end of the downloaded image area is and makeSRAM_SCRATCH_SPACE_ADDRbe one kilobyte before this. At current we define the end of scratch space at0x228bytes past the start of scratch space this this gives us a lot of room to grow. As these scratch uses are non-optional today, all targets are modified to respect this boundary.
Quoted 2 lines
Tested on OMAP4 Pandaboard, OMAP3 Beagle xM
Tested on LogicPD DM3730 Torpedo
Tested by Adam Ford <[email protected]>
Quoted 574 lines
Cc Albert Aribaud <[email protected]>Cc Nagendra T S <[email protected]>Cc Vaibhav Hiremath <[email protected]>Cc Lokesh Vutla <[email protected]>Cc Felipe Balbi <[email protected]>Cc Igor Grinberg <[email protected]>Cc Nikita Kiryanov <[email protected]>Cc Paul Kocialkowski <[email protected]>Cc Enric Balletbo i Serra <[email protected]>Cc Adam Ford <[email protected]>Cc Steve Sakoman <[email protected]>Cc Stefan Roese <[email protected]>Cc Thomas Weber <[email protected]>Cc Hannes Schmelzer <[email protected]>Cc Thomas Chou <[email protected]>Cc Masahiro Yamada <[email protected]>Cc Simon Glass <[email protected]>Cc Joe Hershberger <[email protected]>Cc Sam Protsenko <[email protected]>Cc Heiko Schocher <[email protected]>Cc Samuel Egli <[email protected]>Cc Michal Simek <[email protected]>Cc Wolfgang Denk <[email protected]>Cc Mateusz Kulikowski <[email protected]>Cc Ben Whitten <[email protected]>Cc Stefano Babic <[email protected]>Cc Bin Meng <[email protected]>Cc Sekhar Nori <[email protected]>Cc Mugunthan V N <[email protected]>Cc "B, Ravi" <[email protected]>Cc "Matwey V. Kornilov" <[email protected]>Cc Ladislav Michl <[email protected]>Cc Ash Charles <[email protected]>Cc "Kipisz, Steven" <[email protected]>Cc Daniel Allred <[email protected]>Signed-off-by Tom Rini <[email protected]>--- arch/arm/include/asm/arch-am33xx/omap.h | 13 ++++++------- arch/arm/include/asm/arch-omap3/omap.h | 5 ++++- arch/arm/include/asm/arch-omap4/omap.h | 5 ++++- arch/arm/include/asm/arch-omap5/omap.h | 6 +++++- include/configs/am3517_crane.h | 3 ++- include/configs/am3517_evm.h | 3 ++- include/configs/am43xx_evm.h | 3 --- include/configs/am57xx_evm.h | 2 -- include/configs/bur_am335x_common.h | 6 ++++-- include/configs/cm_t35.h | 3 ++- include/configs/cm_t43.h | 1 - include/configs/dra7xx_evm.h | 2 -- include/configs/kc1.h | 3 ++- include/configs/omap3_evm.h | 3 ++- include/configs/omap3_igep00x0.h | 8 ++++---- include/configs/omap3_logic.h | 10 ++++++---- include/configs/omap3_overo.h | 8 +++++--- include/configs/siemens-am33x-common.h | 3 ++- include/configs/sniper.h | 3 ++- include/configs/tam3517-common.h | 3 ++- include/configs/tao3530.h | 3 ++- include/configs/ti814x_evm.h | 3 ++- include/configs/ti816x_evm.h | 3 ++- include/configs/ti_am335x_common.h | 1 - include/configs/ti_armv7_common.h | 21 +++++++++++++-------- include/configs/ti_omap3_common.h | 1 - include/configs/ti_omap4_common.h | 1 - include/configs/ti_omap5_common.h | 7 ------- include/configs/tricorder.h | 3 ++- 29 files changed, 75 insertions(+), 61 deletions(-)arch/arm/include/asm/arch-am33xx/omap.h +6
-7@@ -15,24 +15,23 @@#ifndef _OMAP_H_#define _OMAP_H_ +#include <linux/sizes.h> +#ifdef CONFIG_AM33XX #define NON_SECURE_SRAM_START 0x402F0400#define NON_SECURE_SRAM_END 0x40310000 -#define SRAM_SCRATCH_SPACE_ADDR 0x4030B800 +#define NON_SECURE_SRAM_IMG_END 0x4030B800#elif defined(CONFIG_TI81XX )#define NON_SECURE_SRAM_START 0x40300000#define NON_SECURE_SRAM_END 0x40320000 -#define SRAM_SCRATCH_SPACE_ADDR 0x4031B800 +#define NON_SECURE_SRAM_IMG_END 0x4031B800#elif defined(CONFIG_AM43XX )#define NON_SECURE_SRAM_START 0x402F0400#define NON_SECURE_SRAM_END 0x40340000 -#define SRAM_SCRATCH_SPACE_ADDR 0x40337C00 -#define AM4372_BOARD_NAME_START SRAM_SCRATCH_SPACE_ADDR -#define AM4372_BOARD_NAME_END SRAM_SCRATCH_SPACE_ADDR + 0xC -#define AM4372_BOARD_VERSION_START SRAM_SCRATCH_SPACE_ADDR + 0xD -#define AM4372_BOARD_VERSION_END SRAM_SCRATCH_SPACE_ADDR + 0x14 +#define NON_SECURE_SRAM_IMG_END 0x40337DE0#define QSPI_BASE 0x47900000#endif +#define SRAM_SCRATCH_SPACE_ADDR (NON_SECURE_SRAM_IMG_END - SZ_1K)/* Boot parameters */ #ifndef __ASSEMBLY__arch/arm/include/asm/arch-omap3/omap.h +4
-1@@ -10,6 +10,8 @@#ifndef _OMAP3_H_#define _OMAP3_H_ +#include <linux/sizes.h> +/* Stuff on L3 Interconnect */ #define SMX_APE_BASE 0x68000000@@ -145,7 +147,8 @@ struct gpio {#define NON_SECURE_SRAM_START 0x40208000/* Works for GP & EMU */ #define NON_SECURE_SRAM_END 0x40210000 -#define SRAM_SCRATCH_SPACE_ADDR 0x4020E000 +#define NON_SECURE_SRAM_IMG_END 0x4020F000 +#define SRAM_SCRATCH_SPACE_ADDR (NON_SECURE_SRAM_IMG_END - SZ_1K)#define LOW_LEVEL_SRAM_STACK 0x4020FFFCarch/arm/include/asm/arch-omap4/omap.h +4
-1@@ -19,6 +19,8 @@#include <asm/types.h> #endif /* !(__KERNEL_STRICT_NAMES || __ASSEMBLY__) */ +#include <linux/sizes.h> +/* * L4 Peripherals - L4 Wakeup and L4 Core now */ @@ -109,7 +111,8 @@ struct s32ktimer {*/ #define NON_SECURE_SRAM_START 0x40304000#define NON_SECURE_SRAM_END 0x4030E000/* Not inclusive */ -#define SRAM_SCRATCH_SPACE_ADDR 0x4030C000 +#define NON_SECURE_SRAM_IMG_END 0x4030C000 +#define SRAM_SCRATCH_SPACE_ADDR (NON_SECURE_SRAM_IMG_END - SZ_1K)/* base address for indirect vectors (internal boot mode) */ #define SRAM_ROM_VECT_BASE 0x4030D000arch/arm/include/asm/arch-omap5/omap.h +5
-1@@ -16,6 +16,8 @@#include <asm/types.h> #endif /* !(__KERNEL_STRICT_NAMES || __ASSEMBLY__) */ +#include <linux/sizes.h> +/* * L4 Peripherals - L4 Wakeup and L4 Core now */ @@ -186,11 +188,13 @@ struct s32ktimer {#if defined(CONFIG_DRA7XX ) || defined(CONFIG_AM57XX )#define NON_SECURE_SRAM_START 0x40300000#define NON_SECURE_SRAM_END 0x40380000/* Not inclusive */ +#define NON_SECURE_SRAM_IMG_END 0x4037E000#else #define NON_SECURE_SRAM_START 0x40300000#define NON_SECURE_SRAM_END 0x40320000/* Not inclusive */ +#define NON_SECURE_SRAM_IMG_END 0x4031E000#endif -#define SRAM_SCRATCH_SPACE_ADDR 0x4031E000 +#define SRAM_SCRATCH_SPACE_ADDR (NON_SECURE_SRAM_IMG_END - SZ_1K)/* base address for indirect vectors (internal boot mode) */ #define SRAM_ROM_VECT_BASE 0x4031F000include/configs/am3517_crane.h +2
-1@@ -279,7 +279,8 @@#define CONFIG_SPL_BOARD_INIT #define CONFIG_SPL_NAND_SIMPLE #define CONFIG_SPL_TEXT_BASE 0x40200800 -#define CONFIG_SPL_MAX_SIZE (54 * 1024)/* 8 KB for stack */ +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE 0x80000/* 512 KB */ include/configs/am3517_evm.h +2
-1@@ -337,7 +337,8 @@#define CONFIG_SPL_BOARD_INIT #define CONFIG_SPL_NAND_SIMPLE #define CONFIG_SPL_TEXT_BASE 0x40200000 -#define CONFIG_SPL_MAX_SIZE (64 * 1024) +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE 0x80000/* 512 KB */ include/configs/am43xx_evm.h +0
-3@@ -38,9 +38,6 @@/* SPL defines. */ #define CONFIG_SPL_TEXT_BASE CONFIG_ISW_ENTRY_ADDR -#define CONFIG_SPL_MAX_SIZE (NON_SECURE_SRAM_END - \ - CONFIG_PUB_ROM_DATA_SIZE - \ - CONFIG_SPL_TEXT_BASE)#define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + \ (128 << 20))#define CONFIG_SPL_POWER_SUPPORT include/configs/am57xx_evm.h +0
-2@@ -102,8 +102,6 @@#ifdef CONFIG_SPL_BUILD #undef CONFIG_DM_SPI#undef CONFIG_DM_SPI_FLASH -#undef CONFIG_SPL_MAX_SIZE -#define CONFIG_SPL_MAX_SIZE (256 << 10)/* 256 KiB */ #endif /* SPI SPL */ include/configs/bur_am335x_common.h +4
-2@@ -47,10 +47,12 @@* area between 0x402F0400 and 0x4030B800 as a download area and * 0x4030B800 to 0x4030CE00 as a public stack area. The ROM also * supports X-MODEM loading via UART, and we leverage this and then use -* Y-MODEM to load u-boot.img, when booted over UART. +* Y-MODEM to load u-boot.img, when booted over UART. We must also include +* the scratch space that U-Boot uses in SRAM. */ #define CONFIG_SPL_TEXT_BASE 0x402F0400 -#define CONFIG_SPL_MAX_SIZE (0x4030B800 - CONFIG_SPL_TEXT_BASE) +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)/* * Since SPL did pll and ddr initialization for us, include/configs/cm_t35.h +2
-1@@ -344,7 +344,8 @@#define CONFIG_SYS_NAND_U_BOOT_OFFS 0x80000#define CONFIG_SPL_TEXT_BASE 0x40200800 -#define CONFIG_SPL_MAX_SIZE (54 * 1024)/* 8 KB for stack */ +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)/* * Use 0x80008000 as TEXT_BASE here for compatibility reasons with the include/configs/cm_t43.h +0
-1@@ -154,7 +154,6 @@/* SPL defines. */ #define CONFIG_SPL_TEXT_BASE 0x40300350 -#define CONFIG_SPL_MAX_SIZE (64 * 1024)#define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + (128 << 20))#define CONFIG_SPL_POWER_SUPPORT #define CONFIG_SYS_SPI_U_BOOT_OFFS (256 * 1024)include/configs/dra7xx_evm.h +0
-2@@ -185,8 +185,6 @@/* In SPL, use the environment and discard MMC support for space. */ #ifdef CONFIG_SPL_BUILD #undef CONFIG_SPL_MMC_SUPPORT -#undef CONFIG_SPL_MAX_SIZE -#define CONFIG_SPL_MAX_SIZE (64 << 10)/* 64 KiB */ #endif #define CONFIG_SPL_ENV_SUPPORT #define CONFIG_ENV_IS_IN_SPI_FLASH include/configs/kc1.h +2
-1@@ -120,7 +120,8 @@#define CONFIG_SPL_FRAMEWORK #define CONFIG_SPL_TEXT_BASE 0x40300000 -#define CONFIG_SPL_MAX_SIZE (48 * 1024) +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE (512 * 1024)#define CONFIG_SYS_SPL_MALLOC_START 0x80208000include/configs/omap3_evm.h +2
-1@@ -345,7 +345,8 @@/* Defines for SPL */ #define CONFIG_SPL_FRAMEWORK #define CONFIG_SPL_TEXT_BASE 0x40200800 -#define CONFIG_SPL_MAX_SIZE (54 * 1024)/* 8 KB for stack */ +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE 0x80000/* 512 KB */ include/configs/omap3_igep00x0.h +4
-4@@ -16,11 +16,11 @@#include <configs/ti_omap3_common.h> #include <asm/mach-types.h> -/* SRAM starts at 0x40200000 and ends at 0x4020FFFF (64KB) */ -#undef CONFIG_SPL_MAX_SIZE +/* +* We are only ever GP parts and will utilize all of the "downloaded image" +* area in SRAM which starts at 0x40200000 and ends at 0x4020FFFF (64KB). +*/ #undef CONFIG_SPL_TEXT_BASE - -#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_TEXT_BASE 0x40200000/* include/configs/omap3_logic.h +6
-4@@ -30,11 +30,13 @@#include <configs/ti_omap3_common.h> -/* Override default SPL info to minimize empty space and allow BCH8 in SPL */ +/* +* We are only ever GP parts and will utilize all of the "downloaded image" +* area in SRAM which starts at 0x40200000 and ends at 0x4020FFFF (64KB) in +* order to allow for BCH8 to fit in. +*/ #undef CONFIG_SPL_TEXT_BASE -#undef CONFIG_SPL_MAX_SIZE -#define CONFIG_SPL_TEXT_BASE 0x40200000 -#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - CONFIG_SPL_TEXT_BASE) +#define CONFIG_SPL_TEXT_BASE 0x40200000/* Display CPU and Board information */ include/configs/omap3_overo.h +5
-3@@ -11,10 +11,12 @@#define CONFIG_NAND #include <configs/ti_omap3_common.h> -#undef CONFIG_SPL_MAX_SIZE +/* +* We are only ever GP parts and will utilize all of the "downloaded image" +* area in SRAM which starts at 0x40200000 and ends at 0x4020FFFF (64KB). +*/ #undef CONFIG_SPL_TEXT_BASE -#define CONFIG_SPL_TEXT_BASE 0x40200000 -#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - CONFIG_SPL_TEXT_BASE) +#define CONFIG_SPL_TEXT_BASE 0x40200000#define CONFIG_BCH include/configs/siemens-am33x-common.h +2
-1@@ -126,7 +126,8 @@/* Defines for SPL */ #define CONFIG_SPL_FRAMEWORK #define CONFIG_SPL_TEXT_BASE 0x402F0400 -#define CONFIG_SPL_MAX_SIZE (101 * 1024) +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE 0x80000/* 512 KB */ include/configs/sniper.h +2
-1@@ -128,7 +128,8 @@#define CONFIG_SPL_FRAMEWORK #define CONFIG_SPL_TEXT_BASE 0x40200000 -#define CONFIG_SPL_MAX_SIZE (54 * 1024) +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE (512 * 1024)#define CONFIG_SYS_SPL_MALLOC_START 0x80208000include/configs/tam3517-common.h +2
-1@@ -220,7 +220,8 @@#define CONFIG_SPL_LDSCRIPT "$(CPUDIR)/omap-common/u-boot-spl.lds"#define CONFIG_SPL_TEXT_BASE 0x40200000/*CONFIG_SYS_SRAM_START*/ -#define CONFIG_SPL_MAX_SIZE (54 * 1024)/* 8 KB for stack */ +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_STACK LOW_LEVEL_SRAM_STACK#define CONFIG_SYS_SPL_MALLOC_START 0x8f000000include/configs/tao3530.h +2
-1@@ -328,7 +328,8 @@#define CONFIG_SYS_NAND_U_BOOT_OFFS 0x80000#define CONFIG_SPL_TEXT_BASE 0x40200800 -#define CONFIG_SPL_MAX_SIZE (54 * 1024)/* 8 KB for stack */ +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)/* * Use 0x80008000 as TEXT_BASE here for compatibility reasons with the include/configs/ti814x_evm.h +2
-1@@ -159,7 +159,8 @@/* Defines for SPL */ #define CONFIG_SPL_FRAMEWORK #define CONFIG_SPL_TEXT_BASE 0x40300000 -#define CONFIG_SPL_MAX_SIZE ((128 - 18) * 1024) +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE 0x80000/* 512 KB */ include/configs/ti816x_evm.h +2
-1@@ -125,7 +125,8 @@/* Defines for SPL */ #define CONFIG_SPL_FRAMEWORK #define CONFIG_SPL_TEXT_BASE 0x40400000 -#define CONFIG_SPL_MAX_SIZE ((128 - 18) * 1024) +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE 0x80000/* 512 KB */ include/configs/ti_am335x_common.h +0
-1@@ -59,7 +59,6 @@* Y-MODEM to load u-boot.img, when booted over UART. */ #define CONFIG_SPL_TEXT_BASE 0x402F0400 -#define CONFIG_SPL_MAX_SIZE (0x4030B800 - CONFIG_SPL_TEXT_BASE)#define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + \ (128 << 20))include/configs/ti_armv7_common.h +13
-8@@ -212,14 +212,14 @@/* * Place the image at the start of the ROM defined image space (per * CONFIG_SPL_TEXT_BASE and we limit our size to the ROM-defined -* downloaded image area. We initalize DRAM as soon as we can so that -* we can place stack, malloc and BSS there. We load U-Boot itself into -* memory at 0x80800000 for legacy reasons (to not conflict with older -* SPLs). We have our BSS be placed 2MiB after this, to allow for the -* default Linux kernel address of 0x80008000 to work with most sized -* kernels, in the Falcon Mode case. We have the SPL malloc pool at the -* end of the BSS area. We suggest that the stack be placed at 32MiB after -* the start of DRAM to allow room for all of the above (handled in Kconfig). +* downloaded image area minus 1KiB for scratch space. We initalize DRAM as +* soon as we can so that we can place stack, malloc and BSS there. We load +* U-Boot itself into memory at 0x80800000 for legacy reasons (to not conflict +* with older SPLs). We have our BSS be placed 2MiB after this, to allow for +* the default Linux kernel address of 0x80008000 to work with most sized +* kernels, in the Falcon Mode case. We have the SPL malloc pool at the end +* of the BSS area. We suggest that the stack be placed at 32MiB after the +* start of DRAM to allow room for all of the above (handled in Kconfig). */ #ifndef CONFIG_SYS_TEXT_BASE #define CONFIG_SYS_TEXT_BASE 0x80800000@@ -233,6 +233,11 @@ CONFIG_SPL_BSS_MAX_SIZE)#define CONFIG_SYS_SPL_MALLOC_SIZE CONFIG_SYS_MALLOC_LEN#endif +#ifndef CONFIG_SPL_MAX_SIZE +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE) +#endif +/* RAW SD card / eMMC locations. */ #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300/* address 0x60000 */ include/configs/ti_omap3_common.h +0
-1@@ -70,7 +70,6 @@/* SPL */ #define CONFIG_SPL_TEXT_BASE 0x40200800 -#define CONFIG_SPL_MAX_SIZE (54 * 1024)#define CONFIG_SPL_LDSCRIPT "$(CPUDIR)/omap-common/u-boot-spl.lds"#define CONFIG_SPL_POWER_SUPPORT #define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + \include/configs/ti_omap4_common.h +0
-1@@ -152,7 +152,6 @@* So moving TEXT_BASE down to non-HS limit. */ #define CONFIG_SPL_TEXT_BASE 0x40300000 -#define CONFIG_SPL_MAX_SIZE (0x4030C000 - CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_DISPLAY_PRINT #define CONFIG_SPL_LDSCRIPT "$(CPUDIR)/omap-common/u-boot-spl.lds"#define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + \include/configs/ti_omap5_common.h +0
-7@@ -156,13 +156,6 @@#define CONFIG_SPL_TEXT_BASE 0x40300000#endif -/* DRA7xx/AM57xx have 512K of SRAM, OMAP5 only 128K */ -#if defined(CONFIG_DRA7XX ) || defined(CONFIG_AM57XX ) -#define TI_ROM_BOOT_LOAD_END 0x4037E000 -#else -#define TI_ROM_BOOT_LOAD_END 0x4031E000 -#endif -#define CONFIG_SPL_MAX_SIZE (TI_ROM_BOOT_LOAD_END - CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_DISPLAY_PRINT #define CONFIG_SPL_LDSCRIPT "$(CPUDIR)/omap-common/u-boot-spl.lds"#define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + \include/configs/tricorder.h +2
-2@@ -340,7 +340,8 @@#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300/* address 0x60000 */ #define CONFIG_SPL_TEXT_BASE 0x40200000/*CONFIG_SYS_SRAM_START*/ -#define CONFIG_SPL_MAX_SIZE (57 * 1024)/* 7 KB for stack */ +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000/*CONFIG_SYS_SDRAM_BASE*/ #define CONFIG_SPL_BSS_MAX_SIZE 0x80000 --1.9.1
PATCH 1/1 TI: Rework SRAM definitions and maximums
In reply to Tom RiniQuoted 11 lines · Tom Rini
On all TI platforms the ROM defines a "downloaded image" area at or near the start of SRAM which is followed by a reserved area. As it is at best bad form and at worst possibly harmful in corner cases to write in this reserved area, we stop doing that by adding in the define
NON_SECURE_SRAM_IMG_ENDto say where the end of the downloaded image area is and makeSRAM_SCRATCH_SPACE_ADDRbe one kilobyte before this. At current we define the end of scratch space at0x228bytes past the start of scratch space this this gives us a lot of room to grow. As these scratch uses are non-optional today, all targets are modified to respect this boundary.
Quoted 1 line
Tested on OMAP4 Pandaboard, OMAP3 Beagle xM
Verified on AM437x-GP EVM.
Thanks and regards,
Lokesh
Quoted 573 lines
Cc Albert Aribaud <[email protected]>Cc Nagendra T S <[email protected]>Cc Vaibhav Hiremath <[email protected]>Cc Lokesh Vutla <[email protected]>Cc Felipe Balbi <[email protected]>Cc Igor Grinberg <[email protected]>Cc Nikita Kiryanov <[email protected]>Cc Paul Kocialkowski <[email protected]>Cc Enric Balletbo i Serra <[email protected]>Cc Adam Ford <[email protected]>Cc Steve Sakoman <[email protected]>Cc Stefan Roese <[email protected]>Cc Thomas Weber <[email protected]>Cc Hannes Schmelzer <[email protected]>Cc Thomas Chou <[email protected]>Cc Masahiro Yamada <[email protected]>Cc Simon Glass <[email protected]>Cc Joe Hershberger <[email protected]>Cc Sam Protsenko <[email protected]>Cc Heiko Schocher <[email protected]>Cc Samuel Egli <[email protected]>Cc Michal Simek <[email protected]>Cc Wolfgang Denk <[email protected]>Cc Mateusz Kulikowski <[email protected]>Cc Ben Whitten <[email protected]>Cc Stefano Babic <[email protected]>Cc Bin Meng <[email protected]>Cc Sekhar Nori <[email protected]>Cc Mugunthan V N <[email protected]>Cc "B, Ravi" <[email protected]>Cc "Matwey V. Kornilov" <[email protected]>Cc Ladislav Michl <[email protected]>Cc Ash Charles <[email protected]>Cc "Kipisz, Steven" <[email protected]>Cc Daniel Allred <[email protected]>Signed-off-by Tom Rini <[email protected]>--- arch/arm/include/asm/arch-am33xx/omap.h | 13 ++++++------- arch/arm/include/asm/arch-omap3/omap.h | 5 ++++- arch/arm/include/asm/arch-omap4/omap.h | 5 ++++- arch/arm/include/asm/arch-omap5/omap.h | 6 +++++- include/configs/am3517_crane.h | 3 ++- include/configs/am3517_evm.h | 3 ++- include/configs/am43xx_evm.h | 3 --- include/configs/am57xx_evm.h | 2 -- include/configs/bur_am335x_common.h | 6 ++++-- include/configs/cm_t35.h | 3 ++- include/configs/cm_t43.h | 1 - include/configs/dra7xx_evm.h | 2 -- include/configs/kc1.h | 3 ++- include/configs/omap3_evm.h | 3 ++- include/configs/omap3_igep00x0.h | 8 ++++---- include/configs/omap3_logic.h | 10 ++++++---- include/configs/omap3_overo.h | 8 +++++--- include/configs/siemens-am33x-common.h | 3 ++- include/configs/sniper.h | 3 ++- include/configs/tam3517-common.h | 3 ++- include/configs/tao3530.h | 3 ++- include/configs/ti814x_evm.h | 3 ++- include/configs/ti816x_evm.h | 3 ++- include/configs/ti_am335x_common.h | 1 - include/configs/ti_armv7_common.h | 21 +++++++++++++-------- include/configs/ti_omap3_common.h | 1 - include/configs/ti_omap4_common.h | 1 - include/configs/ti_omap5_common.h | 7 ------- include/configs/tricorder.h | 3 ++- 29 files changed, 75 insertions(+), 61 deletions(-)arch/arm/include/asm/arch-am33xx/omap.h +6
-7@@ -15,24 +15,23 @@#ifndef _OMAP_H_#define _OMAP_H_ +#include <linux/sizes.h> +#ifdef CONFIG_AM33XX #define NON_SECURE_SRAM_START 0x402F0400#define NON_SECURE_SRAM_END 0x40310000 -#define SRAM_SCRATCH_SPACE_ADDR 0x4030B800 +#define NON_SECURE_SRAM_IMG_END 0x4030B800#elif defined(CONFIG_TI81XX )#define NON_SECURE_SRAM_START 0x40300000#define NON_SECURE_SRAM_END 0x40320000 -#define SRAM_SCRATCH_SPACE_ADDR 0x4031B800 +#define NON_SECURE_SRAM_IMG_END 0x4031B800#elif defined(CONFIG_AM43XX )#define NON_SECURE_SRAM_START 0x402F0400#define NON_SECURE_SRAM_END 0x40340000 -#define SRAM_SCRATCH_SPACE_ADDR 0x40337C00 -#define AM4372_BOARD_NAME_START SRAM_SCRATCH_SPACE_ADDR -#define AM4372_BOARD_NAME_END SRAM_SCRATCH_SPACE_ADDR + 0xC -#define AM4372_BOARD_VERSION_START SRAM_SCRATCH_SPACE_ADDR + 0xD -#define AM4372_BOARD_VERSION_END SRAM_SCRATCH_SPACE_ADDR + 0x14 +#define NON_SECURE_SRAM_IMG_END 0x40337DE0#define QSPI_BASE 0x47900000#endif +#define SRAM_SCRATCH_SPACE_ADDR (NON_SECURE_SRAM_IMG_END - SZ_1K)/* Boot parameters */ #ifndef __ASSEMBLY__arch/arm/include/asm/arch-omap3/omap.h +4
-1@@ -10,6 +10,8 @@#ifndef _OMAP3_H_#define _OMAP3_H_ +#include <linux/sizes.h> +/* Stuff on L3 Interconnect */ #define SMX_APE_BASE 0x68000000@@ -145,7 +147,8 @@ struct gpio {#define NON_SECURE_SRAM_START 0x40208000/* Works for GP & EMU */ #define NON_SECURE_SRAM_END 0x40210000 -#define SRAM_SCRATCH_SPACE_ADDR 0x4020E000 +#define NON_SECURE_SRAM_IMG_END 0x4020F000 +#define SRAM_SCRATCH_SPACE_ADDR (NON_SECURE_SRAM_IMG_END - SZ_1K)#define LOW_LEVEL_SRAM_STACK 0x4020FFFCarch/arm/include/asm/arch-omap4/omap.h +4
-1@@ -19,6 +19,8 @@#include <asm/types.h> #endif /* !(__KERNEL_STRICT_NAMES || __ASSEMBLY__) */ +#include <linux/sizes.h> +/* * L4 Peripherals - L4 Wakeup and L4 Core now */ @@ -109,7 +111,8 @@ struct s32ktimer {*/ #define NON_SECURE_SRAM_START 0x40304000#define NON_SECURE_SRAM_END 0x4030E000/* Not inclusive */ -#define SRAM_SCRATCH_SPACE_ADDR 0x4030C000 +#define NON_SECURE_SRAM_IMG_END 0x4030C000 +#define SRAM_SCRATCH_SPACE_ADDR (NON_SECURE_SRAM_IMG_END - SZ_1K)/* base address for indirect vectors (internal boot mode) */ #define SRAM_ROM_VECT_BASE 0x4030D000arch/arm/include/asm/arch-omap5/omap.h +5
-1@@ -16,6 +16,8 @@#include <asm/types.h> #endif /* !(__KERNEL_STRICT_NAMES || __ASSEMBLY__) */ +#include <linux/sizes.h> +/* * L4 Peripherals - L4 Wakeup and L4 Core now */ @@ -186,11 +188,13 @@ struct s32ktimer {#if defined(CONFIG_DRA7XX ) || defined(CONFIG_AM57XX )#define NON_SECURE_SRAM_START 0x40300000#define NON_SECURE_SRAM_END 0x40380000/* Not inclusive */ +#define NON_SECURE_SRAM_IMG_END 0x4037E000#else #define NON_SECURE_SRAM_START 0x40300000#define NON_SECURE_SRAM_END 0x40320000/* Not inclusive */ +#define NON_SECURE_SRAM_IMG_END 0x4031E000#endif -#define SRAM_SCRATCH_SPACE_ADDR 0x4031E000 +#define SRAM_SCRATCH_SPACE_ADDR (NON_SECURE_SRAM_IMG_END - SZ_1K)/* base address for indirect vectors (internal boot mode) */ #define SRAM_ROM_VECT_BASE 0x4031F000include/configs/am3517_crane.h +2
-1@@ -279,7 +279,8 @@#define CONFIG_SPL_BOARD_INIT #define CONFIG_SPL_NAND_SIMPLE #define CONFIG_SPL_TEXT_BASE 0x40200800 -#define CONFIG_SPL_MAX_SIZE (54 * 1024)/* 8 KB for stack */ +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE 0x80000/* 512 KB */ include/configs/am3517_evm.h +2
-1@@ -337,7 +337,8 @@#define CONFIG_SPL_BOARD_INIT #define CONFIG_SPL_NAND_SIMPLE #define CONFIG_SPL_TEXT_BASE 0x40200000 -#define CONFIG_SPL_MAX_SIZE (64 * 1024) +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE 0x80000/* 512 KB */ include/configs/am43xx_evm.h +0
-3@@ -38,9 +38,6 @@/* SPL defines. */ #define CONFIG_SPL_TEXT_BASE CONFIG_ISW_ENTRY_ADDR -#define CONFIG_SPL_MAX_SIZE (NON_SECURE_SRAM_END - \ - CONFIG_PUB_ROM_DATA_SIZE - \ - CONFIG_SPL_TEXT_BASE)#define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + \ (128 << 20))#define CONFIG_SPL_POWER_SUPPORT include/configs/am57xx_evm.h +0
-2@@ -102,8 +102,6 @@#ifdef CONFIG_SPL_BUILD #undef CONFIG_DM_SPI#undef CONFIG_DM_SPI_FLASH -#undef CONFIG_SPL_MAX_SIZE -#define CONFIG_SPL_MAX_SIZE (256 << 10)/* 256 KiB */ #endif /* SPI SPL */ include/configs/bur_am335x_common.h +4
-2@@ -47,10 +47,12 @@* area between 0x402F0400 and 0x4030B800 as a download area and * 0x4030B800 to 0x4030CE00 as a public stack area. The ROM also * supports X-MODEM loading via UART, and we leverage this and then use -* Y-MODEM to load u-boot.img, when booted over UART. +* Y-MODEM to load u-boot.img, when booted over UART. We must also include +* the scratch space that U-Boot uses in SRAM. */ #define CONFIG_SPL_TEXT_BASE 0x402F0400 -#define CONFIG_SPL_MAX_SIZE (0x4030B800 - CONFIG_SPL_TEXT_BASE) +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)/* * Since SPL did pll and ddr initialization for us, include/configs/cm_t35.h +2
-1@@ -344,7 +344,8 @@#define CONFIG_SYS_NAND_U_BOOT_OFFS 0x80000#define CONFIG_SPL_TEXT_BASE 0x40200800 -#define CONFIG_SPL_MAX_SIZE (54 * 1024)/* 8 KB for stack */ +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)/* * Use 0x80008000 as TEXT_BASE here for compatibility reasons with the include/configs/cm_t43.h +0
-1@@ -154,7 +154,6 @@/* SPL defines. */ #define CONFIG_SPL_TEXT_BASE 0x40300350 -#define CONFIG_SPL_MAX_SIZE (64 * 1024)#define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + (128 << 20))#define CONFIG_SPL_POWER_SUPPORT #define CONFIG_SYS_SPI_U_BOOT_OFFS (256 * 1024)include/configs/dra7xx_evm.h +0
-2@@ -185,8 +185,6 @@/* In SPL, use the environment and discard MMC support for space. */ #ifdef CONFIG_SPL_BUILD #undef CONFIG_SPL_MMC_SUPPORT -#undef CONFIG_SPL_MAX_SIZE -#define CONFIG_SPL_MAX_SIZE (64 << 10)/* 64 KiB */ #endif #define CONFIG_SPL_ENV_SUPPORT #define CONFIG_ENV_IS_IN_SPI_FLASH include/configs/kc1.h +2
-1@@ -120,7 +120,8 @@#define CONFIG_SPL_FRAMEWORK #define CONFIG_SPL_TEXT_BASE 0x40300000 -#define CONFIG_SPL_MAX_SIZE (48 * 1024) +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE (512 * 1024)#define CONFIG_SYS_SPL_MALLOC_START 0x80208000include/configs/omap3_evm.h +2
-1@@ -345,7 +345,8 @@/* Defines for SPL */ #define CONFIG_SPL_FRAMEWORK #define CONFIG_SPL_TEXT_BASE 0x40200800 -#define CONFIG_SPL_MAX_SIZE (54 * 1024)/* 8 KB for stack */ +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE 0x80000/* 512 KB */ include/configs/omap3_igep00x0.h +4
-4@@ -16,11 +16,11 @@#include <configs/ti_omap3_common.h> #include <asm/mach-types.h> -/* SRAM starts at 0x40200000 and ends at 0x4020FFFF (64KB) */ -#undef CONFIG_SPL_MAX_SIZE +/* +* We are only ever GP parts and will utilize all of the "downloaded image" +* area in SRAM which starts at 0x40200000 and ends at 0x4020FFFF (64KB). +*/ #undef CONFIG_SPL_TEXT_BASE - -#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_TEXT_BASE 0x40200000/* include/configs/omap3_logic.h +6
-4@@ -30,11 +30,13 @@#include <configs/ti_omap3_common.h> -/* Override default SPL info to minimize empty space and allow BCH8 in SPL */ +/* +* We are only ever GP parts and will utilize all of the "downloaded image" +* area in SRAM which starts at 0x40200000 and ends at 0x4020FFFF (64KB) in +* order to allow for BCH8 to fit in. +*/ #undef CONFIG_SPL_TEXT_BASE -#undef CONFIG_SPL_MAX_SIZE -#define CONFIG_SPL_TEXT_BASE 0x40200000 -#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - CONFIG_SPL_TEXT_BASE) +#define CONFIG_SPL_TEXT_BASE 0x40200000/* Display CPU and Board information */ include/configs/omap3_overo.h +5
-3@@ -11,10 +11,12 @@#define CONFIG_NAND #include <configs/ti_omap3_common.h> -#undef CONFIG_SPL_MAX_SIZE +/* +* We are only ever GP parts and will utilize all of the "downloaded image" +* area in SRAM which starts at 0x40200000 and ends at 0x4020FFFF (64KB). +*/ #undef CONFIG_SPL_TEXT_BASE -#define CONFIG_SPL_TEXT_BASE 0x40200000 -#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - CONFIG_SPL_TEXT_BASE) +#define CONFIG_SPL_TEXT_BASE 0x40200000#define CONFIG_BCH include/configs/siemens-am33x-common.h +2
-1@@ -126,7 +126,8 @@/* Defines for SPL */ #define CONFIG_SPL_FRAMEWORK #define CONFIG_SPL_TEXT_BASE 0x402F0400 -#define CONFIG_SPL_MAX_SIZE (101 * 1024) +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE 0x80000/* 512 KB */ include/configs/sniper.h +2
-1@@ -128,7 +128,8 @@#define CONFIG_SPL_FRAMEWORK #define CONFIG_SPL_TEXT_BASE 0x40200000 -#define CONFIG_SPL_MAX_SIZE (54 * 1024) +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE (512 * 1024)#define CONFIG_SYS_SPL_MALLOC_START 0x80208000include/configs/tam3517-common.h +2
-1@@ -220,7 +220,8 @@#define CONFIG_SPL_LDSCRIPT "$(CPUDIR)/omap-common/u-boot-spl.lds"#define CONFIG_SPL_TEXT_BASE 0x40200000/*CONFIG_SYS_SRAM_START*/ -#define CONFIG_SPL_MAX_SIZE (54 * 1024)/* 8 KB for stack */ +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_STACK LOW_LEVEL_SRAM_STACK#define CONFIG_SYS_SPL_MALLOC_START 0x8f000000include/configs/tao3530.h +2
-1@@ -328,7 +328,8 @@#define CONFIG_SYS_NAND_U_BOOT_OFFS 0x80000#define CONFIG_SPL_TEXT_BASE 0x40200800 -#define CONFIG_SPL_MAX_SIZE (54 * 1024)/* 8 KB for stack */ +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)/* * Use 0x80008000 as TEXT_BASE here for compatibility reasons with the include/configs/ti814x_evm.h +2
-1@@ -159,7 +159,8 @@/* Defines for SPL */ #define CONFIG_SPL_FRAMEWORK #define CONFIG_SPL_TEXT_BASE 0x40300000 -#define CONFIG_SPL_MAX_SIZE ((128 - 18) * 1024) +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE 0x80000/* 512 KB */ include/configs/ti816x_evm.h +2
-1@@ -125,7 +125,8 @@/* Defines for SPL */ #define CONFIG_SPL_FRAMEWORK #define CONFIG_SPL_TEXT_BASE 0x40400000 -#define CONFIG_SPL_MAX_SIZE ((128 - 18) * 1024) +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000#define CONFIG_SPL_BSS_MAX_SIZE 0x80000/* 512 KB */ include/configs/ti_am335x_common.h +0
-1@@ -59,7 +59,6 @@* Y-MODEM to load u-boot.img, when booted over UART. */ #define CONFIG_SPL_TEXT_BASE 0x402F0400 -#define CONFIG_SPL_MAX_SIZE (0x4030B800 - CONFIG_SPL_TEXT_BASE)#define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + \ (128 << 20))include/configs/ti_armv7_common.h +13
-8@@ -212,14 +212,14 @@/* * Place the image at the start of the ROM defined image space (per * CONFIG_SPL_TEXT_BASE and we limit our size to the ROM-defined -* downloaded image area. We initalize DRAM as soon as we can so that -* we can place stack, malloc and BSS there. We load U-Boot itself into -* memory at 0x80800000 for legacy reasons (to not conflict with older -* SPLs). We have our BSS be placed 2MiB after this, to allow for the -* default Linux kernel address of 0x80008000 to work with most sized -* kernels, in the Falcon Mode case. We have the SPL malloc pool at the -* end of the BSS area. We suggest that the stack be placed at 32MiB after -* the start of DRAM to allow room for all of the above (handled in Kconfig). +* downloaded image area minus 1KiB for scratch space. We initalize DRAM as +* soon as we can so that we can place stack, malloc and BSS there. We load +* U-Boot itself into memory at 0x80800000 for legacy reasons (to not conflict +* with older SPLs). We have our BSS be placed 2MiB after this, to allow for +* the default Linux kernel address of 0x80008000 to work with most sized +* kernels, in the Falcon Mode case. We have the SPL malloc pool at the end +* of the BSS area. We suggest that the stack be placed at 32MiB after the +* start of DRAM to allow room for all of the above (handled in Kconfig). */ #ifndef CONFIG_SYS_TEXT_BASE #define CONFIG_SYS_TEXT_BASE 0x80800000@@ -233,6 +233,11 @@ CONFIG_SPL_BSS_MAX_SIZE)#define CONFIG_SYS_SPL_MALLOC_SIZE CONFIG_SYS_MALLOC_LEN#endif +#ifndef CONFIG_SPL_MAX_SIZE +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE) +#endif +/* RAW SD card / eMMC locations. */ #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300/* address 0x60000 */ include/configs/ti_omap3_common.h +0
-1@@ -70,7 +70,6 @@/* SPL */ #define CONFIG_SPL_TEXT_BASE 0x40200800 -#define CONFIG_SPL_MAX_SIZE (54 * 1024)#define CONFIG_SPL_LDSCRIPT "$(CPUDIR)/omap-common/u-boot-spl.lds"#define CONFIG_SPL_POWER_SUPPORT #define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + \include/configs/ti_omap4_common.h +0
-1@@ -152,7 +152,6 @@* So moving TEXT_BASE down to non-HS limit. */ #define CONFIG_SPL_TEXT_BASE 0x40300000 -#define CONFIG_SPL_MAX_SIZE (0x4030C000 - CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_DISPLAY_PRINT #define CONFIG_SPL_LDSCRIPT "$(CPUDIR)/omap-common/u-boot-spl.lds"#define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + \include/configs/ti_omap5_common.h +0
-7@@ -156,13 +156,6 @@#define CONFIG_SPL_TEXT_BASE 0x40300000#endif -/* DRA7xx/AM57xx have 512K of SRAM, OMAP5 only 128K */ -#if defined(CONFIG_DRA7XX ) || defined(CONFIG_AM57XX ) -#define TI_ROM_BOOT_LOAD_END 0x4037E000 -#else -#define TI_ROM_BOOT_LOAD_END 0x4031E000 -#endif -#define CONFIG_SPL_MAX_SIZE (TI_ROM_BOOT_LOAD_END - CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_DISPLAY_PRINT #define CONFIG_SPL_LDSCRIPT "$(CPUDIR)/omap-common/u-boot-spl.lds"#define CONFIG_SYS_SPL_ARGS_ADDR (CONFIG_SYS_SDRAM_BASE + \include/configs/tricorder.h +2
-1@@ -340,7 +340,8 @@#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300/* address 0x60000 */ #define CONFIG_SPL_TEXT_BASE 0x40200000/*CONFIG_SYS_SRAM_START*/ -#define CONFIG_SPL_MAX_SIZE (57 * 1024)/* 7 KB for stack */ +#define CONFIG_SPL_MAX_SIZE (SRAM_SCRATCH_SPACE_ADDR - \ + CONFIG_SPL_TEXT_BASE)#define CONFIG_SPL_BSS_START_ADDR 0x80000000/*CONFIG_SYS_SDRAM_BASE*/ #define CONFIG_SPL_BSS_MAX_SIZE 0x80000
PATCH 1/1 TI: Rework SRAM definitions and maximums
Quoted 12 lines · Lokesh Vutla
Quoted 11 lines · Tom Rini
On all TI platforms the ROM defines a "downloaded image" area at or near the start of SRAM which is followed by a reserved area. As it is at best bad form and at worst possibly harmful in corner cases to write in this reserved area, we stop doing that by adding in the define
NON_SECURE_SRAM_IMG_ENDto say where the end of the downloaded image area is and makeSRAM_SCRATCH_SPACE_ADDRbe one kilobyte before this. At current we define the end of scratch space at0x228bytes past the start of scratch space this this gives us a lot of room to grow. As these scratch uses are non-optional today, all targets are modified to respect this boundary.
Quoted 6 lines
Quoted 1 line
Tested on OMAP4 Pandaboard, OMAP3 Beagle xM
Verified on AM437x-GP EVM.
Tested-by Lokesh Vutla <[email protected]>Acked-by Lokesh Vutla <[email protected]>
Verified on IGEPv2.
Also note, that this patch and CONFIG_SPL_SYS_MALLOC_SIMPLE is needed
for sucessfull build (with gcc-5.4.0), otherwise compilation fails with:
arm-v7a-linux-gnueabi-ld.bfd: u-boot-spl section .data' will not fit in region .sram' arm-v7a-linux-gnueabi-ld.bfd: region `.sram' overflowed by 264 bytes
Just enabling CONFIG_SPL_SYS_MALLOC_SIMPLE without this patch makes malloc in fat loading code fail and thus causes boot failure.
Best regards,
ladis
Quoted 44 lines · Tom Rini
On all TI platforms the ROM defines a "downloaded image" area at or near the start of SRAM which is followed by a reserved area. As it is at best bad form and at worst possibly harmful in corner cases to write in this reserved area, we stop doing that by adding in the define
NON_SECURE_SRAM_IMG_ENDto say where the end of the downloaded image area is and makeSRAM_SCRATCH_SPACE_ADDRbe one kilobyte before this. At current we define the end of scratch space at0x228bytes past the start of scratch space this this gives us a lot of room to grow. As these scratch uses are non-optional today, all targets are modified to respect this boundary.Tested on OMAP4 Pandaboard, OMAP3 Beagle xM
Cc Albert Aribaud <[email protected]>Cc Nagendra T S <[email protected]>Cc Vaibhav Hiremath <[email protected]>Cc Lokesh Vutla <[email protected]>Cc Felipe Balbi <[email protected]>Cc Igor Grinberg <[email protected]>Cc Nikita Kiryanov <[email protected]>Cc Paul Kocialkowski <[email protected]>Cc Enric Balletbo i Serra <[email protected]>Cc Adam Ford <[email protected]>Cc Steve Sakoman <[email protected]>Cc Stefan Roese <[email protected]>Cc Thomas Weber <[email protected]>Cc Hannes Schmelzer <[email protected]>Cc Thomas Chou <[email protected]>Cc Masahiro Yamada <[email protected]>Cc Simon Glass <[email protected]>Cc Joe Hershberger <[email protected]>Cc Sam Protsenko <[email protected]>Cc Heiko Schocher <[email protected]>Cc Samuel Egli <[email protected]>Cc Michal Simek <[email protected]>Cc Wolfgang Denk <[email protected]>Cc Mateusz Kulikowski <[email protected]>Cc Ben Whitten <[email protected]>Cc Stefano Babic <[email protected]>Cc Bin Meng <[email protected]>Cc Sekhar Nori <[email protected]>Cc Mugunthan V N <[email protected]>Cc "B, Ravi" <[email protected]>Cc "Matwey V. Kornilov" <[email protected]>
Quoted 8 lines
Cc Ladislav Michl <[email protected]>Cc Ash Charles <[email protected]>Cc "Kipisz, Steven" <[email protected]>Cc Daniel Allred <[email protected]>Signed-off-by Tom Rini <[email protected]>Tested-by Lokesh Vutla <[email protected]>Acked-by Lokesh Vutla <[email protected]>Tested-by Ladislav Michl <[email protected]>
Applied to u-boot/master, thanks!
Signature · 8 lines
Tom -------------- next part -------------- A non-text attachment was scrubbed... Name: signature.asc Type: application/pgp-signature Size: 819 bytes Desc: Digital signature URL: <http://lists.denx.de/pipermail/u-boot/attachments/20160907/ce67177a/attachment.sig>