Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86-optimized-inlining
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86-optimized-inlining: generic: make optimized inlining arch-opt-in x86: add optimized inlining
This commit is contained in:
@@ -142,6 +142,9 @@ config AUDIT_ARCH
|
|||||||
config ARCH_SUPPORTS_AOUT
|
config ARCH_SUPPORTS_AOUT
|
||||||
def_bool y
|
def_bool y
|
||||||
|
|
||||||
|
config ARCH_SUPPORTS_OPTIMIZED_INLINING
|
||||||
|
def_bool y
|
||||||
|
|
||||||
# Use the generic interrupt handling code in kernel/irq/:
|
# Use the generic interrupt handling code in kernel/irq/:
|
||||||
config GENERIC_HARDIRQS
|
config GENERIC_HARDIRQS
|
||||||
bool
|
bool
|
||||||
|
|||||||
@@ -257,3 +257,16 @@ config CPA_DEBUG
|
|||||||
Do change_page_attr() self-tests every 30 seconds.
|
Do change_page_attr() self-tests every 30 seconds.
|
||||||
|
|
||||||
endmenu
|
endmenu
|
||||||
|
|
||||||
|
config OPTIMIZE_INLINING
|
||||||
|
bool "Allow gcc to uninline functions marked 'inline'"
|
||||||
|
default y
|
||||||
|
help
|
||||||
|
This option determines if the kernel forces gcc to inline the functions
|
||||||
|
developers have marked 'inline'. Doing so takes away freedom from gcc to
|
||||||
|
do what it thinks is best, which is desirable for the gcc 3.x series of
|
||||||
|
compilers. The gcc 4.x series have a rewritten inlining algorithm and
|
||||||
|
disabling this option will generate a smaller kernel there. Hopefully
|
||||||
|
this algorithm is so good that allowing gcc4 to make the decision can
|
||||||
|
become the default in the future, until then this option is there to
|
||||||
|
test gcc for this.
|
||||||
|
|||||||
@@ -1421,6 +1421,7 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||||||
# CONFIG_DEBUG_VM is not set
|
# CONFIG_DEBUG_VM is not set
|
||||||
# CONFIG_DEBUG_LIST is not set
|
# CONFIG_DEBUG_LIST is not set
|
||||||
# CONFIG_FRAME_POINTER is not set
|
# CONFIG_FRAME_POINTER is not set
|
||||||
|
CONFIG_OPTIMIZE_INLINING=y
|
||||||
# CONFIG_RCU_TORTURE_TEST is not set
|
# CONFIG_RCU_TORTURE_TEST is not set
|
||||||
# CONFIG_LKDTM is not set
|
# CONFIG_LKDTM is not set
|
||||||
# CONFIG_FAULT_INJECTION is not set
|
# CONFIG_FAULT_INJECTION is not set
|
||||||
|
|||||||
@@ -1346,6 +1346,7 @@ CONFIG_DEBUG_BUGVERBOSE=y
|
|||||||
# CONFIG_DEBUG_VM is not set
|
# CONFIG_DEBUG_VM is not set
|
||||||
# CONFIG_DEBUG_LIST is not set
|
# CONFIG_DEBUG_LIST is not set
|
||||||
# CONFIG_FRAME_POINTER is not set
|
# CONFIG_FRAME_POINTER is not set
|
||||||
|
CONFIG_OPTIMIZE_INLINING=y
|
||||||
# CONFIG_RCU_TORTURE_TEST is not set
|
# CONFIG_RCU_TORTURE_TEST is not set
|
||||||
# CONFIG_LKDTM is not set
|
# CONFIG_LKDTM is not set
|
||||||
# CONFIG_FAULT_INJECTION is not set
|
# CONFIG_FAULT_INJECTION is not set
|
||||||
|
|||||||
@@ -28,9 +28,16 @@
|
|||||||
#define __must_be_array(a) \
|
#define __must_be_array(a) \
|
||||||
BUILD_BUG_ON_ZERO(__builtin_types_compatible_p(typeof(a), typeof(&a[0])))
|
BUILD_BUG_ON_ZERO(__builtin_types_compatible_p(typeof(a), typeof(&a[0])))
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Force always-inline if the user requests it so via the .config:
|
||||||
|
*/
|
||||||
|
#if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING) || \
|
||||||
|
!defined(CONFIG_OPTIMIZE_INLINING) && (__GNUC__ >= 4)
|
||||||
# define inline inline __attribute__((always_inline))
|
# define inline inline __attribute__((always_inline))
|
||||||
# define __inline__ __inline__ __attribute__((always_inline))
|
# define __inline__ __inline__ __attribute__((always_inline))
|
||||||
# define __inline __inline __attribute__((always_inline))
|
# define __inline __inline __attribute__((always_inline))
|
||||||
|
#endif
|
||||||
|
|
||||||
#define __deprecated __attribute__((deprecated))
|
#define __deprecated __attribute__((deprecated))
|
||||||
#define __packed __attribute__((packed))
|
#define __packed __attribute__((packed))
|
||||||
#define __weak __attribute__((weak))
|
#define __weak __attribute__((weak))
|
||||||
|
|||||||
Reference in New Issue
Block a user