Hi Simon,

On 2025-02-09 22:14, Simon Glass wrote:
> The most common word for features that make a platform work is to use
> 'HAVE_xxx'. Rename this option to match.

We already have HAS_CUSTOM_SYS_INIT_SP_ADDR related to the init stack
pointer address, maybe the new symbol should be named something similar
to that? e.g. HAS_xPL_INIT_SP_ADDR

> 
> Update the help to use the word 'phase' rather than 'stage', since
> that is the current terminology. Also clarify that, absent this setting,
> the stack pointer generally comes from the value used by U-Boot proper,
> rather than SPL.

The last statement is not fully correct, see below.

> 
> Move the option just above TPL_STACK which depends on it.
> 
> Signed-off-by: Simon Glass <s...@chromium.org>
> ---
> 
> Changes in v2:
> - Add new patch to rename TPL_NEEDS_SEPARATE_STACK
> 
>  arch/arm/lib/crt0.S            |  2 +-
>  arch/arm/lib/crt0_64.S         |  2 +-
>  arch/arm/mach-rockchip/Kconfig | 14 +++++++-------
>  common/spl/Kconfig.tpl         | 19 ++++++++++---------
>  configs/mk808_defconfig        |  2 +-
>  5 files changed, 20 insertions(+), 19 deletions(-)
> 
> diff --git a/arch/arm/lib/crt0.S b/arch/arm/lib/crt0.S
> index a691d844847..a7e6f50d39a 100644
> --- a/arch/arm/lib/crt0.S
> +++ b/arch/arm/lib/crt0.S
> @@ -100,7 +100,7 @@ ENTRY(_main)
>   * Set up initial C runtime environment and call board_init_f(0).
>   */
>  
> -#if defined(CONFIG_TPL_BUILD) && defined(CONFIG_TPL_NEEDS_SEPARATE_STACK)
> +#if defined(CONFIG_TPL_BUILD) && defined(CONFIG_TPL_HAVE_INIT_STACK)
>       ldr     r0, =(CONFIG_TPL_STACK)
>  #elif defined(CONFIG_XPL_BUILD) && defined(CONFIG_SPL_STACK)
>       ldr     r0, =(CONFIG_SPL_STACK)

Here we can see that SPL_STACK is used as the first fallback for
XPL_BUILD's.

