1/* SPDX-License-Identifier: GPL-2.0+ */
2
3#ifndef __SYSTEM_CONSTANTS_H__
4#define __SYSTEM_CONSTANTS_H__
5
6#include <config.h>
7
8/*
9 * The most common case for our initial stack pointer address is to
10 * say that we have defined a static intiial ram address location and
11 * size and from that we subtract the generated global data size.
12 */
13#ifdef CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR
14#define SYS_INIT_SP_ADDR	CONFIG_CUSTOM_SYS_INIT_SP_ADDR
15#else
16#ifdef CONFIG_MIPS
17#define SYS_INIT_SP_ADDR	(CFG_SYS_SDRAM_BASE + CFG_SYS_INIT_SP_OFFSET)
18#else
19#define SYS_INIT_SP_ADDR	\
20	(CFG_SYS_INIT_RAM_ADDR + CFG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
21#endif
22#endif
23
24/*
25 * Typically, we have the SPL malloc pool at the end of the BSS area.
26 */
27#ifdef CONFIG_SPL_HAS_CUSTOM_MALLOC_START
28#define SPL_SYS_MALLOC_START		CONFIG_SPL_CUSTOM_SYS_MALLOC_ADDR
29#elif defined(CONFIG_SPL_BSS_START_ADDR)
30#define SPL_SYS_MALLOC_START		(CONFIG_SPL_BSS_START_ADDR + \
31					 CONFIG_SPL_BSS_MAX_SIZE)
32#else
33/* feature not enabled: this value avoids compiler errors but is not used */
34#define SPL_SYS_MALLOC_START	0
35#endif
36#define SPL_SYS_MALLOC_SIZE	\
37	IF_ENABLED_INT(CONFIG_SPL_SYS_MALLOC, CONFIG_SPL_SYS_MALLOC_SIZE)
38
39/* deal with an optional value */
40#ifdef CONFIG_SPL_OS_BOOT
41#define SPL_PAYLOAD_ARGS_ADDR	CONFIG_SPL_PAYLOAD_ARGS_ADDR
42#else
43#define SPL_PAYLOAD_ARGS_ADDR	0
44#endif
45
46/* Number of pages per block */
47#define SYS_NAND_BLOCK_PAGES \
48	(CONFIG_SYS_NAND_BLOCK_SIZE / CONFIG_SYS_NAND_PAGE_SIZE)
49
50#endif
51