MIPS: Avoid handcoded DIVU in `__div64_32' altogether
[linux-2.6-microblaze.git] / arch / Kconfig
index 24862d1..2bb3067 100644 (file)
@@ -33,38 +33,6 @@ config HOTPLUG_SMT
 config GENERIC_ENTRY
        bool
 
 config GENERIC_ENTRY
        bool
 
-config OPROFILE
-       tristate "OProfile system profiling"
-       depends on PROFILING
-       depends on HAVE_OPROFILE
-       select RING_BUFFER
-       select RING_BUFFER_ALLOW_SWAP
-       help
-         OProfile is a profiling system capable of profiling the
-         whole system, include the kernel, kernel modules, libraries,
-         and applications.
-
-         If unsure, say N.
-
-config OPROFILE_EVENT_MULTIPLEX
-       bool "OProfile multiplexing support (EXPERIMENTAL)"
-       default n
-       depends on OPROFILE && X86
-       help
-         The number of hardware counters is limited. The multiplexing
-         feature enables OProfile to gather more events than counters
-         are provided by the hardware. This is realized by switching
-         between events at a user specified time interval.
-
-         If unsure, say N.
-
-config HAVE_OPROFILE
-       bool
-
-config OPROFILE_NMI_TIMER
-       def_bool y
-       depends on PERF_EVENTS && HAVE_PERF_EVENTS_NMI && !PPC64
-
 config KPROBES
        bool "Kprobes"
        depends on MODULES
 config KPROBES
        bool "Kprobes"
        depends on MODULES
@@ -156,8 +124,8 @@ config HAVE_64BIT_ALIGNED_ACCESS
          accesses are required to be 64 bit aligned in this way even
          though it is not a 64 bit architecture.
 
          accesses are required to be 64 bit aligned in this way even
          though it is not a 64 bit architecture.
 
-         See Documentation/unaligned-memory-access.txt for more
-         information on the topic of unaligned memory accesses.
+         See Documentation/core-api/unaligned-memory-access.rst for
+         more information on the topic of unaligned memory accesses.
 
 config HAVE_EFFICIENT_UNALIGNED_ACCESS
        bool
 
 config HAVE_EFFICIENT_UNALIGNED_ACCESS
        bool
@@ -327,6 +295,10 @@ config ARCH_32BIT_OFF_T
          still support 32-bit off_t. This option is enabled for all such
          architectures explicitly.
 
          still support 32-bit off_t. This option is enabled for all such
          architectures explicitly.
 
+# Selected by 64 bit architectures which have a 32 bit f_tinode in struct ustat
+config ARCH_32BIT_USTAT_F_TINODE
+       bool
+
 config HAVE_ASM_MODVERSIONS
        bool
        help
 config HAVE_ASM_MODVERSIONS
        bool
        help
@@ -631,6 +603,96 @@ config SHADOW_CALL_STACK
          reading and writing arbitrary memory may be able to locate them
          and hijack control flow by modifying the stacks.
 
          reading and writing arbitrary memory may be able to locate them
          and hijack control flow by modifying the stacks.
 
+config LTO
+       bool
+       help
+         Selected if the kernel will be built using the compiler's LTO feature.
+
+config LTO_CLANG
+       bool
+       select LTO
+       help
+         Selected if the kernel will be built using Clang's LTO feature.
+
+config ARCH_SUPPORTS_LTO_CLANG
+       bool
+       help
+         An architecture should select this option if it supports:
+         - compiling with Clang,
+         - compiling inline assembly with Clang's integrated assembler,
+         - and linking with LLD.
+
+config ARCH_SUPPORTS_LTO_CLANG_THIN
+       bool
+       help
+         An architecture should select this option if it can support Clang's
+         ThinLTO mode.
+
+config HAS_LTO_CLANG
+       def_bool y
+       # Clang >= 11: https://github.com/ClangBuiltLinux/linux/issues/510
+       depends on CC_IS_CLANG && CLANG_VERSION >= 110000 && LD_IS_LLD
+       depends on $(success,test $(LLVM) -eq 1)
+       depends on $(success,test $(LLVM_IAS) -eq 1)
+       depends on $(success,$(NM) --help | head -n 1 | grep -qi llvm)
+       depends on $(success,$(AR) --help | head -n 1 | grep -qi llvm)
+       depends on ARCH_SUPPORTS_LTO_CLANG
+       depends on !FTRACE_MCOUNT_USE_RECORDMCOUNT
+       depends on !KASAN
+       depends on !GCOV_KERNEL
+       help
+         The compiler and Kconfig options support building with Clang's
+         LTO.
+
+choice
+       prompt "Link Time Optimization (LTO)"
+       default LTO_NONE
+       help
+         This option enables Link Time Optimization (LTO), which allows the
+         compiler to optimize binaries globally.
+
+         If unsure, select LTO_NONE. Note that LTO is very resource-intensive
+         so it's disabled by default.
+
+config LTO_NONE
+       bool "None"
+       help
+         Build the kernel normally, without Link Time Optimization (LTO).
+
+config LTO_CLANG_FULL
+       bool "Clang Full LTO (EXPERIMENTAL)"
+       depends on HAS_LTO_CLANG
+       depends on !COMPILE_TEST
+       select LTO_CLANG
+       help
+          This option enables Clang's full Link Time Optimization (LTO), which
+          allows the compiler to optimize the kernel globally. If you enable
+          this option, the compiler generates LLVM bitcode instead of ELF
+          object files, and the actual compilation from bitcode happens at
+          the LTO link step, which may take several minutes depending on the
+          kernel configuration. More information can be found from LLVM's
+          documentation:
+
+           https://llvm.org/docs/LinkTimeOptimization.html
+
+         During link time, this option can use a large amount of RAM, and
+         may take much longer than the ThinLTO option.
+
+config LTO_CLANG_THIN
+       bool "Clang ThinLTO (EXPERIMENTAL)"
+       depends on HAS_LTO_CLANG && ARCH_SUPPORTS_LTO_CLANG_THIN
+       select LTO_CLANG
+       help
+         This option enables Clang's ThinLTO, which allows for parallel
+         optimization and faster incremental compiles compared to the
+         CONFIG_LTO_CLANG_FULL option. More information can be found
+         from Clang's documentation:
+
+           https://clang.llvm.org/docs/ThinLTO.html
+
+         If unsure, say Y.
+endchoice
+
 config HAVE_ARCH_WITHIN_STACK_FRAMES
        bool
        help
 config HAVE_ARCH_WITHIN_STACK_FRAMES
        bool
        help
@@ -759,6 +821,12 @@ config HAVE_IRQ_EXIT_ON_IRQ_STACK
          This spares a stack switch and improves cache usage on softirq
          processing.
 
          This spares a stack switch and improves cache usage on softirq
          processing.
 
+config HAVE_SOFTIRQ_ON_OWN_STACK
+       bool
+       help
+         Architecture provides a function to run __do_softirq() on a
+         seperate stack.
+
 config PGTABLE_LEVELS
        int
        default 2
 config PGTABLE_LEVELS
        int
        default 2
@@ -1090,6 +1158,15 @@ config HAVE_STATIC_CALL_INLINE
        bool
        depends on HAVE_STATIC_CALL
 
        bool
        depends on HAVE_STATIC_CALL
 
+config HAVE_PREEMPT_DYNAMIC
+       bool
+       depends on HAVE_STATIC_CALL
+       depends on GENERIC_ENTRY
+       help
+          Select this if the architecture support boot time preempt setting
+          on top of static calls. It is strongly advised to support inline
+          static call to avoid any overhead.
+
 config ARCH_WANT_LD_ORPHAN_WARN
        bool
        help
 config ARCH_WANT_LD_ORPHAN_WARN
        bool
        help
@@ -1111,6 +1188,9 @@ config ARCH_SPLIT_ARG64
           If a 32-bit architecture requires 64-bit arguments to be split into
           pairs of 32-bit arguments, select this option.
 
           If a 32-bit architecture requires 64-bit arguments to be split into
           pairs of 32-bit arguments, select this option.
 
+config ARCH_HAS_ELFCORE_COMPAT
+       bool
+
 source "kernel/gcov/Kconfig"
 
 source "scripts/gcc-plugins/Kconfig"
 source "kernel/gcov/Kconfig"
 
 source "scripts/gcc-plugins/Kconfig"