> diff --git a/arch/arm/lib/crt0_64.S b/arch/arm/lib/crt0_64.S
> index 32401f544a7..62a0abe1fed 100644
> --- a/arch/arm/lib/crt0_64.S
> +++ b/arch/arm/lib/crt0_64.S
> @@ -69,7 +69,7 @@ ENTRY(_main)
>  /*
>   * Set up initial C runtime environment and call board_init_f(0).
>   */
> -#if defined(CONFIG_TPL_BUILD) && defined(CONFIG_TPL_NEEDS_SEPARATE_STACK)
> +#if defined(CONFIG_TPL_BUILD) && defined(CONFIG_TPL_HAVE_INIT_STACK)
>       ldr     x0, =(CONFIG_TPL_STACK)
>  #elif defined(CONFIG_XPL_BUILD) && defined(CONFIG_SPL_STACK)
>       ldr     x0, =(CONFIG_SPL_STACK)
> diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
> index 4d3157b2edd..4c515593718 100644
> --- a/arch/arm/mach-rockchip/Kconfig
> +++ b/arch/arm/mach-rockchip/Kconfig
> @@ -9,7 +9,7 @@ config ROCKCHIP_PX30
>       select SPL
>       select TPL
>       select TPL_TINY_FRAMEWORK if TPL
> -     select TPL_NEEDS_SEPARATE_STACK if TPL
> +     select TPL_HAVE_INIT_STACK if TPL
>       imply SPL_SEPARATE_BSS
>       select SPL_SERIAL
>       select TPL_SERIAL
> @@ -106,7 +106,7 @@ config ROCKCHIP_RK322X
>       select TPL
>       select TPL_DM
>       select TPL_OF_LIBFDT
> -     select TPL_NEEDS_SEPARATE_STACK if TPL
> +     select TPL_HAVE_INIT_STACK if TPL
>       select SPL_DRIVERS_MISC
>       imply ROCKCHIP_COMMON_BOARD
>       imply SPL_SERIAL
> @@ -139,7 +139,7 @@ config ROCKCHIP_RK3288
>       imply TPL_DRIVERS_MISC
>       imply TPL_LIBCOMMON_SUPPORT
>       imply TPL_LIBGENERIC_SUPPORT
> -     imply TPL_NEEDS_SEPARATE_STACK
> +     imply TPL_HAVE_INIT_STACK
>       imply TPL_OF_CONTROL
>       imply TPL_OF_PLATDATA
>       imply TPL_RAM
> @@ -197,7 +197,7 @@ config ROCKCHIP_RK3328
>       select SPL
>       select SUPPORT_TPL
>       select TPL
> -     select TPL_NEEDS_SEPARATE_STACK if TPL
> +     select TPL_HAVE_INIT_STACK if TPL
>       imply ARMV8_CRYPTO
>       imply ARMV8_SET_SMPEN
>       imply MISC
> @@ -225,7 +225,7 @@ config ROCKCHIP_RK3368
>       select ARM64
>       select SUPPORT_SPL
>       select SUPPORT_TPL
> -     select TPL_NEEDS_SEPARATE_STACK if TPL
> +     select TPL_HAVE_INIT_STACK if TPL
>       imply ROCKCHIP_COMMON_BOARD
>       imply SPL_ROCKCHIP_COMMON_BOARD
>       imply SPL_SEPARATE_BSS
> @@ -257,7 +257,7 @@ config ROCKCHIP_RK3399
>       select SPL_RAM if SPL
>       select SPL_REGMAP if SPL
>       select SPL_SYSCON if SPL
> -     select TPL_NEEDS_SEPARATE_STACK if TPL
> +     select TPL_HAVE_INIT_STACK if TPL
>       select SPL_SEPARATE_BSS
>       select CLK
>       select FIT
> @@ -392,7 +392,7 @@ config ROCKCHIP_RV1126
>       select SKIP_LOWLEVEL_INIT_ONLY
>       select TPL
>       select SUPPORT_TPL
> -     select TPL_NEEDS_SEPARATE_STACK
> +     select TPL_HAVE_INIT_STACK
>       select TPL_ROCKCHIP_BACK_TO_BROM
>       select SPL
>       select SUPPORT_SPL
> diff --git a/common/spl/Kconfig.tpl b/common/spl/Kconfig.tpl
> index 22ca7016453..980d6da202a 100644
> --- a/common/spl/Kconfig.tpl
> +++ b/common/spl/Kconfig.tpl
> @@ -106,12 +106,6 @@ config TPL_LDSCRIPT
>         May be left empty to trigger the Makefile infrastructure to
>         fall back to the linker-script used for the SPL stage.
>  
> -config TPL_NEEDS_SEPARATE_STACK
> -     bool "TPL needs a separate initial stack-pointer"
> -     help
> -       Enable, if the TPL stage should not inherit its initial
> -       stack-pointer from the settings for the SPL stage.
> -
>  config TPL_POWER
>       bool "Support power drivers"
>       help
> @@ -140,11 +134,18 @@ config TPL_MAX_SIZE
>       help
>         The maximum size (in bytes) of the TPL stage.
>  
> +config TPL_HAVE_INIT_STACK
> +     bool "TPL requires a initial, fixed, stack-pointer location"
> +     help
> +       Enable if the TPL phase should not use inherit its initial

"should not use inherit its initial" does not sound correct.

> +       stack-pointer from the settings for U-Boot proper, but should set

Here you are changing from SPL to proper, however the SPL address will
be used as the fallback (if it is defined) and then SYS_INIT_SP_ADDR.

> +       its own value.
> +
>  config TPL_STACK
> -     hex "Address of the initial stack-pointer for the TPL stage"
> -     depends on TPL_NEEDS_SEPARATE_STACK
> +     hex "Address of the initial stack-pointer for the TPL phase"
> +     depends on TPL_HAVE_INIT_STACK
>       help
> -       The address of the initial stack-pointer for the TPL stage.
> +       The address of the initial stack-pointer for the TPL phase

Did you remove the . (period) on purpose?

Regards,
Jonas

>         Usually this will be the (aligned) top-of-stack.
>  
>  config TPL_READ_ONLY
> diff --git a/configs/mk808_defconfig b/configs/mk808_defconfig
> index e47d0b594f3..a1f089a23ea 100644
> --- a/configs/mk808_defconfig
> +++ b/configs/mk808_defconfig
> @@ -48,7 +48,7 @@ CONFIG_SPL_NO_BSS_LIMIT=y
>  CONFIG_SPL_SEPARATE_BSS=y
>  CONFIG_SPL_FS_EXT4=y
>  CONFIG_SYS_MMCSD_FS_BOOT_PARTITION=2
> -CONFIG_TPL_NEEDS_SEPARATE_STACK=y
> +CONFIG_TPL_HAVE_INIT_STACK=y
>  # CONFIG_BOOTM_PLAN9 is not set
>  # CONFIG_BOOTM_RTEMS is not set
>  # CONFIG_BOOTM_VXWORKS is not set

Reply via email to