Convert CONFIG_SYS_MALLOC_LEN to Kconfig
[platform/kernel/u-boot.git] / Kconfig
diff --git a/Kconfig b/Kconfig
index c94b10e..35d619f 100644 (file)
--- a/Kconfig
+++ b/Kconfig
@@ -57,6 +57,21 @@ config LOCALVERSION_AUTO
 
          which is done within the script "scripts/setlocalversion".)
 
+config CC_IS_GCC
+       def_bool $(success,$(CC) --version | head -n 1 | grep -q gcc)
+
+config GCC_VERSION
+       int
+       default $(shell,$(srctree)/scripts/gcc-version.sh -p $(CC) | sed 's/^0*//') if CC_IS_GCC
+       default 0
+
+config CC_IS_CLANG
+       def_bool $(success,$(CC) --version | head -n 1 | grep -q clang)
+
+config CLANG_VERSION
+       int
+       default $(shell,$(srctree)/scripts/clang-version.sh $(CC))
+
 config CC_OPTIMIZE_FOR_SIZE
        bool "Optimize for size"
        default y
@@ -85,6 +100,30 @@ config SPL_OPTIMIZE_INLINING
          do what it thinks is best, which is desirable in some cases for size
          reasons.
 
+config ARCH_SUPPORTS_LTO
+       bool
+
+config LTO
+       bool "Enable Link Time Optimizations"
+       depends on ARCH_SUPPORTS_LTO
+       default n
+       help
+         This option enables Link Time Optimization (LTO), a mechanism which
+         allows the compiler to optimize between different compilation units.
+
+         This can optimize away dead code paths, resulting in smaller binary
+         size (if CC_OPTIMIZE_FOR_SIZE is enabled).
+
+         This option is not available for every architecture and may
+         introduce bugs.
+
+         Currently, when compiling with GCC, due to a weird bug regarding
+         jobserver, the final linking will not respect make's --jobs argument.
+         Instead all available processors will be used (as reported by the
+         nproc command).
+
+         If unsure, say n.
+
 config TPL_OPTIMIZE_INLINING
        bool "Allow compiler to uninline functions marked 'inline' in TPL"
        depends on TPL
@@ -200,7 +239,7 @@ config SYS_MALLOC_F_LEN
        default 0x2000 if (ARCH_IMX8 || ARCH_IMX8M || ARCH_MX7 || \
                           ARCH_MX7ULP || ARCH_MX6 || ARCH_MX5 || \
                           ARCH_LS1012A || ARCH_LS1021A || ARCH_LS1043A || \
-                          ARCH_LS1046A || ARCH_QEMU || ARCH_SUNXI)
+                          ARCH_LS1046A || ARCH_QEMU || ARCH_SUNXI || ARCH_OWL)
        default 0x400
        help
          Before relocation, memory is very limited on many platforms. Still,
@@ -210,29 +249,35 @@ config SYS_MALLOC_F_LEN
 
 config SYS_MALLOC_LEN
        hex "Define memory for Dynamic allocation"
-       depends on ARCH_ZYNQ || ARCH_VERSAL || ARCH_STM32MP || ARCH_ROCKCHIP
-       default 0x2000000 if ARCH_ROCKCHIP
+       default 0x2000000 if ARCH_ROCKCHIP || ARCH_OMAP2PLUS || ARCH_MESON
+       default 0x4020000 if ARCH_SUNXI && !MACH_SUN8I_V3S
+       default 0x200000 if ARCH_BMIPS || X86
+       default 0x220000 if ARCH_SUNXI && MACH_SUN8I_V3S
+       default 0x400000
        help
          This defines memory to be allocated for Dynamic allocation
          TODO: Use for other architectures
 
 config SPL_SYS_MALLOC_F_LEN
-       hex "Size of malloc() pool in SPL before relocation"
+       hex "Size of malloc() pool in SPL"
        depends on SYS_MALLOC_F && SPL
        default 0x2800 if RCAR_GEN3
        default SYS_MALLOC_F_LEN
        help
-         Before relocation, memory is very limited on many platforms. Still,
+         In SPL memory is very limited on many platforms. Still,
          we can provide a small malloc() pool if needed. Driver model in
          particular needs this to operate, so that it can allocate the
          initial serial device and any others that are needed.
 
+         It is possible to enable CONFIG_SYS_SPL_MALLOC_START to start a new
+         malloc() region in SDRAM once it is inited.
+
 config TPL_SYS_MALLOC_F_LEN
-       hex "Size of malloc() pool in TPL before relocation"
+       hex "Size of malloc() pool in TPL"
        depends on SYS_MALLOC_F && TPL
-       default SYS_MALLOC_F_LEN
+       default SPL_SYS_MALLOC_F_LEN
        help
-         Before relocation, memory is very limited on many platforms. Still,
+         In TPL memory is very limited on many platforms. Still,
          we can provide a small malloc() pool if needed. Driver model in
          particular needs this to operate, so that it can allocate the
          initial serial device and any others that are needed.
@@ -301,27 +346,6 @@ config HAS_ROM
          Enables building of a u-boot.rom target. This collects U-Boot and
          any necessary binary blobs.
 
-config ROM_NEEDS_BLOBS
-       bool
-       depends on HAS_ROM
-       help
-         Enable this if building the u-boot.rom target needs binary blobs, and
-         so cannot be done normally. In this case, U-Boot will only build the
-         ROM if the required blobs exist. If not, you will see an warning like:
-
-           Image 'main-section' is missing external blobs and is non-functional:
-             intel-descriptor intel-me intel-refcode intel-vga intel-mrc
-
-config BUILD_ROM
-       bool "Build U-Boot as BIOS replacement"
-       depends on HAS_ROM
-       default y if !ROM_NEEDS_BLOBS
-       help
-         This option allows to build a ROM version of U-Boot.
-         The build process generally requires several binary blobs
-         which are not shipped in the U-Boot source tree.
-         Please, see doc/arch/x86.rst for details.
-
 config SPL_IMAGE
        string "SPL image used in the combined SPL+U-Boot image"
        default "spl/boot.bin" if ARCH_AT91 && SPL_NAND_SUPPORT
@@ -368,6 +392,20 @@ config SYS_LDSCRIPT
          Path within the source tree to the linker script to use for the
          main U-Boot binary.
 
+config SYS_LOAD_ADDR
+       hex "Address in memory to use by default"
+       default 0x01000000 if ARCH_SOCFPGA
+       default 0x02000000 if PPC || X86
+       default 0x22000000 if MACH_SUN9I
+       default 0x42000000 if ARCH_SUNXI && !MACH_SUN9I
+       default 0x82000000 if ARCH_KEYSTONE || ARCH_OMAP2PLUS || ARCH_K3
+       default 0x82000000 if ARCH_MX6 && (MX6SL || MX6SLL  || MX6SX || MX6UL || MX6ULL)
+       default 0x12000000 if ARCH_MX6 && !(MX6SL || MX6SLL  || MX6SX || MX6UL || MX6ULL)
+       default 0x80800000 if ARCH_MX7
+       default 0x90000000 if FSL_LSCH2 || FSL_LSCH3
+       help
+         Address in memory to use as the default safe load address.
+
 config ERR_PTR_OFFSET
        hex
        default 0x0