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
[PATCH] fix missing ifdefs in syscall classes hookup for generic targets
2006-09-22 17:48:56 -07:00
audit_dir_write.h
[PATCH] fix missing ifdefs in syscall classes hookup for generic targets
2006-09-22 17:48:56 -07:00
audit_read.h
[PATCH] audit: more syscall classes added
2006-09-11 13:32:27 -04:00
audit_signal.h
[PATCH] add SIGNAL syscall class (v3)
2007-05-11 05:38:25 -04:00
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
Driver core: add dev_archdata to struct device
2006-12-01 14:52:01 -08:00
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
IRQ: Maintain regs pointer globally rather than passing to IRQ handlers
2006-10-05 15:10:12 +01:00
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
[PATCH] x86: PARAVIRT: add hooks to intercept mm creation and destruction
2007-05-02 19:27:14 +02:00
mman.h
[PATCH] Remove final references to deprecated "MAP_ANON" page protection flag
2007-02-11 10:51:17 -08:00
mutex-dec.h
mutex: speed up generic mutex implementations
2008-10-23 09:18:20 -07:00
mutex-null.h
fix file specification in comments
2006-10-03 23:01:26 +02:00
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
Consolidate asm/poll.h
2007-05-11 08:29:34 -07:00
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
Add standard include guard to asm-generic/signal and use compiler.h
2006-04-27 06:57:23 +01:00
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