linux/include/asm-generic
Andi Kleen c8399943bd x86, generic: mark complex bitops.h inlines as __always_inline
Impact: reduce kernel image size

Hugh Dickins noticed that older gcc versions when the kernel
is built for code size didn't inline some of the bitops.

Mark all complex x86 bitops that have more than a single
asm statement or two as always inline to avoid this problem.

Probably should be done for other architectures too.

Ingo then found a better fix that only requires
a single line change, but it unfortunately only
works on gcc 4.3.

On older gccs the original patch still makes a ~0.3% defconfig
difference with CONFIG_OPTIMIZE_INLINING=y.

With gcc 4.1 and a defconfig like build:

    6116998 1138540  883788 8139326  7c323e vmlinux-oi-with-patch
    6137043 1138540  883788 8159371  7c808b vmlinux-optimize-inlining

~20k / 0.3% difference.

Signed-off-by: Andi Kleen <ak@linux.intel.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2009-01-13 18:56:30 +01:00
..
bitops x86, generic: mark complex bitops.h inlines as __always_inline 2009-01-13 18:56:30 +01:00
4level-fixup.h add mm argument to pte/pmd/pud/pgd_free 2008-02-05 09:44:18 -08:00
atomic.h atomic: fix a typo in atomic_long_xchg() 2008-12-10 08:01:53 -08:00
audit_change_attr.h
audit_dir_write.h
audit_read.h
audit_signal.h
audit_write.h [PATCH] asm/generic: fix bug - kernel fails to build when enable some common audit code on Blackfin 2008-12-09 02:27:39 -05:00
bitops.h remove __KERNEL__ tests of unexported headers under asm-generic/ 2008-04-30 08:29:54 -07:00
bug.h documentation: when to BUG(), and when to not BUG() 2009-01-06 15:59:13 -08:00
cmpxchg-local.h Add cmpxchg_local to asm-generic for per cpu atomic operations 2008-02-07 08:42:30 -08:00
cmpxchg.h Add cmpxchg_local to asm-generic for per cpu atomic operations 2008-02-07 08:42:30 -08:00
cputime.h taskstats scaled time cleanup 2008-02-06 10:41:00 -08:00
device.h
div64.h rename div64_64 to div64_u64 2008-05-01 08:03:58 -07:00
dma-coherent.h generic: per-device coherent dma allocator 2008-06-30 12:51:05 +02:00
dma-mapping-broken.h dma-mapping: add the device argument to dma_mapping_error() 2008-07-26 12:00:03 -07:00
dma-mapping.h dma-mapping: add the device argument to dma_mapping_error() 2008-07-26 12:00:03 -07:00
emergency-restart.h
errno-base.h
errno.h
fcntl.h Introduce O_CLOEXEC 2007-07-16 09:05:45 -07:00
futex.h remove __KERNEL__ tests of unexported headers under asm-generic/ 2008-04-30 08:29:54 -07:00
gpio.h gpiolib: request/free hooks 2008-10-16 11:21:40 -07:00
ide_iops.h
int-l64.h types: add C99-style constructors to <asm-generic/int-*.h> 2008-05-02 16:18:42 -07:00
int-ll64.h asm-generic/int-ll64.h: always provide __{s,u}64 2008-07-25 10:53:27 -07:00
ioctl.h Make ioctl.h compatible with userland 2008-08-12 16:07:31 -07:00
iomap.h generic: add ioremap_wc() interface wrapper 2008-04-24 23:40:47 +02:00
irq_regs.h
Kbuild types: create <asm-generic/int-*.h> 2008-05-02 16:18:19 -07:00
Kbuild.asm Fix conditional export of kvh.h and a.out.h to userspace. 2008-09-05 15:44:31 +01:00
kdebug.h asm-generic: define DIE_OOPS in asm-generic 2008-10-27 11:39:03 +01:00
libata-portmap.h libata-portmap: Remove unused definitions 2007-10-12 14:55:37 -04:00
local.h remove linux/hardirq.h from asm-generic/local.h 2009-01-06 15:59:13 -08:00
memory_model.h mm: remove CONFIG_OUT_OF_LINE_PFN_TO_PAGE 2009-01-06 15:59:10 -08:00
mm_hooks.h
mman.h
mutex-dec.h mutex: speed up generic mutex implementations 2008-10-23 09:18:20 -07:00
mutex-null.h
mutex-xchg.h mutex: speed up generic mutex implementations 2008-10-23 09:18:20 -07:00
page.h remove __KERNEL__ tests of unexported headers under asm-generic/ 2008-04-30 08:29:54 -07:00
pci-dma-compat.h dma-mapping: add the device argument to dma_mapping_error() 2008-07-26 12:00:03 -07:00
pci.h
percpu.h percpu: fix DEBUG_PREEMPT per_cpu checking 2008-02-23 12:09:28 -08:00
pgtable-nopmd.h include/asm-generic/pgtable-nopmd.h: macros are noxious, reason #435 2008-07-28 16:30:21 -07:00
pgtable-nopud.h add mm argument to pte/pmd/pud/pgd_free 2008-02-05 09:44:18 -08:00
pgtable.h x86: PAT: move track untrack pfnmap stubs to asm-generic 2008-12-19 15:40:30 -08:00
poll.h
resource.h sched: SCHED_FIFO/SCHED_RR watchdog timer 2008-01-25 21:08:27 +01:00
rtc.h rtc: use bcd2bin/bin2bcd 2008-10-20 08:52:41 -07:00
sections.h lib: Correct printk %pF to work on all architectures 2008-09-09 11:51:15 -07:00
siginfo.h signals: demultiplexing SIGTRAP signal 2008-09-23 13:26:52 +02:00
signal.h
statfs.h Make <asm-generic/statfs.h> suitable for 64-bit platforms. 2008-09-04 09:46:08 +01:00
syscall.h tracehook: comment pasto fixes 2008-09-05 14:39:38 -07:00
termios.h tty: let architectures override the user/kernel macros. 2008-02-08 09:22:24 -08:00
tlb.h asm-generic/tlb.h: remove <linux/quicklist.h> 2008-02-04 16:48:00 +01:00
topology.h cpumask: Introduce cpumask_of_{node,pcibus} to replace {node,pcibus}_to_cpumask 2008-12-13 21:20:27 +10:30
uaccess.h
vmlinux.lds.h tracing/function-graph-tracer: add a new .irqentry.text section 2008-12-12 11:14:07 +01:00
xor.h