linux/arch/x86
Alexander van Heukelum 6fd92b63d0 x86: change x86 to use generic find_next_bit
The versions with inline assembly are in fact slower on the machines I
tested them on (in userspace) (Athlon XP 2800+, p4-like Xeon 2.8GHz, AMD
Opteron 270). The i386-version needed a fix similar to 06024f21 to avoid
crashing the benchmark.

Benchmark using: gcc -fomit-frame-pointer -Os. For each bitmap size
1...512, for each possible bitmap with one bit set, for each possible
offset: find the position of the first bit starting at offset. If you
follow ;). Times include setup of the bitmap and checking of the
results.

		Athlon		Xeon		Opteron 32/64bit
x86-specific:	0m3.692s	0m2.820s	0m3.196s / 0m2.480s
generic:	0m2.622s	0m1.662s	0m2.100s / 0m1.572s

If the bitmap size is not a multiple of BITS_PER_LONG, and no set
(cleared) bit is found, find_next_bit (find_next_zero_bit) returns a
value outside of the range [0, size]. The generic version always returns
exactly size. The generic version also uses unsigned long everywhere,
while the x86 versions use a mishmash of int, unsigned (int), long and
unsigned long.

Using the generic version does give a slightly bigger kernel, though.

defconfig:	   text    data     bss     dec     hex filename
x86-specific:	4738555  481232  626688 5846475  5935cb vmlinux (32 bit)
generic:	4738621  481232  626688 5846541  59360d vmlinux (32 bit)
x86-specific:	5392395  846568  724424 6963387  6a40bb vmlinux (64 bit)
generic:	5392458  846568  724424 6963450  6a40fa vmlinux (64 bit)

Signed-off-by: Alexander van Heukelum <heukelum@fastmail.fm>
Signed-off-by: Ingo Molnar <mingo@elte.hu>
2008-04-26 19:21:16 +02:00
..
boot
configs x86: add optimized inlining 2008-04-26 17:44:55 +02:00
crypto
ia32 x86_64 ia32 ptrace: convert to compat_arch_ptrace 2008-04-26 17:35:47 +02:00
kernel x86: section mismatch fixes, #3 2008-04-26 17:35:48 +02:00
kvm
lguest
lib x86: change x86 to use generic find_next_bit 2008-04-26 19:21:16 +02:00
mach-default
mach-es7000
mach-generic
mach-rdc321x
mach-visws
mach-voyager x86: use cpumask function for present, possible, and online cpus 2008-04-26 17:35:47 +02:00
math-emu
mm Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86-fixes 2008-04-26 09:50:58 -07:00
oprofile
pci
power
vdso
video
xen x86: use cpumask function for present, possible, and online cpus 2008-04-26 17:35:47 +02:00
Kconfig x86: change x86 to use generic find_next_bit 2008-04-26 19:21:16 +02:00
Kconfig.cpu
Kconfig.debug x86: add optimized inlining 2008-04-26 17:44:55 +02:00
Makefile
Makefile_32.cpu