android_kernel_xiaomi_sm8350/arch/x86/include/asm
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
..
bigsmp
es7000 Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-01-10 06:13:09 -08:00
mach-default x86: fix apic.c build error on latest git 2009-01-12 19:24:23 +01:00
mach-generic x86: rename mp_config_table to mpc_table 2009-01-04 13:22:58 +01:00
mach-rdc321x
mach-voyager
numaq Merge branches 'x86/cleanups', 'x86/mpparse', 'x86/numa' and 'x86/uv' into x86/urgent 2009-01-06 17:39:52 +01:00
summit Merge branch 'x86-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2009-01-10 06:13:09 -08:00
uv x86: uv_bau.h: fix dubious bitfield 2008-12-30 13:31:37 -08:00
visws
xen
a.out-core.h
a.out.h
acpi.h
agp.h
alternative-asm.h
alternative.h
amd_iommu_types.h AMD IOMMU: add init code for statistic collection 2009-01-03 14:11:58 +01:00
amd_iommu.h
apic.h x86: apic.c: xapic_icr_read and x2apic_icr_read should be static 2008-12-30 13:31:28 -08:00
apicdef.h
arch_hooks.h
asm.h
atomic_32.h atomic_t: unify all arch definitions 2009-01-06 15:59:10 -08:00
atomic_64.h atomic_t: unify all arch definitions 2009-01-06 15:59:10 -08:00
atomic.h
auxvec.h
bios_ebda.h
bitops.h x86, generic: mark complex bitops.h inlines as __always_inline 2009-01-13 18:56:30 +01:00
boot.h
bootparam.h
bug.h
bugs.h
byteorder.h x86: introduce asm/swab.h 2009-01-06 18:10:27 -08:00
cache.h
cacheflush.h
calgary.h
calling.h
checksum_32.h
checksum_64.h
checksum.h
cmpxchg_32.h
cmpxchg_64.h
cmpxchg.h
compat.h
cpu.h
cpufeature.h
cputime.h
current.h
debugreg.h
delay.h
desc_defs.h
desc.h x86: fix lguest used_vectors breakage, -v2 2008-12-23 22:37:28 +01:00
device.h
div64.h
dma-mapping.h Merge branch 'core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-12-30 16:10:19 -08:00
dma.h
dmi.h
ds.h
dwarf2.h
e820.h
edac.h
efi.h x86: efi.c declare add_efi_memmap before they get used 2008-12-29 18:17:32 +01:00
elf.h [S390] arch_setup_additional_pages arguments 2008-12-25 13:38:54 +01:00
emergency-restart.h
errno.h
fb.h
fcntl.h
fixmap_32.h
fixmap_64.h
fixmap.h
floppy.h
frame.h
ftrace.h
futex.h
gart.h
genapic_32.h x86: rename mpc_config_processor to mpc_cpu 2009-01-04 13:23:00 +01:00
genapic_64.h
genapic.h
geode.h
gpio.h
hardirq_32.h
hardirq_64.h
hardirq.h
highmem.h
hpet.h
hugetlb.h
hw_irq.h
hypertransport.h
hypervisor.h
i387.h
i8253.h
i8259.h
ia32_unistd.h
ia32.h
idle.h
intel_arch_perfmon.h
io_32.h
io_64.h
io_apic.h Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-12-30 16:20:19 -08:00
io.h
ioctl.h
ioctls.h
iomap.h
iommu.h Merge branch 'core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-12-30 16:10:19 -08:00
ipcbuf.h
ipi.h
irq_regs_32.h
irq_regs_64.h
irq_regs.h
irq_remapping.h
irq_vectors.h
irq.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask into merge-rr-cpumask 2009-01-03 18:53:31 +01:00
irqflags.h
ist.h
k8.h
Kbuild x86: introduce asm/swab.h 2009-01-06 18:10:27 -08:00
kdebug.h
kexec.h
kgdb.h
kmap_types.h
kprobes.h
kvm_host.h KVM: change KVM to use IOMMU API 2009-01-03 14:11:07 +01:00
kvm_para.h
kvm_x86_emulate.h KVM: x86 emulator: add Src2 decode set 2008-12-31 16:55:42 +02:00
kvm.h
ldt.h
lguest_hcall.h
lguest.h x86: cleanup some remaining usages of NR_CPUS where s/b nr_cpu_ids 2009-01-03 19:00:55 +01:00
linkage.h
local.h
math_emu.h
mc146818rtc.h
mca_dma.h
mca.h
mce.h
microcode.h
mman.h
mmconfig.h
mmu_context_32.h
mmu_context_64.h
mmu_context.h
mmu.h
mmx.h
mmzone_32.h
mmzone_64.h
mmzone.h
module.h
mpspec_def.h x86: rename all fields of mpc_table mpc_X to X 2009-01-05 14:08:34 +01:00
mpspec.h x86: apic.c declare pic_mode before they get used 2008-12-29 18:17:30 +01:00
msgbuf.h
msidef.h
msr-index.h
msr.h Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-12-28 12:21:10 -08:00
mtrr.h x86, mtrr: fix types used in userspace exported header 2009-01-08 16:13:59 +01:00
mutex_32.h
mutex_64.h
mutex.h
nmi.h
nops.h
numa_32.h
numa_64.h
numa.h
numaq.h
olpc.h
page_32.h
page_64.h
page.h
param.h
paravirt.h
parport.h
pat.h
pci_32.h
pci_64.h
pci_x86.h x86, pci: move arch/x86/pci/pci.h to arch/x86/include/asm/pci_x86.h 2008-12-29 18:17:36 +01:00
pci-direct.h
pci.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 2008-12-31 23:05:57 +10:30
pda.h
percpu.h
pgalloc.h
pgtable_32.h
pgtable_64.h
pgtable-2level-defs.h
pgtable-2level.h
pgtable-3level-defs.h
pgtable-3level.h
pgtable.h
poll.h
posix_types_32.h
posix_types_64.h
posix_types.h
prctl.h
processor-cyrix.h
processor-flags.h
processor.h Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-12-28 12:21:10 -08:00
proto.h
ptrace-abi.h
ptrace.h
pvclock-abi.h
pvclock.h
reboot_fixups.h
reboot.h
required-features.h
resource.h
resume-trace.h
rio.h
rtc.h
rwlock.h
rwsem.h
scatterlist.h
seccomp_32.h
seccomp_64.h
seccomp.h
sections.h
segment.h
sembuf.h
serial.h
setup.h x86: rename mpc_config_oemtable to mpc_oemtable 2009-01-04 13:23:02 +01:00
shmbuf.h
shmparam.h
sigcontext32.h
sigcontext.h
sigframe.h
siginfo.h
signal.h
smp.h x86: cleanup remaining cpumask_t ops in smpboot code 2009-01-04 15:39:26 +01:00
socket.h
sockios.h
sparsemem.h
spinlock_types.h
spinlock.h
srat.h
stacktrace.h
stat.h
statfs.h
string_32.h
string_64.h
string.h
suspend_32.h
suspend_64.h
suspend.h
svm.h KVM: SVM: move svm.h to include/asm 2008-12-31 16:52:28 +02:00
swab.h x86: introduce asm/swab.h 2009-01-06 18:10:27 -08:00
swiotlb.h swiotlb: replace architecture-specific swiotlb.h with linux/swiotlb.h 2008-12-28 10:04:00 +01:00
sync_bitops.h
sys_ia32.h x86: introducing asm/sys_ia32.h 2008-12-29 13:18:40 +01:00
syscall.h
syscalls.h
system_64.h
system.h
tce.h
termbits.h
termios.h
therm_throt.h
thread_info.h Merge branch 'tracing-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-12-28 12:21:10 -08:00
time.h
timer.h
timex.h
tlb.h
tlbflush.h
topology.h Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/rusty/linux-2.6-cpumask into merge-rr-cpumask 2009-01-03 18:53:31 +01:00
trampoline.h
traps.h
tsc.h
types.h
uaccess_32.h
uaccess_64.h
uaccess.h Merge branch 'core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip 2008-12-30 16:10:19 -08:00
ucontext.h
unaligned.h
unistd_32.h
unistd_64.h
unistd.h
user32.h
user_32.h
user_64.h
user.h
vdso.h
vga.h
vgtod.h
vic.h
virtext.h x86: cpu_emergency_svm_disable() function 2008-12-31 16:52:30 +02:00
vm86.h
vmi_time.h
vmi.h
vmware.h
vmx.h KVM: VMX: move ASM_VMX_* definitions from asm/kvm_host.h to asm/vmx.h 2008-12-31 16:52:28 +02:00
voyager.h
vsyscall.h
xcr.h
xor_32.h
xor_64.h
xor.h
xsave.h